From 72948978fa5d9041053fd77731d10e2522223c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20B=C3=A1lint=20Misius?= Date: Thu, 24 Jun 2021 07:09:58 +0200 Subject: [PATCH] Fix over-eager MSVCRT bounds checking crash in LuaTCPSocket MSVCRT doesn't like .operator[](.size()), it's safer to just replace all &.operator[x] with &.operator[0]+x. --- src/lua/LuaTCPSocket.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lua/LuaTCPSocket.cpp b/src/lua/LuaTCPSocket.cpp index dbfe4c358..a42339de1 100644 --- a/src/lua/LuaTCPSocket.cpp +++ b/src/lua/LuaTCPSocket.cpp @@ -205,7 +205,7 @@ namespace LuaTCPSocket CURLcode res = CURLE_OK; if (!tcps->writeClosed) { - res = curl_easy_send(tcps->easy, &data[writtenTotal], len - writtenTotal, &writtenNow); + res = curl_easy_send(tcps->easy, &data[0] + writtenTotal, len - writtenTotal, &writtenNow); } writtenTotal += writtenNow; if (writtenTotal >= len) @@ -299,7 +299,7 @@ namespace LuaTCPSocket } else { - res = curl_easy_recv(tcps->easy, &tcps->recvBuf[readTotal], len - readTotal, &readNow); + res = curl_easy_recv(tcps->easy, &tcps->recvBuf[0] + readTotal, len - readTotal, &readNow); } readTotal += readNow; returning = readTotal; @@ -410,8 +410,8 @@ namespace LuaTCPSocket // of view of an "*l" pattern). Handling this edge case in a special, // sub-quadratic way isn't worth the effort. std::copy( - &tcps->recvBuf[readTotal - tcps->stashedLen], - &tcps->recvBuf[readTotal], + &tcps->recvBuf[0] + readTotal - tcps->stashedLen, + &tcps->recvBuf[0] + readTotal, &tcps->recvBuf[0] ); return retn;