[Object] Initialize LoadConfig member to null
authorReid Kleckner <rnk@google.com>
Mon, 7 Aug 2017 21:23:38 +0000 (21:23 +0000)
committerReid Kleckner <rnk@google.com>
Mon, 7 Aug 2017 21:23:38 +0000 (21:23 +0000)
Executables may not contain a load config, and clients should be able to
test for nullability. Previously we'd return uninitialized memory. Now
getLoadConfig32/64 return valid pointers or null.

Fixes PR34108

llvm-svn: 310308

llvm/include/llvm/Object/COFF.h
llvm/test/tools/llvm-readobj/Inputs/coff-no-load-config.exe [new file with mode: 0644]
llvm/test/tools/llvm-readobj/coff-load-config.test

index 89c1ba6..fa57855 100644 (file)
@@ -753,7 +753,7 @@ private:
   const debug_directory *DebugDirectoryBegin;
   const debug_directory *DebugDirectoryEnd;
   // Either coff_load_configuration32 or coff_load_configuration64.
-  const void *LoadConfig;
+  const void *LoadConfig = nullptr;
 
   std::error_code getString(uint32_t offset, StringRef &Res) const;
 
diff --git a/llvm/test/tools/llvm-readobj/Inputs/coff-no-load-config.exe b/llvm/test/tools/llvm-readobj/Inputs/coff-no-load-config.exe
new file mode 100644 (file)
index 0000000..cd6eb5a
Binary files /dev/null and b/llvm/test/tools/llvm-readobj/Inputs/coff-no-load-config.exe differ
index 1eb67be..45c83b1 100644 (file)
@@ -3,6 +3,8 @@ RUN: llvm-readobj -coff-load-config %S/Inputs/coff-load-config-x64.dll | FileChe
 
 RUN: llvm-readobj -coff-load-config %S/Inputs/coff-load-config-data-end.exe | FileCheck %s --check-prefix=DATAEND
 
+RUN: llvm-readobj -coff-load-config %S/Inputs/coff-no-load-config.exe | FileCheck %s --check-prefix=NOCONFIG
+
 X86: LoadConfig [
 X86:   Size: 0x5C
 X86:   TimeDateStamp: 1970-01-01 00:00:00 (0x0)
@@ -91,3 +93,6 @@ X64: ]
 DATAEND: SEHTable [
 DATAEND-NEXT:   0x402006
 DATAEND-NEXT: ]
+
+NOCONFIG: Format: COFF-x86-64
+NOCONFIG-NOT: LoadConfig