forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.GOLDED

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 24.10.2023, 19:31
Nil A
Guest
 
Сообщений: n/a
По умолчанию ASAN билд валится на сохранении сообщений

Nil A написал(а) к All в Oct 23 18:16:40 по местному времени:

Нello, All!

Я пользуюсь санитайзерной версией голдеда уже какое-то время. Сейчас по w невозможно сохранить даже на терминале в 80 символов и простое сообщение без выделений, без URL.

==31203==ERROR: AddressSanitizer: strcpy-param-overlap: memory ranges [0x6230000014d9,0x6230000014da) and [0x6230000014d9, 0x6230000014da) overlap
#0 0x7efc6a234dc9 in _interceptor_strcpy ../../../../src/libsanitizer/asan/asaninterceptors.cc:429
#1 0x81a4bb in TemplateToText(int, GMsg, GMsg*, char const, int) /home/fido/src/golded-plus/golded3/getpls.cpp:355
#2 0x5a9b35 in SaveLines(int, char const, GMsg, int, bool) /home/fido/src/golded-plus/golded3/gedoit.cpp:89
#3 0x5adc3b in WriteMsgs /home/fido/src/golded-plus/golded3/gedoit.cpp:333
#4 0x5ae9c4 in WriteMsg(GMsg*) /home/fido/src/golded-plus/golded3/gedoit.cpp:409
#5 0x7beda6 in Reader() /home/fido/src/golded-plus/golded3/geread.cpp:963
#6 0x6c7755 in main /home/fido/src/golded-plus/golded3/gemain.cpp:54
#7 0x7efc688e2f44 in _libc_start_main (/lib/x8664-linux-gnu/libc.so.6+0x21f44)
#8 0x408fb8 (/home/fido/src/golded-plus/build_asan/golded3/golded+0x408fb8)

0x6230000014d9 is located 5081 bytes inside of 6536-byte region [0x623000000100,0x623000001a88)
allocated by thread T0 here:
#0 0x7efc6a2a622f in operator new(unsigned long) ../../../../src/libsanitizer/asan/asannewdelete.cc:104
#1 0x7b337e in Reader() /home/fido/src/golded-plus/golded3/geread.cpp:155
#2 0x6c7755 in main /home/fido/src/golded-plus/golded3/gemain.cpp:54
#3 0x7efc688e2f44 in _libc_start_main (/lib/x8664-linux-gnu/libc.so.6+0x21f44)

0x6230000014d9 is located 5081 bytes inside of 6536-byte region [0x623000000100,0x623000001a88)
allocated by thread T0 here:
#0 0x7efc6a2a622f in operator new(unsigned long) ../../../../src/libsanitizer/asan/asannewdelete.cc:104
#1 0x7b337e in Reader() /home/fido/src/golded-plus/golded3/geread.cpp:155
#2 0x6c7755 in main /home/fido/src/golded-plus/golded3/gemain.cpp:54
#3 0x7efc688e2f44 in _libc_start_main (/lib/x8664-linux-gnu/libc.so.6+0x21f44)

SUMMARY: AddressSanitizer: strcpy-param-overlap ../../../../src/libsanitizer/asan/asaninterceptors.cc:429 in __interceptorstrcpy
==31203==ABORTING

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #2  
Старый 24.10.2023, 21:12
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию Re: ASAN билд валится на сохранении сообщений

Vitaliy Aksyonov написал(а) к Nil A в Oct 23 09:56:50 по местному времени:

Привет, Nil!

24 Oct 23 18:16, ты писал(а) All:

NA> Я пользуюсь санитайзерной версией голдеда уже какое-то время. Сейчас
NA> по w невозможно сохранить даже на терминале в 80 символов и простое
NA> сообщение без выделений, без URL.

Я это тоже поймал. Конкретно эта ошибка некритична, но переделать все же надо. Когда дойдут руки. Я тут один, а вас вон сколько. :)

NA> ==31203==ERROR: AddressSanitizer: strcpy-param-overlap: memory ranges

Best regards,
Vitaliy Aksyonov.

... Восьмое чyдо света занимает шестyю часть сyши...
--- GoldED+/LNX 1.1.5-b20231021
Ответить с цитированием
  #3  
Старый 25.10.2023, 06:20
Nil A
Guest
 
