diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-03 21:31:16 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-18 19:20:58 +0200 |
commit | 442d522f0bc6f29c14a3e54a0af3aac68bb891a1 (patch) | |
tree | aa36853bf59cf4b3d4808d391ab31a714c3fc28c /shell | |
parent | ceaffde51163394c47fec34dac8663ae8152a699 (diff) | |
download | busybox-w32-442d522f0bc6f29c14a3e54a0af3aac68bb891a1.tar.gz busybox-w32-442d522f0bc6f29c14a3e54a0af3aac68bb891a1.tar.bz2 busybox-w32-442d522f0bc6f29c14a3e54a0af3aac68bb891a1.zip |
fixes for bugs found by make_single_applets.sh
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 26 | ||||
-rw-r--r-- | shell/shell_common.c | 4 |
2 files changed, 7 insertions, 23 deletions
diff --git a/shell/hush.c b/shell/hush.c index f5c1e5bc1..db8ca4f97 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
@@ -1486,8 +1486,6 @@ typedef struct save_arg_t { | |||
1486 | 1486 | ||
1487 | static void save_and_replace_G_args(save_arg_t *sv, char **argv) | 1487 | static void save_and_replace_G_args(save_arg_t *sv, char **argv) |
1488 | { | 1488 | { |
1489 | int n; | ||
1490 | |||
1491 | sv->sv_argv0 = argv[0]; | 1489 | sv->sv_argv0 = argv[0]; |
1492 | sv->sv_g_argv = G.global_argv; | 1490 | sv->sv_g_argv = G.global_argv; |
1493 | sv->sv_g_argc = G.global_argc; | 1491 | sv->sv_g_argc = G.global_argc; |
@@ -1497,10 +1495,7 @@ static void save_and_replace_G_args(save_arg_t *sv, char **argv) | |||
1497 | G.global_argv = argv; | 1495 | G.global_argv = argv; |
1498 | IF_HUSH_SET(G.global_args_malloced = 0;) | 1496 | IF_HUSH_SET(G.global_args_malloced = 0;) |
1499 | 1497 | ||
1500 | n = 1; | 1498 | G.global_argc = 1 + string_array_len(argv + 1); |
1501 | while (*++argv) | ||
1502 | n++; | ||
1503 | G.global_argc = n; | ||
1504 | } | 1499 | } |
1505 | 1500 | ||
1506 | static void restore_G_args(save_arg_t *sv, char **argv) | 1501 | static void restore_G_args(save_arg_t *sv, char **argv) |
@@ -6817,13 +6812,11 @@ static void exec_function(char ***to_free, | |||
6817 | char **argv) | 6812 | char **argv) |
6818 | { | 6813 | { |
6819 | # if BB_MMU | 6814 | # if BB_MMU |
6820 | int n = 1; | 6815 | int n; |
6821 | 6816 | ||
6822 | argv[0] = G.global_argv[0]; | 6817 | argv[0] = G.global_argv[0]; |
6823 | G.global_argv = argv; | 6818 | G.global_argv = argv; |
6824 | while (*++argv) | 6819 | G.global_argc = n = 1 + string_array_len(argv + 1); |
6825 | n++; | ||
6826 | G.global_argc = n; | ||
6827 | /* On MMU, funcp->body is always non-NULL */ | 6820 | /* On MMU, funcp->body is always non-NULL */ |
6828 | n = run_list(funcp->body); | 6821 | n = run_list(funcp->body); |
6829 | fflush_all(); | 6822 | fflush_all(); |
@@ -8829,12 +8822,8 @@ static int FAST_FUNC builtin_true(char **argv UNUSED_PARAM) | |||
8829 | #if ENABLE_HUSH_TEST || ENABLE_HUSH_ECHO || ENABLE_HUSH_PRINTF || ENABLE_HUSH_KILL | 8822 | #if ENABLE_HUSH_TEST || ENABLE_HUSH_ECHO || ENABLE_HUSH_PRINTF || ENABLE_HUSH_KILL |
8830 | static int run_applet_main(char **argv, int (*applet_main_func)(int argc, char **argv)) | 8823 | static int run_applet_main(char **argv, int (*applet_main_func)(int argc, char **argv)) |
8831 | { | 8824 | { |
8832 | int argc = 0; | 8825 | int argc = string_array_len(argv); |
8833 | while (*argv) { | 8826 | return applet_main_func(argc, argv); |
8834 | argc++; | ||
8835 | argv++; | ||
8836 | } | ||
8837 | return applet_main_func(argc, argv - argc); | ||
8838 | } | 8827 | } |
8839 | #endif | 8828 | #endif |
8840 | #if ENABLE_HUSH_TEST || BASH_TEST2 | 8829 | #if ENABLE_HUSH_TEST || BASH_TEST2 |
@@ -9381,10 +9370,7 @@ static int FAST_FUNC builtin_set(char **argv) | |||
9381 | /* This realloc's G.global_argv */ | 9370 | /* This realloc's G.global_argv */ |
9382 | G.global_argv = pp = add_strings_to_strings(g_argv, argv, /*dup:*/ 1); | 9371 | G.global_argv = pp = add_strings_to_strings(g_argv, argv, /*dup:*/ 1); |
9383 | 9372 | ||
9384 | n = 1; | 9373 | G.global_argc = 1 + string_array_len(pp + 1); |
9385 | while (*++pp) | ||
9386 | n++; | ||
9387 | G.global_argc = n; | ||
9388 | 9374 | ||
9389 | return EXIT_SUCCESS; | 9375 | return EXIT_SUCCESS; |
9390 | 9376 | ||
diff --git a/shell/shell_common.c b/shell/shell_common.c index 03b7d0b75..bf56f3d78 100644 --- a/shell/shell_common.c +++ b/shell/shell_common.c | |||
@@ -405,9 +405,7 @@ shell_builtin_ulimit(char **argv) | |||
405 | */ | 405 | */ |
406 | GETOPT_RESET(); | 406 | GETOPT_RESET(); |
407 | 407 | ||
408 | argc = 1; | 408 | argc = string_array_len(argv); |
409 | while (argv[argc]) | ||
410 | argc++; | ||
411 | 409 | ||
412 | opts = 0; | 410 | opts = 0; |
413 | while (1) { | 411 | while (1) { |