1
1
typedef int FILE;
2
2
#define NULL (0 )
3
3
FILE *fopen (char *filename, const char *mode);
4
+ FILE *fdopen (int handle, char *mode);
4
5
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);
5
10
int fprintf (FILE *fp,const char *fmt, ...);
6
11
int fclose (FILE *stream);
7
12
8
- int main ( int argc, char *argv[] )
13
+ int funcTest1 ( )
9
14
{
10
15
FILE *fp;
11
16
char *filename = tmpnam (NULL ); // BAD
@@ -14,3 +19,50 @@ int main(int argc, char *argv[])
14
19
fclose (fp);
15
20
return 0 ;
16
21
}
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