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; +} _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
