35 lines · c
1// RUN: %clang_analyze_cc1 -Wno-format-security -Wno-pointer-to-int-cast \2// RUN: -Wno-incompatible-library-redeclaration -verify=normaldiv %s \3// RUN: -analyzer-checker=optin.taint.GenericTaint \4// RUN: -analyzer-checker=core5 6// RUN: %clang_analyze_cc1 -Wno-format-security -Wno-pointer-to-int-cast \7// RUN: -Wno-incompatible-library-redeclaration -verify=tainteddiv %s \8// RUN: -analyzer-checker=optin.taint.GenericTaint \9// RUN: -analyzer-checker=optin.taint.TaintedDiv10 11int getchar(void);12 13 14//If we are sure that we divide by zero15//we emit a divide by zero warning16int testDivZero(void) {17 int x = getchar(); // taint source18 if (!x)19 return 5 / x; // normaldiv-warning{{Division by zero}}20 return 8;21}22 23// The attacker provided value might be 024int testDivZero2(void) {25 int x = getchar(); // taint source26 return 5 / x; // tainteddiv-warning{{Division by a tainted value}}27}28 29int testDivZero3(void) {30 int x = getchar(); // taint source31 if (!x)32 return 0;33 return 5 / x; // no warning34}35