]> git.sur5r.net Git - u-boot/commitdiff
tools: mkenvimage: Fix possible segfault on stdin input
authorAlexander Dahl <ada@thorsis.com>
Fri, 20 Apr 2018 13:29:31 +0000 (15:29 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 28 Apr 2018 22:32:24 +0000 (18:32 -0400)
The size of 'filebuf' was not increased as more and more bytes are read
from stdin, but 'filebuf' was always reallocated to the same fix size.
This works as long as only less bytes than the initial buffer size come
in, for more input this will segfault. (It actually does, I tested
that.) So for each loop cycle the buffer size has to be increased by the
number of bytes we want to read.

Signed-off-by: Alexander Dahl <ada@thorsis.com>
tools/mkenvimage.c

index 716cb73a5c63b70d18943e0e9629eb22d9c5965b..8cd9ffa1c6a5f4386e4449446958f612b832b638 100644 (file)
@@ -162,7 +162,7 @@ int main(int argc, char **argv)
                txt_fd = STDIN_FILENO;
 
                do {
-                       filebuf = realloc(filebuf, readlen);
+                       filebuf = realloc(filebuf, filesize + readlen);
                        if (!filebuf) {
                                fprintf(stderr, "Can't realloc memory for the input file buffer\n");
                                return EXIT_FAILURE;