From 78c9c736ab13caec3f6c1032e39200fed5580f50 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 29 Sep 2016 01:44:17 +0200 Subject: [PATCH] hush: fix 'eval ""' handling Signed-off-by: Denys Vlasenko --- shell/ash_test/ash-misc/eval2.right | 3 +++ shell/ash_test/ash-misc/eval2.tests | 4 ++++ shell/hush.c | 2 +- shell/hush_test/hush-misc/eval2.right | 3 +++ shell/hush_test/hush-misc/eval2.tests | 4 ++++ 5 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 shell/ash_test/ash-misc/eval2.right create mode 100755 shell/ash_test/ash-misc/eval2.tests create mode 100644 shell/hush_test/hush-misc/eval2.right create mode 100755 shell/hush_test/hush-misc/eval2.tests diff --git a/shell/ash_test/ash-misc/eval2.right b/shell/ash_test/ash-misc/eval2.right new file mode 100644 index 000000000..a7ce6ccc7 --- /dev/null +++ b/shell/ash_test/ash-misc/eval2.right @@ -0,0 +1,3 @@ +Zero:0 +Zero:0 +Zero:0 diff --git a/shell/ash_test/ash-misc/eval2.tests b/shell/ash_test/ash-misc/eval2.tests new file mode 100755 index 000000000..6bfb87aa7 --- /dev/null +++ b/shell/ash_test/ash-misc/eval2.tests @@ -0,0 +1,4 @@ +false; eval; echo Zero:$? +false; eval ""; echo Zero:$? +false; eval " +"; echo Zero:$? diff --git a/shell/hush.c b/shell/hush.c index 5698de686..d7d152c10 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -5679,7 +5679,7 @@ static char* expand_strvec_to_string(char **argv) n++; } } - overlapping_strcpy((char*)list, list[0]); + overlapping_strcpy((char*)list, list[0] ? list[0] : ""); debug_printf_expand("strvec_to_string='%s'\n", (char*)list); return (char*)list; } diff --git a/shell/hush_test/hush-misc/eval2.right b/shell/hush_test/hush-misc/eval2.right new file mode 100644 index 000000000..a7ce6ccc7 --- /dev/null +++ b/shell/hush_test/hush-misc/eval2.right @@ -0,0 +1,3 @@ +Zero:0 +Zero:0 +Zero:0 diff --git a/shell/hush_test/hush-misc/eval2.tests b/shell/hush_test/hush-misc/eval2.tests new file mode 100755 index 000000000..6bfb87aa7 --- /dev/null +++ b/shell/hush_test/hush-misc/eval2.tests @@ -0,0 +1,4 @@ +false; eval; echo Zero:$? +false; eval ""; echo Zero:$? +false; eval " +"; echo Zero:$?