@@ -14,7 +14,7 @@ extern void encodeShellString(char *shellStr, int maxChars, const char* cStr);
14
14
15
15
int main (int argc, char ** argv) {
16
16
char *userName = argv[2 ];
17
-
17
+
18
18
{
19
19
// BAD: a string from the user is injected directly into
20
20
// a command.
@@ -23,10 +23,10 @@ int main(int argc, char** argv) {
23
23
system (command1);
24
24
}
25
25
26
- {
26
+ {
27
27
// GOOD: the user string is encoded by a library routine.
28
28
char userNameQuoted[1000 ] = {0 };
29
- encodeShellString (userNameQuoted, 1000 , userName);
29
+ encodeShellString (userNameQuoted, 1000 , userName);
30
30
char command2[1000 ] = {0 };
31
31
sprintf (command2, " userinfo -v %s" , userNameQuoted);
32
32
system (command2);
@@ -36,16 +36,16 @@ int main(int argc, char** argv) {
36
36
void test2 (char * arg2) {
37
37
// GOOD?: the user string is the *first* part of the command, like $CC in many environments
38
38
char *envCC = getenv (" CC" );
39
-
39
+
40
40
char command[1000 ];
41
- sprintf (" %s %s" , envCC, arg2);
41
+ sprintf (command, " %s %s" , envCC, arg2);
42
42
system (command);
43
43
}
44
44
45
45
void test3 (char * arg1) {
46
46
// GOOD?: the user string is a `$CFLAGS` environment variable
47
47
char *envCflags = getenv (" CFLAGS" );
48
-
48
+
49
49
char command[1000 ];
50
50
sprintf (command, " %s %s" , arg1, envCflags);
51
51
system (command);
@@ -160,7 +160,7 @@ void test15(FILE *f) {
160
160
fread (temp, 1 , 10 , f);
161
161
162
162
int x = atoi (temp);
163
-
163
+
164
164
char temp2[10 ];
165
165
sprintf (temp2, " %d" , x);
166
166
sprintf (command, " tail -n %s foo.log" , temp2);
0 commit comments