From a1dcdad14fb3a8ccdc97e86cb3aa25684778819c Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Wed, 18 Nov 2015 23:21:33 +0100 Subject: Bail out before allocating slides if file is empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In load() we allocated slides before checking if we actually read anything from the FILE fp and then continue with an allocated but “empty” space wich would lead to errors. --- sent.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'sent.c') diff --git a/sent.c b/sent.c index f7cadb6..baf6d4f 100644 --- a/sent.c +++ b/sent.c @@ -413,10 +413,6 @@ void load(FILE *fp) /* read each line from fp and add it to the item list */ while (1) { - if ((slidecount+1) * sizeof(*slides) >= size) - if (!(slides = realloc(slides, (size += BUFSIZ)))) - die("cannot realloc %u bytes:", size); - /* eat consecutive empty lines */ while ((p = fgets(buf, sizeof(buf), fp))) if (strcmp(buf, "\n") != 0 && buf[0] != '#') @@ -424,6 +420,10 @@ void load(FILE *fp) if (!p) break; + if ((slidecount+1) * sizeof(*slides) >= size) + if (!(slides = realloc(slides, (size += BUFSIZ)))) + die("cannot realloc %u bytes:", size); + /* read one slide */ maxlines = 0; memset((s = &slides[slidecount]), 0, sizeof(Slide)); -- cgit v1.2.3