From 29649762b3602f4ce54ca8bb282524e5f1a92b92 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Fri, 8 May 2015 17:10:39 +0200 Subject: [PATCH] libutil/getlines: fix potential crash linelen was uninitialized if for example: $ > empty $ sort ls.c empty --- libutil/getlines.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libutil/getlines.c b/libutil/getlines.c index 3a4d0f4..9842d2b 100644 --- a/libutil/getlines.c +++ b/libutil/getlines.c @@ -10,7 +10,7 @@ void getlines(FILE *fp, struct linebuf *b) { char *line = NULL; - size_t size = 0, linelen; + size_t size = 0, linelen = 0; ssize_t len; while ((len = getline(&line, &size, fp)) > 0) { @@ -22,7 +22,7 @@ getlines(FILE *fp, struct linebuf *b) b->lines[b->nlines - 1] = memcpy(emalloc(linelen + 1), line, linelen + 1); } free(line); - if (b->lines && b->nlines && b->lines[b->nlines - 1][linelen - 1] != '\n') { + if (b->lines && b->nlines && linelen && b->lines[b->nlines - 1][linelen - 1] != '\n') { b->lines[b->nlines - 1] = erealloc(b->lines[b->nlines - 1], linelen + 2); b->lines[b->nlines - 1][linelen] = '\n'; b->lines[b->nlines - 1][linelen + 1] = '\0';