File tree Expand file tree Collapse file tree 3 files changed +14
-0
lines changed
test/query-tests/Security/CWE/CWE-022/semmle/tests Expand file tree Collapse file tree 3 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -75,6 +75,10 @@ class TaintedPathConfiguration extends TaintTracking::Configuration {
75
75
}
76
76
77
77
override predicate isSanitizerIn ( DataFlow:: Node node ) { this .isSource ( node ) }
78
+
79
+ override predicate isSanitizer ( DataFlow:: Node node ) {
80
+ node .asExpr ( ) .( Call ) .getTarget ( ) .getUnspecifiedType ( ) instanceof ArithmeticType
81
+ }
78
82
}
79
83
80
84
from
Original file line number Diff line number Diff line change 6
6
typedef struct {} FILE ;
7
7
#define FILENAME_MAX 1000
8
8
typedef unsigned long size_t ;
9
+ #define NULL ((void*)0)
9
10
10
11
FILE * fopen (const char * filename , const char * mode );
11
12
int sprintf (char * s , const char * format , ...);
12
13
size_t strlen (const char * s );
13
14
char * strncat (char * s1 , const char * s2 , size_t n );
14
15
int scanf (const char * format , ...);
15
16
void * malloc (size_t size );
17
+ double strtod (const char * ptr , char * * endptr );
Original file line number Diff line number Diff line change @@ -43,4 +43,12 @@ int main(int argc, char** argv) {
43
43
scanf ("%s" , fileName );
44
44
fopen (fileName , "wb+" ); // BAD
45
45
}
46
+
47
+ {
48
+ char * aNumber = getenv ("A_NUMBER" );
49
+ double number = strtod (aNumber , 0 );
50
+ char fileName [20 ];
51
+ sprintf (fileName , "/foo/%f" , number );
52
+ fopen (fileName , "wb+" ); // GOOD
53
+ }
46
54
}
You can’t perform that action at this time.
0 commit comments