summaryrefslogtreecommitdiff
path: root/tools/mkenvimage.c
diff options
context:
space:
mode:
authorAlexander Dahl <ada@thorsis.com>2018-04-20 15:29:31 +0200
committerTom Rini <trini@konsulko.com>2018-04-28 18:32:24 -0400
commitc3b115f4b7b05203da4233463a4fb87fa9c267ac (patch)
tree44a4abd470789a87f9048694b5a23077e664c354 /tools/mkenvimage.c
parent3559028cb2840cc283652f4b7e4e1b457e6ec6a5 (diff)
downloadu-boot-c3b115f4b7b05203da4233463a4fb87fa9c267ac.tar.gz
tools: mkenvimage: Fix possible segfault on stdin input
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>
Diffstat (limited to 'tools/mkenvimage.c')
-rw-r--r--tools/mkenvimage.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/mkenvimage.c b/tools/mkenvimage.c
index 716cb73a5c..8cd9ffa1c6 100644
--- a/tools/mkenvimage.c
+++ b/tools/mkenvimage.c
@@ -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;