View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001934 | Plugins | _Common | public | 2011-12-05 11:07 | 2011-12-05 11:33 |
Reporter | MAS | Assigned To | DrKnS | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | x64 | OS | Windows | OS Version | 7 |
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001934: CRT implementation of strncpy/wcsncpy overruns target buffer, resulting in app crash | ||||
Description | Данный код вызовет перезапись буфера с последующим крахом из-за неверной реализации strncpy в CRT в 2.0 и 3.0. wchar_t buf[40]; wcsncpy( buf, "123456789", 5 ); Сейчас текст strncpy выглядит так: while (count-- && (*dest++ = *src++)); while (count--) *dest++=_T('\0') ; после первого цикла count станет 0xFFFFFFFF и второй цикл пойдет затирать всю память нулями. Корректная версия должна выглядеть как-то так: while (count) { count--; if( !(*dest++ = *src++)) break; } while (count--) *dest++=_T('\0') ; | ||||
Tags | No tags attached. | ||||