11typedef int FILE;
22#define NULL (0 )
33FILE *fopen (char *filename, const char *mode);
4+ FILE *fdopen (int handle, char *mode);
45char * 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);
510int fprintf (FILE *fp,const char *fmt, ...);
611int 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