blob: eb05f577d1b74739e1e4aad4dfca5c0091cdf31d [file] [log] [blame]
Anna Zaks1c215d02011-12-05 18:58:01 +00001// RUN: %clang_cc1 -analyze -analyzer-checker=experimental.security.taint,debug.TaintTest -verify %s
2
3int scanf(const char *restrict format, ...);
4int getchar(void);
5
6#define BUFSIZE 10
7int Buffer[BUFSIZE];
8
9void bufferScanfAssignment(int x) {
10 int n;
11 int *addr = &Buffer[0];
12 scanf("%d", &n);
13 addr += n;// expected-warning {{tainted}}
Anna Zaksd624f602011-12-05 21:32:58 +000014 *addr = n; // expected-warning 2 {{tainted}}
Anna Zaksc25efcc2011-12-06 23:12:27 +000015
16 double tdiv = n / 30; // expected-warning 3 {{tainted}}
17 char *loc_cast = (char *) n; // expected-warning {{tainted}}
18 char tinc = tdiv++; // expected-warning {{tainted}}
19 int tincdec = (char)tinc--; // expected-warning 2 {{tainted}}
20 int tprtarithmetic1 = *(addr+1);
21
22
Anna Zaks1c215d02011-12-05 18:58:01 +000023}