Nп/п : 47 из 87
От : Nil A 2:5015/46 14 фев 24 19:10:56
К : Vitaliy Aksyonov 14 фев 24 19:13:02
Тема : Changes in golded+ sources
----------------------------------------------------------------------------------
@MSGID: 2:5015/46 65cce656
@REPLY: 2:5015/46 65cbb8ed
@CHRS: CP866 2
@TZUTC: 0300
@TID: hpt/lnx 1.9.0-cur 2021-05-15
Hello, Vitaliy!
Tuesday February 13 2024 21:44, from Nil A -> Vitaliy Aksyonov:
NA> Вот сейчас из мастера собрал, если сохранить сообщение в файл, то
NA> санитайзер орёт, что копирование с оверлапом.
NA> ==25185==ERROR: AddressSanitizer: strcpy-param-overlap: memory ranges
NA> [0x623000001559,0x62300000155a) and [0x623000001559, 0x62300000155a)
NA> overlap
NA> #0 0x7f98858a7dc9 in __interceptor_strcpy
NA> ../../../../src/libsanitizer/asan/asan_interceptors.cc:429
NA> #1 0x726fe2 in TemplateToText(int, GMsg*, GMsg*, char const*, int)
NA> /home/fido/src/golded-plus/golded3/getpls.cpp:361
Это старый баг, я предлагал тупой фикс, см. ниже, но ты сказал,
что знаешь лучше решение, так что ждём.
diff --git a/golded3/getpls.cpp b/golded3/getpls.cpp
index c537471..8b32e90 100644
--- 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);
Best Regards, Nil
--- GoldED+/LNX 1.1.5
* Origin: Linux 2.6.32-042stab145.3 (2:5015/46)
SEEN-BY: 104/117 460/58 463/68 5005/49 5015/46 255
5019/40 5020/715 848 1042
SEEN-BY: 5020/4441 12000 5023/24 5025/121 5030/49
1081 5053/58 5058/104
SEEN-BY: 6078/80
@PATH: 5015/46 5020/1042 4441