From d1252aa55cd804e8fad835a4ad1529858d9ab61d Mon Sep 17 00:00:00 2001 From: gonzo Date: Sat, 2 Dec 2023 13:27:07 +0100 Subject: bugfixes + safety fixes --- main.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 166dbd7..39b5fa4 100644 --- a/main.c +++ b/main.c @@ -9,18 +9,25 @@ static char *read_file_to_buffer(char *filename) { if (fd < 0) return NULL; // if error opening file, return NULLptr size_t bufsize = BS; size_t bufread = 0; - char *buf = (char *)malloc(bufsize); + ssize_t r = 0; + char *buf = (char *)malloc(bufsize+1); char *newbuf = NULL; - while (read(fd, buf + bufread, BS) == BS) { + while ((r = read(fd, buf + bufread, BS)) == BS) { newbuf = (char *)malloc(bufsize + BS); - strncpy(newbuf, buf, bufsize); + memcpy(newbuf, buf, bufsize); free(buf); buf = newbuf; bufsize += BS; bufread += BS; } close(fd); + if (r < 0) { + fprintf(stderr, "Error: error occured while reading file \"%s\".\n", filename); + free(buf); + return NULL; + } + buf[bufread + (size_t)r + 1] = 0; return buf; } -- cgit v1.2.3