el_gets returns NULL if it fails to read any characters (due to EOF or
errors occurred). strdup will crash if it is fed a NULL string, so
check the return value to avoid segfaulting.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
}
if (inputstacksize == 1) {
- line = xstrdup(el_gets(el, &count));
- if (line) {
- if (count > 0)
- line[count-1] = '\0';
- if (*line) {
- history(hist, &hevent, H_ENTER, line);
- logprintf("%s", line);
- }
+ const char *cmd;
+
+ cmd = el_gets(el, &count);
+ if (!cmd)
+ return NULL;
+
+ line = xstrdup(cmd);
+ if (!line)
+ return NULL;
+
+ if (count > 0)
+ line[count-1] = '\0';
+ if (*line) {
+ history(hist, &hevent, H_ENTER, line);
+ logprintf("%s", line);
}
} else {
line = fetchline_internal();