brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · 28486cc Raw
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