From 5c83f45bc6a25e91df8d07277fe964641564fbb4 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Thu, 20 Feb 2020 10:54:10 +0100 Subject: [PATCH] Fix memory leak when realloc() fails --- kitty/graphics.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kitty/graphics.c b/kitty/graphics.c index 960dd77fd..310ade96f 100644 --- a/kitty/graphics.c +++ b/kitty/graphics.c @@ -260,10 +260,12 @@ png_path_to_bitmap(const char* path, uint8_t** data, unsigned int* width, unsign while (!feof(fp)) { if (pos - capacity < 1024) { capacity *= 2; - buf = realloc(buf, capacity); - if (!buf) { + unsigned char *new_buf = realloc(buf, capacity); + if (!new_buf) { + free(buf); log_error("Out of memory reading PNG file at: %s", path); fclose(fp); return false; } + buf = new_buf; } pos += fread(buf + pos, sizeof(char), capacity - pos, fp); int saved_errno = errno;