Don't segfault if the first word is the empty string.
authorMatt Kraai <kraai@debian.org>
Wed, 2 May 2001 14:48:48 +0000 (14:48 -0000)
committerMatt Kraai <kraai@debian.org>
Wed, 2 May 2001 14:48:48 +0000 (14:48 -0000)
hush.c
shell/hush.c

diff --git a/hush.c b/hush.c
index 2e65f0b6db3d08e24274ebaf7a52db52c4a4bb36..9134251f52e7b2a597a8bae7b38ca2d037a443c0 100644 (file)
--- a/hush.c
+++ b/hush.c
@@ -1298,7 +1298,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
        int cnt, pathc;
        const char *s;
        char *dest;
-       for (cnt=1, s=src; *s; s++) {
+       for (cnt=1, s=src; s && *s; s++) {
                if (*s == '\\') s++;
                cnt++;
        }
@@ -1315,7 +1315,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
        if (pglob->gl_pathv == NULL) return GLOB_NOSPACE;
        pglob->gl_pathv[pathc-1]=dest;
        pglob->gl_pathv[pathc]=NULL;
-       for (s=src; *s; s++, dest++) {
+       for (s=src; s && *s; s++, dest++) {
                if (*s == '\\') s++;
                *dest = *s;
        }
@@ -1482,6 +1482,8 @@ int reserved_word(o_string *dest, struct p_context *ctx)
                { "done",  RES_DONE,  FLAG_END  }
        };
        struct reserved_combo *r;
+       if (dest->data == NULL)
+               return 0;
        for (r=reserved_list;
 #define NRES sizeof(reserved_list)/sizeof(struct reserved_combo)
                r<reserved_list+NRES; r++) {
index 2e65f0b6db3d08e24274ebaf7a52db52c4a4bb36..9134251f52e7b2a597a8bae7b38ca2d037a443c0 100644 (file)
@@ -1298,7 +1298,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
        int cnt, pathc;
        const char *s;
        char *dest;
-       for (cnt=1, s=src; *s; s++) {
+       for (cnt=1, s=src; s && *s; s++) {
                if (*s == '\\') s++;
                cnt++;
        }
@@ -1315,7 +1315,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
        if (pglob->gl_pathv == NULL) return GLOB_NOSPACE;
        pglob->gl_pathv[pathc-1]=dest;
        pglob->gl_pathv[pathc]=NULL;
-       for (s=src; *s; s++, dest++) {
+       for (s=src; s && *s; s++, dest++) {
                if (*s == '\\') s++;
                *dest = *s;
        }
@@ -1482,6 +1482,8 @@ int reserved_word(o_string *dest, struct p_context *ctx)
                { "done",  RES_DONE,  FLAG_END  }
        };
        struct reserved_combo *r;
+       if (dest->data == NULL)
+               return 0;
        for (r=reserved_list;
 #define NRES sizeof(reserved_list)/sizeof(struct reserved_combo)
                r<reserved_list+NRES; r++) {