[llvm] ea93ca6 - [Bitcode] Fix size check for DIImportedEntity record

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 9 05:23:41 PST 2022


Author: Nikita Popov
Date: 2022-02-09T14:23:30+01:00
New Revision: ea93ca60efedb4419a123d328150334a566d167a

URL: https://github.com/llvm/llvm-project/commit/ea93ca60efedb4419a123d328150334a566d167a
DIFF: https://github.com/llvm/llvm-project/commit/ea93ca60efedb4419a123d328150334a566d167a.diff

LOG: [Bitcode] Fix size check for DIImportedEntity record

This was using && instead of ||.

Added: 
    llvm/test/Bitcode/Inputs/invalid-diimportedentity-record.bc

Modified: 
    llvm/lib/Bitcode/Reader/MetadataLoader.cpp
    llvm/test/Bitcode/invalid.test

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
index 29a909da460e..1955443e73db 100644
--- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
+++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
@@ -2033,8 +2033,8 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
     break;
   }
   case bitc::METADATA_IMPORTED_ENTITY: {
-    if (Record.size() < 6 && Record.size() > 8)
-      return error("Invalid record");
+    if (Record.size() < 6 || Record.size() > 8)
+      return error("Invalid DIImportedEntity record");
 
     IsDistinct = Record[0];
     bool HasFile = (Record.size() >= 7);

diff  --git a/llvm/test/Bitcode/Inputs/invalid-diimportedentity-record.bc b/llvm/test/Bitcode/Inputs/invalid-diimportedentity-record.bc
new file mode 100644
index 000000000000..d163d124b825
Binary files /dev/null and b/llvm/test/Bitcode/Inputs/invalid-diimportedentity-record.bc 
diff er

diff  --git a/llvm/test/Bitcode/invalid.test b/llvm/test/Bitcode/invalid.test
index 92c65ce05d4e..26371504bab7 100644
--- a/llvm/test/Bitcode/invalid.test
+++ b/llvm/test/Bitcode/invalid.test
@@ -286,3 +286,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-chunk-size.bc 2>&1 | \
 RUN:   FileCheck --check-prefix=INVALID-CHUNK-SIZE %s
 
 INVALID-CHUNK-SIZE: Fixed or VBR abbrev record with size > MaxChunkData
+
+RUN: not llvm-dis -disable-output %p/Inputs/invalid-diimportedentity-record.bc 2>&1 | \
+RUN:   FileCheck --check-prefix=INVALID-DIIMPORTEDENTITY-RECORD %s
+
+INVALID-DIIMPORTEDENTITY-RECORD: Invalid DIImportedEntity record


        


More information about the llvm-commits mailing list