View Issue Details

IDProjectCategoryView StatusLast Update
0001934Plugins_Commonpublic2011-12-05 15:33
ReporterMASAssigned ToDrKnS 
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Platformx64OSWindowsOS Version7
Product Version3.0 
Target VersionFixed in Version3.0 
Summary0001934: 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') ;

TagsNo tags attached.

Activities

DrKnS

2011-12-05 15:33

administrator   bugnote:0008053

rev. 6923.

Issue History

Date Modified Username Field Change
2011-12-05 15:07 MAS New Issue
2011-12-05 15:33 DrKnS Note Added: 0008053
2011-12-05 15:33 DrKnS Status new => closed
2011-12-05 15:33 DrKnS Assigned To => DrKnS
2011-12-05 15:33 DrKnS Resolution open => fixed
2011-12-05 15:33 DrKnS Fixed in Version => 3.0