RU.GOLDED---------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 18 из 100
 От   : Alexey Khromov                      2:5030/723.1      03 апр 25 21:19:46
 К    : Stas Mishchenkov                                      03 апр 25 21:27:02
 Тема : GoldED+ snapshot 2025.04.01
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 2:5030/723.1 67eed1be
@REPLY: 2:460/5858 67ee2520
@CHRS: CP866 2
@TZUTC: 0300
Здраствуйте, Stas!

03 апр 25 09:03, Stas Mishchenkov -> Max Vasilyev:

 SM> ----------  Thu 03 Apr 25, GoldED+/W64-MSVC 1.1.5-b20250401 (Apr  2
 SM> 2025 23:07:25) ! 09:02:31  Memory error at [genode.cpp,196]. !
 SM> 09:02:31  gsprintf(buffer,80,%s%s%s%s,...): buffer overflow, result in
 SM> next line: ! 09:02:31  300 Bps,
 SM> 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);
             }
         }
+        else if (ret >= sizeOfBuffer)
+        {
 + LOG.printf("! %s", gerrinfo("Line truncated", __file, __line));
 + LOG.printf("! gsprintf(buffer,%i,%s,...): line truncated to buffer
size (need %i bytes).", sizeOfBuffer, format, ret);
+                       strncpy(buffer,b1,endOfBuffer);
+                       buffer[endOfBuffer] = `\0`;
+               }
         else if (ret < 0)
         {
             LOG.errtest(__file, __line);



Alexey Khromov
--- GoldED+/LNX 1.1.5-b20240604
 * Origin:  - Вы в опасности! Вы окружены роботами! -  (2:5030/723.1)
SEEN-BY: 46/49 50/109 104/117 221/6 240/1120 267/67
301/1 341/66 451/31
SEEN-BY: 452/28 166 455/19 460/16 58 256 1124
5858 461/58 463/68 877 1331
SEEN-BY: 466/50 469/15 4500/1 4600/140 4651/777
5000/111 5001/100 5015/42 46
SEEN-BY: 5019/40 400 5020/101 113 545 715 830 846
848 1042 2992 4441 5480
SEEN-BY: 5020/12000 5022/128 5029/32 5030/49 115
723 1081 1474 5049/1 3
SEEN-BY: 5050/151 5053/51 58 5054/30 89 5058/104
5060/900 5061/133 5068/45
SEEN-BY: 5083/1 444 6078/80 6090/1
@PATH: 5030/723 460/58 463/68 5020/1042 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх