about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-01-04 18:20:02 +0100
committervan Hauser <vh@thc.org>2021-01-04 18:20:02 +0100
commit5c224726169e421e95ec7f926f7808ff78cb05df (patch)
tree9cecd39bef7f949c99a18584bacd68fb963da349
parentb7cd6d4035f18a50fd664eb8bb3829e9a4aeb9c3 (diff)
downloadafl++-5c224726169e421e95ec7f926f7808ff78cb05df.tar.gz
cmplog fix
-rw-r--r--instrumentation/cmplog-instructions-pass.cc30
1 files changed, 22 insertions, 8 deletions
diff --git a/instrumentation/cmplog-instructions-pass.cc b/instrumentation/cmplog-instructions-pass.cc
index 841ba0bd..154bec2b 100644
--- a/instrumentation/cmplog-instructions-pass.cc
+++ b/instrumentation/cmplog-instructions-pass.cc
@@ -249,11 +249,20 @@ bool CmpLogInstructions::hookInstrs(Module &M) {
         intTyOp0 = dyn_cast<IntegerType>(V0->getType());
         Value *V1 = IRB.CreateBitCast(op1, IntegerType::get(C, max_size));
         intTyOp1 = dyn_cast<IntegerType>(V1->getType());
-        max_size = intTyOp0->getBitWidth() > intTyOp1->getBitWidth()
+
+        if (intTyOp0 && intTyOp1) {
+
+          max_size = intTyOp0->getBitWidth() > intTyOp1->getBitWidth()
                        ? intTyOp0->getBitWidth()
                        : intTyOp1->getBitWidth();
-        args.push_back(V0);
-        args.push_back(V1);
+          args.push_back(V0);
+          args.push_back(V1);
+          
+        } else {
+        
+          max_size = 0;
+        
+        }
 
       }
 
@@ -261,11 +270,16 @@ bool CmpLogInstructions::hookInstrs(Module &M) {
 
       intTyOp0 = dyn_cast<IntegerType>(op0->getType());
       intTyOp1 = dyn_cast<IntegerType>(op1->getType());
-      max_size = intTyOp0->getBitWidth() > intTyOp1->getBitWidth()
-                     ? intTyOp0->getBitWidth()
-                     : intTyOp1->getBitWidth();
-      args.push_back(op0);
-      args.push_back(op1);
+
+      if (intTyOp0 && intTyOp1) {
+
+        max_size = intTyOp0->getBitWidth() > intTyOp1->getBitWidth()
+                       ? intTyOp0->getBitWidth()
+                       : intTyOp1->getBitWidth();
+        args.push_back(op0);
+        args.push_back(op1);
+
+      }
 
     }