Don't segfault if the first word is the empty string.
This commit is contained in:
parent
e67c3ce327
commit
f162e7d09d
6
hush.c
6
hush.c
@ -1298,7 +1298,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
|
|||||||
int cnt, pathc;
|
int cnt, pathc;
|
||||||
const char *s;
|
const char *s;
|
||||||
char *dest;
|
char *dest;
|
||||||
for (cnt=1, s=src; *s; s++) {
|
for (cnt=1, s=src; s && *s; s++) {
|
||||||
if (*s == '\\') s++;
|
if (*s == '\\') s++;
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
@ -1315,7 +1315,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
|
|||||||
if (pglob->gl_pathv == NULL) return GLOB_NOSPACE;
|
if (pglob->gl_pathv == NULL) return GLOB_NOSPACE;
|
||||||
pglob->gl_pathv[pathc-1]=dest;
|
pglob->gl_pathv[pathc-1]=dest;
|
||||||
pglob->gl_pathv[pathc]=NULL;
|
pglob->gl_pathv[pathc]=NULL;
|
||||||
for (s=src; *s; s++, dest++) {
|
for (s=src; s && *s; s++, dest++) {
|
||||||
if (*s == '\\') s++;
|
if (*s == '\\') s++;
|
||||||
*dest = *s;
|
*dest = *s;
|
||||||
}
|
}
|
||||||
@ -1482,6 +1482,8 @@ int reserved_word(o_string *dest, struct p_context *ctx)
|
|||||||
{ "done", RES_DONE, FLAG_END }
|
{ "done", RES_DONE, FLAG_END }
|
||||||
};
|
};
|
||||||
struct reserved_combo *r;
|
struct reserved_combo *r;
|
||||||
|
if (dest->data == NULL)
|
||||||
|
return 0;
|
||||||
for (r=reserved_list;
|
for (r=reserved_list;
|
||||||
#define NRES sizeof(reserved_list)/sizeof(struct reserved_combo)
|
#define NRES sizeof(reserved_list)/sizeof(struct reserved_combo)
|
||||||
r<reserved_list+NRES; r++) {
|
r<reserved_list+NRES; r++) {
|
||||||
|
@ -1298,7 +1298,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
|
|||||||
int cnt, pathc;
|
int cnt, pathc;
|
||||||
const char *s;
|
const char *s;
|
||||||
char *dest;
|
char *dest;
|
||||||
for (cnt=1, s=src; *s; s++) {
|
for (cnt=1, s=src; s && *s; s++) {
|
||||||
if (*s == '\\') s++;
|
if (*s == '\\') s++;
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
@ -1315,7 +1315,7 @@ static int globhack(const char *src, int flags, glob_t *pglob)
|
|||||||
if (pglob->gl_pathv == NULL) return GLOB_NOSPACE;
|
if (pglob->gl_pathv == NULL) return GLOB_NOSPACE;
|
||||||
pglob->gl_pathv[pathc-1]=dest;
|
pglob->gl_pathv[pathc-1]=dest;
|
||||||
pglob->gl_pathv[pathc]=NULL;
|
pglob->gl_pathv[pathc]=NULL;
|
||||||
for (s=src; *s; s++, dest++) {
|
for (s=src; s && *s; s++, dest++) {
|
||||||
if (*s == '\\') s++;
|
if (*s == '\\') s++;
|
||||||
*dest = *s;
|
*dest = *s;
|
||||||
}
|
}
|
||||||
@ -1482,6 +1482,8 @@ int reserved_word(o_string *dest, struct p_context *ctx)
|
|||||||
{ "done", RES_DONE, FLAG_END }
|
{ "done", RES_DONE, FLAG_END }
|
||||||
};
|
};
|
||||||
struct reserved_combo *r;
|
struct reserved_combo *r;
|
||||||
|
if (dest->data == NULL)
|
||||||
|
return 0;
|
||||||
for (r=reserved_list;
|
for (r=reserved_list;
|
||||||
#define NRES sizeof(reserved_list)/sizeof(struct reserved_combo)
|
#define NRES sizeof(reserved_list)/sizeof(struct reserved_combo)
|
||||||
r<reserved_list+NRES; r++) {
|
r<reserved_list+NRES; r++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user