Skip to content

Commit 7514fe2

Browse files
authored
Update test.cpp
1 parent 289d587 commit 7514fe2

File tree

1 file changed

+53
-1
lines changed
  • cpp/ql/test/experimental/query-tests/Security/CWE/CWE-377/semmle/tests

1 file changed

+53
-1
lines changed
Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
typedef int FILE;
22
#define NULL (0)
33
FILE *fopen(char *filename, const char *mode);
4+
FILE *fdopen(int handle, char *mode);
45
char * tmpnam(char * name);
6+
int mkstemp(char * name);
7+
char * strcat(char *str1, const char *str2);
8+
int umask(int pmode);
9+
int chmod(char * filename,int pmode);
510
int fprintf(FILE *fp,const char *fmt, ...);
611
int fclose(FILE *stream);
712

8-
int main(int argc, char *argv[])
13+
int funcTest1()
914
{
1015
FILE *fp;
1116
char *filename = tmpnam(NULL); // BAD
@@ -14,3 +19,50 @@ int main(int argc, char *argv[])
1419
fclose(fp);
1520
return 0;
1621
}
22+
23+
int funcTest2()
24+
{
25+
FILE *fp;
26+
int fd;
27+
char filename[80];
28+
strcat (filename, "/tmp/name.XXXXXX");
29+
fd = mkstemp(filename);
30+
if ( fd < 0 ) {
31+
return 1;
32+
}
33+
fp = fdopen(fd,"w"); // GOOD
34+
return 0;
35+
}
36+
37+
int funcTest3()
38+
{
39+
FILE *fp;
40+
char filename[80];
41+
strcat(filename, "/tmp/tmp.name");
42+
fp = fopen(filename,"w"); // BAD
43+
fprintf(fp,"%s\n","data to file");
44+
fclose(fp);
45+
return 0;
46+
}
47+
48+
int funcTest4()
49+
{
50+
FILE *fp;
51+
char filename[80];
52+
umask(0022);
53+
strcat(filename, "/tmp/tmp.name");
54+
fp = fopen(filename,"w"); // GOOD
55+
chmod(filename,0666);
56+
fprintf(fp,"%s\n","data to file");
57+
fclose(fp);
58+
return 0;
59+
}
60+
61+
int main(int argc, char *argv[])
62+
{
63+
funcTest1();
64+
funcTest2();
65+
funcTest3();
66+
funcTest4();
67+
return 0;
68+
}

0 commit comments

Comments
 (0)