diff options
author | Jakob Kaivo <jkk@ung.org> | 2019-03-15 12:42:34 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2019-03-15 12:42:34 -0400 |
commit | 4f02abda506190ca020f7758a2177aa6c5035c64 (patch) | |
tree | f97c2fbdf3e08ab7bdd9b0f4035d7b69976b17de /parse.c | |
parent | c4593efbced8d1d5cae004975f6bd7b91904810c (diff) |
really don't crash on empty input
Diffstat (limited to 'parse.c')
-rw-r--r-- | parse.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -17,6 +17,8 @@ * */ +#define _XOPEN_SOURCE 700 + #include "sh.h" #include <ctype.h> #include <errno.h> @@ -63,12 +65,17 @@ struct command *sh_parse(const char *cmdline) start++; } - char *end = l + strlen(l) - 1; + char *end = l + strlen(l); while (isspace(*end) && end > start) { *end = '\0'; end--; } + if (end <= start) { + free(l); + return NULL; + } + struct command *cmd = calloc(1, sizeof(*cmd)); if (cmd == NULL) { /* TODO: should probably crash here */ |