printenv: fix environ == NULL segfault
No binary (build failed)
—
(log yok)
| @@ -19,9 +19,14 @@ int printenv_main(int argc UNUSED_PARAM, char **argv) | |
| /* no variables specified, show whole env */ | |
| if (!argv[1]) { | |
| - | int e = 0; |
| - | while (environ[e]) |
| - | puts(environ[e++]); |
| + | char **e = environ; |
| + | |
| + | /* environ can be NULL! (for example, after clearenv()) |
| + | * Check for that: |
| + | */ |
| + | if (e) |
| + | while (*e) |
| + | puts(*e++); |
| } else { | |
| /* search for specified variables and print them out if found */ | |
| char *arg, *env; | |
| @@ -45,7 +45,7 @@ | |
| /* This is a NOFORK applet. Be very careful! */ | |
| /* test_main() is called from shells, and we need to be extra careful here. | |
| - | * This is true regardless of PREFER_APPLETS and STANDALONE_SHELL |
| + | * This is true regardless of PREFER_APPLETS and SH_STANDALONE |
| * state. */ | |
| /* test(1) accepts the following grammar: | |