From 1365bb786155439041b7777d31bcfadb5276e824 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sat, 10 Mar 2001 07:12:12 +0000 Subject: [PATCH] When using wordexp, only try to use the expand command when something actually got expanded. Skip it otherwise. -Erik --- lash.c | 26 ++++++++++++++------------ sh.c | 26 ++++++++++++++------------ shell/lash.c | 26 ++++++++++++++------------ 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