aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lash.c26
-rw-r--r--sh.c26
-rw-r--r--shell/lash.c26
3 files changed, 42 insertions, 36 deletions
diff --git a/lash.c b/lash.c
index 8f19e526a..d321c929b 100644
--- a/lash.c
+++ b/lash.c
@@ -941,20 +941,22 @@ static int expand_arguments(char *command)
return FALSE;
}
- /* Convert from char** (one word per string) to a simple char*,
- * but don't overflow command which is BUFSIZ in length */
- *command = '\0';
- while (i < expand_result.we_wordc && total_length < BUFSIZ) {
- length=strlen(expand_result.we_wordv[i])+1;
- if (BUFSIZ-total_length-length <= 0) {
- error_msg(out_of_space);
- return FALSE;
+ if (expand_result.we_wordc > 0) {
+ /* Convert from char** (one word per string) to a simple char*,
+ * but don't overflow command which is BUFSIZ in length */
+ *command = '\0';
+ while (i < expand_result.we_wordc && total_length < BUFSIZ) {
+ length=strlen(expand_result.we_wordv[i])+1;
+ if (BUFSIZ-total_length-length <= 0) {
+ error_msg(out_of_space);
+ return FALSE;
+ }
+ strcat(command+total_length, expand_result.we_wordv[i++]);
+ strcat(command+total_length, " ");
+ total_length+=length;
}
- strcat(command+total_length, expand_result.we_wordv[i++]);
- strcat(command+total_length, " ");
- total_length+=length;
+ wordfree (&expand_result);
}
- wordfree (&expand_result);
#else
/* Ok. They don't have a recent glibc and they don't have uClibc. Chances
diff --git a/sh.c b/sh.c
index 8f19e526a..d321c929b 100644
--- a/sh.c
+++ b/sh.c
@@ -941,20 +941,22 @@ static int expand_arguments(char *command)
return FALSE;
}
- /* Convert from char** (one word per string) to a simple char*,
- * but don't overflow command which is BUFSIZ in length */
- *command = '\0';
- while (i < expand_result.we_wordc && total_length < BUFSIZ) {
- length=strlen(expand_result.we_wordv[i])+1;
- if (BUFSIZ-total_length-length <= 0) {
- error_msg(out_of_space);
- return FALSE;
+ if (expand_result.we_wordc > 0) {
+ /* Convert from char** (one word per string) to a simple char*,
+ * but don't overflow command which is BUFSIZ in length */
+ *command = '\0';
+ while (i < expand_result.we_wordc && total_length < BUFSIZ) {
+ length=strlen(expand_result.we_wordv[i])+1;
+ if (BUFSIZ-total_length-length <= 0) {
+ error_msg(out_of_space);
+ return FALSE;
+ }
+ strcat(command+total_length, expand_result.we_wordv[i++]);
+ strcat(command+total_length, " ");
+ total_length+=length;
}
- strcat(command+total_length, expand_result.we_wordv[i++]);
- strcat(command+total_length, " ");
- total_length+=length;
+ wordfree (&expand_result);
}
- wordfree (&expand_result);
#else
/* Ok. They don't have a recent glibc and they don't have uClibc. Chances
diff --git a/shell/lash.c b/shell/lash.c
index 8f19e526a..d321c929b 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -941,20 +941,22 @@ static int expand_arguments(char *command)
return FALSE;
}
- /* Convert from char** (one word per string) to a simple char*,
- * but don't overflow command which is BUFSIZ in length */
- *command = '\0';
- while (i < expand_result.we_wordc && total_length < BUFSIZ) {
- length=strlen(expand_result.we_wordv[i])+1;
- if (BUFSIZ-total_length-length <= 0) {
- error_msg(out_of_space);
- return FALSE;
+ if (expand_result.we_wordc > 0) {
+ /* Convert from char** (one word per string) to a simple char*,
+ * but don't overflow command which is BUFSIZ in length */
+ *command = '\0';
+ while (i < expand_result.we_wordc && total_length < BUFSIZ) {
+ length=strlen(expand_result.we_wordv[i])+1;
+ if (BUFSIZ-total_length-length <= 0) {
+ error_msg(out_of_space);
+ return FALSE;
+ }
+ strcat(command+total_length, expand_result.we_wordv[i++]);
+ strcat(command+total_length, " ");
+ total_length+=length;
}
- strcat(command+total_length, expand_result.we_wordv[i++]);
- strcat(command+total_length, " ");
- total_length+=length;
+ wordfree (&expand_result);
}
- wordfree (&expand_result);
#else
/* Ok. They don't have a recent glibc and they don't have uClibc. Chances