[llvm] r311605 - [WebAssembly] Fix overflow for input with missing version

Jonas Devlieghere via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 23 14:36:04 PDT 2017


Author: jdevlieghere
Date: Wed Aug 23 14:36:04 2017
New Revision: 311605

URL: http://llvm.org/viewvc/llvm-project?rev=311605&view=rev
Log:
[WebAssembly] Fix overflow for input with missing version

Differential revision: https://reviews.llvm.org/D37070

Added:
    llvm/trunk/test/Object/Inputs/WASM/
    llvm/trunk/test/Object/Inputs/WASM/missing-version.wasm
    llvm/trunk/test/Object/wasm-missing-version.test
Modified:
    llvm/trunk/lib/Object/WasmObjectFile.cpp

Modified: llvm/trunk/lib/Object/WasmObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/WasmObjectFile.cpp?rev=311605&r1=311604&r2=311605&view=diff
==============================================================================
--- llvm/trunk/lib/Object/WasmObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/WasmObjectFile.cpp Wed Aug 23 14:36:04 2017
@@ -203,7 +203,16 @@ WasmObjectFile::WasmObjectFile(MemoryBuf
                                   object_error::parse_failed);
     return;
   }
+
+  const uint8_t *Eof = getPtr(getData().size());
   const uint8_t *Ptr = getPtr(4);
+
+  if (Ptr + 4 > Eof) {
+    Err = make_error<StringError>("Missing version number",
+                                  object_error::parse_failed);
+    return;
+  }
+
   Header.Version = readUint32(Ptr);
   if (Header.Version != wasm::WasmVersion) {
     Err = make_error<StringError>("Bad version number",
@@ -211,7 +220,6 @@ WasmObjectFile::WasmObjectFile(MemoryBuf
     return;
   }
 
-  const uint8_t *Eof = getPtr(getData().size());
   WasmSection Sec;
   while (Ptr < Eof) {
     if ((Err = readSection(Sec, Ptr, getPtr(0))))

Added: llvm/trunk/test/Object/Inputs/WASM/missing-version.wasm
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/Inputs/WASM/missing-version.wasm?rev=311605&view=auto
==============================================================================
Binary files llvm/trunk/test/Object/Inputs/WASM/missing-version.wasm (added) and llvm/trunk/test/Object/Inputs/WASM/missing-version.wasm Wed Aug 23 14:36:04 2017 differ

Added: llvm/trunk/test/Object/wasm-missing-version.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/wasm-missing-version.test?rev=311605&view=auto
==============================================================================
--- llvm/trunk/test/Object/wasm-missing-version.test (added)
+++ llvm/trunk/test/Object/wasm-missing-version.test Wed Aug 23 14:36:04 2017
@@ -0,0 +1,2 @@
+# RUN: not llvm-objdump -h %p/Inputs/WASM/missing-version.wasm 2>&1 | FileCheck %s
+# CHECK: {{.*}}: Missing version number




More information about the llvm-commits mailing list