Сообщений: n/a
По умолчанию ASAN билд валится на сохранении сообщений

Nil A написал(а) к Vitaliy Aksyonov в Oct 23 05:06:50 по местному времени:

Нello, Vitaliy!

Tuesday October 24 2023 09:56, from Vitaliy Aksyonov -> Nil A:

NA>> Сейчас по w невозможно сохранить даже на терминале в 80 символов
NA>> и простое сообщение без выделений, без URL.

VA> Я это тоже поймал. Конкретно эта ошибка некритична, но переделать все
VA> же надо. Когда дойдут руки. Я тут один, а вас вон сколько. :)

Кстати, strcpy() на memmove() перебивать не надо, там ваще поентеры одинаковые.

(gdb) bt
#0 TemplateToText (mode=120, msg=0x623000000100, oldmsg=0x623000000100, tpl=0x62e00004315e "", origarea=3) at /home/fido/src/golded-plus/golded3/getpls.cpp:355
#1 0x00000000005a9b36 in SaveLines (mode=117, savefile=0x62e000045182 "/home/fido/outfile/a", msg=0x623000000100, margin=79, clip=false) at /home/fido/src/golded-plus/golded3/gedoit.cpp:89
#2 0x00000000005adc3c in WriteMsgs (msg=0x623000000100) at /home/fido/src/golded-plus/golded3/gedoit.cpp:333
#3 0x00000000005ae9c5 in WriteMsg (msg=0x623000000100) at /home/fido/src/golded-plus/golded3/gedoit.cpp:409
#4 0x00000000007beda7 in Reader () at /home/fido/src/golded-plus/golded3/geread.cpp:963
#5 0x00000000006c7756 in main (argc=2, argv=0x7fffffffe0b8) at /home/fido/src/golded-plus/golded3/gemain.cpp:54
(gdb) p oldmsg
$1 = (GMsg *) 0x623000000100
(gdb) p msg
$2 = (GMsg *) 0x623000000100
(gdb) list
350
351 // build @dpseudo
352 if(msg->to_me())
353 strcpy(oldmsg->pseudoto, msg->pseudofrom);
354 else if(msg->to_you())
355 strcpy(oldmsg->pseudoto, msg->pseudoto);
356 else
357 *(oldmsg->pseudoto) = NUL;
358
359 // build @opseudo

Вот тут ваще noop должен быть.
355 strcpy(oldmsg->pseudoto, msg->pseudoto);

Аааа.. теперь ясно почему он в венде не валится, потому что он там noop посути.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #4  
Старый 25.10.2023, 06:50
Nil A
Guest
 
Сообщений: n/a
По умолчанию ASAN билд валится на сохранении сообщений

Nil A написал(а) к Vitaliy Aksyonov в Oct 23 05:37:48 по местному времени:

Нello, Vitaliy!

Wednesday October 25 2023 05:06, from Nil A -> Vitaliy Aksyonov:

NA>>> Сейчас по w невозможно сохранить даже на терминале в 80 символов
NA>>> и простое сообщение без выделений, без URL.

VA>> Я это тоже поймал. Конкретно эта ошибка некритична, но переделать
VA>> все же надо. Когда дойдут руки. Я тут один, а вас вон сколько. :)

Когда читаешь такие вот функции, как TemplateToText(), то расхочевается чинить голдед.
Я не совсем понимаю что они там делают, а делают они там явно (по SOLID терминологии) не Single Responsibility Principle.
Но я могу предложить весьма безопасный, быстрый, и короткий фикс, даже не вникая что там происходит, просто одним условием вокруг обложить. И у меня всё работает.

