Здраствуйте, Stas!
03 апр 25 09:03, Stas Mishchenkov -> Max Vasilyev:
---------- Thu 03 Apr 25, GoldED+/W64-MSVC 1.1.5-b20250401 (Apr 2
2025 23:07:25) ! 09:02:31 Memory error at [genode.cpp,196]. !
09:02:31 gsprintf(buffer,80,%s%s%s%s,...): buffer overflow, result in next line: ! 09:02:31 300 Bps, IBN,INA:f0.n46.happy.kiev.ua,IMI:fnet@gul.kiev.ua,MO,XA,CM,PING,U,DO4:
Буду рад, если кто с MSVC проверит локально:
diff --git a/goldlib/gall/gstrutil.cpp b/goldlib/gall/gstrutil.cpp
index 619cd2e..2d06839 100644
--- a/goldlib/gall/gstrutil.cpp
+++ b/goldlib/gall/gstrutil.cpp
@@ -834,8 +834,8 @@ int gsprintf(TCHAR* buffer, size_t sizeOfBuffer, const TCHAR* __file, int __line
char * b1 = new char[sizeOfBuffer+1];
const size_t endOfBuffer = sizeOfBuffer-1;
- ret = _vsnprintf(b1, sizeOfBuffer+1, format, argptr);
- if (ret == -1 || ret >= sizeOfBuffer) // Microsoft implementation returns -1 when buffer overflow.
+ ret = _vsnprintf(b1, sizeOfBuffer, format, argptr); // count must be < b1 size to return truncated string
+ if (ret == -1 ) // Microsoft implementation returns -1 when buffer overflow.
{
strncpy(buffer,b1,endOfBuffer);
buffer[endOfBuffer] = '\0'; // Microsoft implementation don't write final '\0' when buffer full.
@@ -848,6 +848,13 @@ int gsprintf(TCHAR* buffer, size_t sizeOfBuffer, const TCHAR* __file, int __line
else if (sizeOfBuffer>7) memcpy(buffer," ERROR ", 7);
}
}
+