r240643 - Fix a crash by division by zero in analyzer

Daniel Marjamaki daniel.marjamaki at evidente.se
Thu Jun 25 07:06:02 PDT 2015


Author: danielmarjamaki
Date: Thu Jun 25 09:06:02 2015
New Revision: 240643

URL: http://llvm.org/viewvc/llvm-project?rev=240643&view=rev
Log:
Fix a crash by division by zero in analyzer

Patch by takeshi-yoshimura!

Differential Revision: http://reviews.llvm.org/D10145

Added:
    cfe/trunk/test/Analysis/division-by-zero.c
Modified:
    cfe/trunk/lib/StaticAnalyzer/Core/BasicValueFactory.cpp

Modified: cfe/trunk/lib/StaticAnalyzer/Core/BasicValueFactory.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BasicValueFactory.cpp?rev=240643&r1=240642&r2=240643&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/BasicValueFactory.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/BasicValueFactory.cpp Thu Jun 25 09:06:02 2015
@@ -154,9 +154,13 @@ BasicValueFactory::evalAPSInt(BinaryOper
       return &getValue( V1 * V2 );
 
     case BO_Div:
+      if (V2 == 0) // Avoid division by zero
+        return nullptr;
       return &getValue( V1 / V2 );
 
     case BO_Rem:
+      if (V2 == 0) // Avoid division by zero
+        return nullptr;
       return &getValue( V1 % V2 );
 
     case BO_Add:

Added: cfe/trunk/test/Analysis/division-by-zero.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/division-by-zero.c?rev=240643&view=auto
==============================================================================
--- cfe/trunk/test/Analysis/division-by-zero.c (added)
+++ cfe/trunk/test/Analysis/division-by-zero.c Thu Jun 25 09:06:02 2015
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -analyze -analyzer-checker=unix.Malloc %s
+// Do not crash due to division by zero
+
+int f(unsigned int a) {
+  if (a <= 0) return 1 / a;
+  return a;
+}





More information about the cfe-commits mailing list