Hi bogner,

Modified ReadAbbrevBlock to return "true'  when an error is identified (instead 
of crashing). Propagate that error appropriately

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D7007

Files:
  lib/Frontend/SerializedDiagnosticReader.cpp
  lib/Serialization/ASTReader.cpp

Index: lib/Frontend/SerializedDiagnosticReader.cpp
===================================================================
--- lib/Frontend/SerializedDiagnosticReader.cpp
+++ lib/Frontend/SerializedDiagnosticReader.cpp
@@ -91,7 +91,8 @@
       return Cursor::BlockEnd;
 
     case llvm::bitc::DEFINE_ABBREV:
-      Stream.ReadAbbrevRecord();
+      if (Stream.ReadAbbrevRecord()) 
+        return SDError::InvalidDiagnostics;
       continue;
 
     case llvm::bitc::UNABBREV_RECORD:
Index: lib/Serialization/ASTReader.cpp
===================================================================
--- lib/Serialization/ASTReader.cpp
+++ lib/Serialization/ASTReader.cpp
@@ -1340,7 +1340,10 @@
       Cursor.JumpToBit(Offset);
       return false;
     }
-    Cursor.ReadAbbrevRecord();
+    if (Cursor.ReadAbbrevRecord()) {
+      Error("malformed abbrev record in AST file");
+      return Failure;
+    }
   }
 }
 
@@ -4262,7 +4265,8 @@
         InputFilesCursor.JumpToBit(Offset);
         break;
       }
-      InputFilesCursor.ReadAbbrevRecord();
+      if (InputFilesCursor.ReadAbbrevRecord())
+        return true;
     }
   }

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
Index: lib/Frontend/SerializedDiagnosticReader.cpp
===================================================================
--- lib/Frontend/SerializedDiagnosticReader.cpp
+++ lib/Frontend/SerializedDiagnosticReader.cpp
@@ -91,7 +91,8 @@
       return Cursor::BlockEnd;
 
     case llvm::bitc::DEFINE_ABBREV:
-      Stream.ReadAbbrevRecord();
+      if (Stream.ReadAbbrevRecord()) 
+        return SDError::InvalidDiagnostics;
       continue;
 
     case llvm::bitc::UNABBREV_RECORD:
Index: lib/Serialization/ASTReader.cpp
===================================================================
--- lib/Serialization/ASTReader.cpp
+++ lib/Serialization/ASTReader.cpp
@@ -1340,7 +1340,10 @@
       Cursor.JumpToBit(Offset);
       return false;
     }
-    Cursor.ReadAbbrevRecord();
+    if (Cursor.ReadAbbrevRecord()) {
+      Error("malformed abbrev record in AST file");
+      return Failure;
+    }
   }
 }
 
@@ -4262,7 +4265,8 @@
         InputFilesCursor.JumpToBit(Offset);
         break;
       }
-      InputFilesCursor.ReadAbbrevRecord();
+      if (InputFilesCursor.ReadAbbrevRecord())
+        return true;
     }
   }
   
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to