Adding constructor to _FX_SYSTEMTIME to resolve uninitialized read bugs found by...
authorTom Sepez <tsepez@chromium.org>
Thu, 6 Nov 2014 22:38:12 +0000 (14:38 -0800)
committerTom Sepez <tsepez@chromium.org>
Thu, 6 Nov 2014 22:38:12 +0000 (14:38 -0800)
Warning from /analyze was:
src\third_party\pdfium\fpdfsdk\include\fsdk_mgr.h(96) : warning C6001: Using uninitialized memory 'fxtime'.

Other error paths can also lead to reading from an uninitialized _FX_SYSTEMTIME object.

Code-gen for the constructor is small enough (four writes of zeroed EAX with VC++, less with gcc) to make putting the constructor in a .cc file unnecessary.

Approval of in-class member initialization would make this fix simpler but that has not quite been approved yet.

BUG=https://code.google.com/p/pdfium/issues/detail?id=70
BUG=427616
R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/692533005

fpdfsdk/include/fx_systemhandler.h

index b9ac413..e0c3622 100644 (file)
@@ -13,6 +13,15 @@ typedef void                                 (*TimerCallback)(FX_INT32 idEvent);
 
 typedef struct _FX_SYSTEMTIME 
 {
+    _FX_SYSTEMTIME()
+      : wYear(0),
+        wMonth(0),
+        wDayOfWeek(0),
+        wDay(0),
+        wHour(0),
+        wMinute(0),
+        wSecond(0),
+        wMilliseconds(0) {}
     FX_WORD wYear;
     FX_WORD wMonth;
     FX_WORD wDayOfWeek;