Bail out before allocating slides if file is empty
authorQuentin Rameau <quinq+hackers@fifth.space>
Wed, 18 Nov 2015 22:21:33 +0000 (23:21 +0100)
committerMarkus Teich <markus.teich@stusta.mhn.de>
Wed, 18 Nov 2015 22:26:33 +0000 (23:26 +0100)
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

diff --git a/sent.c b/sent.c
index f7cadb630e0051e1d494dd06e2c2e8f80b39280f..baf6d4ff925e3001d03c9ff19284ebffe773821e 100644 (file)
--- 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));