Message ID | 158904177769.982835.13533960280738735171.stgit@magnolia (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | xfsprogs: random fixes | expand |
On Sat, May 09, 2020 at 09:29:37AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > 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. Didn't I review this already? Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/libxcmd/input.c b/libxcmd/input.c index 137856e3..a4548d7c 100644 --- a/libxcmd/input.c +++ b/libxcmd/input.c @@ -47,6 +47,7 @@ fetchline(void) static EditLine *el; static History *hist; HistEvent hevent; + const char *cmd; char *line; int count; @@ -59,13 +60,18 @@ fetchline(void) el_set(el, EL_PROMPT, el_get_prompt); el_set(el, EL_HIST, history, (const char *)hist); } - line = strdup(el_gets(el, &count)); - if (line) { - if (count > 0) - line[count-1] = '\0'; - if (*line) - history(hist, &hevent, H_ENTER, line); - } + cmd = el_gets(el, &count); + if (!cmd) + return NULL; + + line = strdup(cmd); + if (!line) + return NULL; + + if (count > 0) + line[count-1] = '\0'; + if (*line) + history(hist, &hevent, H_ENTER, line); return line; } #else