aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-07-03 21:31:16 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-07-03 21:31:16 +0200
commitd4e4fdb5ce5ccc067b3d35d877f7a7d978869517 (patch)
treebac3e4a55fa72db0c67d377b90869b4d63e8c3c9 /shell
parent2e989ef232e35750df573898077dd356003705b2 (diff)
downloadbusybox-w32-d4e4fdb5ce5ccc067b3d35d877f7a7d978869517.tar.gz
busybox-w32-d4e4fdb5ce5ccc067b3d35d877f7a7d978869517.tar.bz2
busybox-w32-d4e4fdb5ce5ccc067b3d35d877f7a7d978869517.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.c26
-rw-r--r--shell/shell_common.c4
2 files changed, 7 insertions, 23 deletions
diff --git a/shell/hush.c b/shell/hush.c
index fc6db316e..30add72f0 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -1478,8 +1478,6 @@ typedef struct save_arg_t {
1478 1478
1479static void save_and_replace_G_args(save_arg_t *sv, char **argv) 1479static void save_and_replace_G_args(save_arg_t *sv, char **argv)
1480{ 1480{
1481 int n;
1482
1483 sv->sv_argv0 = argv[0]; 1481 sv->sv_argv0 = argv[0];
1484 sv->sv_g_argv = G.global_argv; 1482 sv->sv_g_argv = G.global_argv;
1485 sv->sv_g_argc = G.global_argc; 1483 sv->sv_g_argc = G.global_argc;
@@ -1489,10 +1487,7 @@ static void save_and_replace_G_args(save_arg_t *sv, char **argv)
1489 G.global_argv = argv; 1487 G.global_argv = argv;
1490 IF_HUSH_SET(G.global_args_malloced = 0;) 1488 IF_HUSH_SET(G.global_args_malloced = 0;)
1491 1489
1492 n = 1; 1490 G.global_argc = 1 + string_array_len(argv + 1);
1493 while (*++argv)
1494 n++;
1495 G.global_argc = n;
1496} 1491}
1497 1492
1498static void restore_G_args(save_arg_t *sv, char **argv) 1493static void restore_G_args(save_arg_t *sv, char **argv)
@@ -6809,13 +6804,11 @@ static void exec_function(char ***to_free,
6809 char **argv) 6804 char **argv)
6810{ 6805{
6811# if BB_MMU 6806# if BB_MMU
6812 int n = 1; 6807 int n;
6813 6808
6814 argv[0] = G.global_argv[0]; 6809 argv[0] = G.global_argv[0];
6815 G.global_argv = argv; 6810 G.global_argv = argv;
6816 while (*++argv) 6811 G.global_argc = n = 1 + string_array_len(argv + 1);
6817 n++;
6818 G.global_argc = n;
6819 /* On MMU, funcp->body is always non-NULL */ 6812 /* On MMU, funcp->body is always non-NULL */
6820 n = run_list(funcp->body); 6813 n = run_list(funcp->body);
6821 fflush_all(); 6814 fflush_all();
@@ -8811,12 +8804,8 @@ static int FAST_FUNC builtin_true(char **argv UNUSED_PARAM)
8811#if ENABLE_HUSH_TEST || ENABLE_HUSH_ECHO || ENABLE_HUSH_PRINTF || ENABLE_HUSH_KILL 8804#if ENABLE_HUSH_TEST || ENABLE_HUSH_ECHO || ENABLE_HUSH_PRINTF || ENABLE_HUSH_KILL
8812static int run_applet_main(char **argv, int (*applet_main_func)(int argc, char **argv)) 8805static int run_applet_main(char **argv, int (*applet_main_func)(int argc, char **argv))
8813{ 8806{
8814 int argc = 0; 8807 int argc = string_array_len(argv);
8815 while (*argv) { 8808 return applet_main_func(argc, argv);
8816 argc++;
8817 argv++;
8818 }
8819 return applet_main_func(argc, argv - argc);
8820} 8809}
8821#endif 8810#endif
8822#if ENABLE_HUSH_TEST || BASH_TEST2 8811#if ENABLE_HUSH_TEST || BASH_TEST2
@@ -9363,10 +9352,7 @@ static int FAST_FUNC builtin_set(char **argv)
9363 /* This realloc's G.global_argv */ 9352 /* This realloc's G.global_argv */
9364 G.global_argv = pp = add_strings_to_strings(g_argv, argv, /*dup:*/ 1); 9353 G.global_argv = pp = add_strings_to_strings(g_argv, argv, /*dup:*/ 1);
9365 9354
9366 n = 1; 9355 G.global_argc = 1 + string_array_len(pp + 1);
9367 while (*++pp)
9368 n++;
9369 G.global_argc = n;
9370 9356
9371 return EXIT_SUCCESS; 9357 return EXIT_SUCCESS;
9372 9358
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) {