aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorgonzo <gonzo@toniatuh.com>2023-12-02 13:27:07 +0100
committergonzo <gonzo@toniatuh.com>2023-12-12 11:06:05 +0100
commitd1252aa55cd804e8fad835a4ad1529858d9ab61d (patch)
treeaac179af15f3fd56699a5816e55fecf7c8afc4f4 /main.c
parent493d0a47dd319c29863b95491cddd02fe640d76e (diff)
downloadorg-to-conky-d1252aa55cd804e8fad835a4ad1529858d9ab61d.tar.gz
bugfixes + safety fixesHEADmaster
Diffstat (limited to 'main.c')
-rw-r--r--main.c13
1 files changed, 10 insertions, 3 deletions
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;
}