diff options
author | Denys Vlasenko | 2017-07-06 20:12:44 +0200 |
---|---|---|
committer | Denys Vlasenko | 2017-07-06 20:12:44 +0200 |
commit | e59591a364e43bccb6fd4d373d3ed86fc77dffb7 (patch) | |
tree | 6a298288c291b0ce3310e15807a175c025f36c1a /shell/hush.c | |
parent | 74d20e637982b412611dbbf32b633857b1c73539 (diff) | |
download | busybox-e59591a364e43bccb6fd4d373d3ed86fc77dffb7.zip busybox-e59591a364e43bccb6fd4d373d3ed86fc77dffb7.tar.gz |
hush: Print error messages on shift -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush.c')
-rw-r--r-- | shell/hush.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/shell/hush.c b/shell/hush.c index f6b50de..0ade2cc 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -9377,7 +9377,18 @@ static int FAST_FUNC builtin_shift(char **argv) int n = 1; argv = skip_dash_dash(argv); if (argv[0]) { - n = atoi(argv[0]); + n = bb_strtou(argv[0], NULL, 10); + if (errno || n < 0) { + /* shared string with ash.c */ + bb_error_msg("Illegal number: %s", argv[0]); + /* + * ash aborts in this case. + * bash prints error message and set $? to 1. + * Interestingly, for "shift 99999" bash does not + * print error message, but does set $? to 1 + * (and does no shifting at all). + */ + } } if (n >= 0 && n < G.global_argc) { if (G_global_args_malloced) { |