diff --git a/golded3/getpls.cpp b/golded3/getpls.cpp
--- a/golded3/getpls.cpp
+++ b/golded3/getpls.cpp
@@ -348,21 +348,24 @@ int TemplateToText(int mode, GMsg msg, GMsg* oldmsg, const char tpl, int origa
else
*(msg->pseudofrom) = NUL;

- // build @dpseudo
- if(msg->to_me())
- strcpy(oldmsg->pseudoto, msg->pseudofrom);
- else if(msg->to_you())
- strcpy(oldmsg->pseudoto, msg->pseudoto);
- else
- *(oldmsg->pseudoto) = NUL;
+ if (oldmsg != msg)
+ {
+ // build @dpseudo
+ if(msg->to_me())
+ strcpy(oldmsg->pseudoto, msg->pseudofrom);
+ else if(msg->to_you())
+ strcpy(oldmsg->pseudoto, msg->pseudoto);
+ else
+ *(oldmsg->pseudoto) = NUL;

- // build @opseudo
- if(msg->by_me())
- strcpy(oldmsg->pseudofrom, msg->pseudofrom);
- else if(msg->by_you())
- strcpy(oldmsg->pseudofrom, msg->pseudoto);
- else
- *(oldmsg->pseudofrom) = NUL;
+ // build @opseudo
+ if(msg->by_me())
+ strcpy(oldmsg->pseudofrom, msg->pseudofrom);
+ else if(msg->by_you())
+ strcpy(oldmsg->pseudofrom, msg->pseudoto);
+ else
+ *(oldmsg->pseudofrom) = NUL;
+ }

throw_release(msg->txt);


NA> Кстати, strcpy() на memmove() перебивать не надо, там ваще поентеры
NA> одинаковые.

NA> (gdb) bt
NA> #0 TemplateToText (mode=120, msg=0x623000000100,
NA> oldmsg=0x623000000100, tpl=0x62e00004315e "", origarea=3) at
NA> /home/fido/src/golded-plus/golded3/getpls.cpp:355 #1
NA> 0x00000000005a9b36 in SaveLines (mode=117, savefile=0x62e000045182
NA> "/home/fido/outfile/a", msg=0x623000000100, margin=79, clip=false) at
NA> /home/fido/src/golded-plus/golded3/gedoit.cpp:89 #2
NA> 0x00000000005adc3c in WriteMsgs (msg=0x623000000100) at
NA> /home/fido/src/golded-plus/golded3/gedoit.cpp:333 #3
NA> 0x00000000005ae9c5 in WriteMsg (msg=0x623000000100) at
NA> /home/fido/src/golded-plus/golded3/gedoit.cpp:409 #4
NA> 0x00000000007beda7 in Reader () at
NA> /home/fido/src/golded-plus/golded3/geread.cpp:963 #5
NA> 0x00000000006c7756 in main (argc=2, argv=0x7fffffffe0b8) at
NA> /home/fido/src/golded-plus/golded3/gemain.cpp:54 (gdb) p oldmsg $1 =
NA> (GMsg ) 0x623000000100 (gdb) p msg $2 = (GMsg ) 0x623000000100 (gdb)
NA> list 350 351 // build @dpseudo 352
NA> if(msg->to_me()) 353 strcpy(oldmsg->pseudoto,
NA> msg->pseudofrom); 354 else if(msg->to_you()) 355
NA> strcpy(oldmsg->pseudoto, msg->pseudoto); 356 else 357
NA> *(oldmsg->pseudoto) = NUL; 358 359 // build @opseudo

NA> Вот тут ваще noop должен быть.
NA> 355 strcpy(oldmsg->pseudoto, msg->pseudoto);

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #5  
Старый 25.10.2023, 17:21
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию Re: ASAN билд валится на сохранении сообщений

Vitaliy Aksyonov написал(а) к Nil A в Oct 23 07:08:08 по местному времени:

Привет, Nil!

25 Oct 23 05:37, ты писал(а) мне:

NA>>>> Сейчас по w невозможно сохранить даже на терминале в 80
NA>>>> символов и простое сообщение без выделений, без URL.

VA>>> Я это тоже поймал. Конкретно эта ошибка некритична, но
VA>>> переделать все же надо. Когда дойдут руки. Я тут один, а вас вон
VA>>> сколько. :)

NA> Когда читаешь такие вот функции, как TemplateToText(), то
NA> расхочевается чинить голдед. Я не совсем понимаю что они там делают, а
NA> делают они там явно (по SOLID терминологии) не Single Responsibility
NA> Principle. Но я могу предложить весьма безопасный, быстрый, и короткий
NA> фикс, даже не вникая что там происходит, просто одним условием вокруг
NA> обложить. И у меня всё работает.

"Безопасный, быстрый и короткий фикс" называется костыль. Там в консерватории править надо.

[...skipped...]

Best regards,
Vitaliy Aksyonov.

... Нет повести печальнее на свете, чем повесть о миньете в туалете..
--- GoldED+/LNX 1.1.5-b20231021
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:49. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot