aboutsummaryrefslogtreecommitdiffstats
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
parent493d0a47dd319c29863b95491cddd02fe640d76e (diff)
downloadorg-to-conky-d1252aa55cd804e8fad835a4ad1529858d9ab61d.tar.gz
bugfixes + safety fixesHEADmaster
-rw-r--r--date.c19
-rw-r--r--main.c13
2 files changed, 19 insertions, 13 deletions
diff --git a/date.c b/date.c
index ebee121..885a67f 100644
--- a/date.c
+++ b/date.c
@@ -106,29 +106,28 @@ void print_date(Date date) {
char *print_date_to_string(Date date) {
char *ret = (char *)calloc(16, 1);
char *wd = weekday_to_string(date.weekday);
- sprintf(ret, "%s %i/%i/%i",
- wd,
- date.month, date.day, date.year);
+ snprintf(ret, 15, "%s %i/%i/%i",
+ wd,
+ date.month, date.day, date.year);
return ret;
}
char *short_date_to_string(Date date) {
char *ret = (char *)calloc(16, 1);
- sprintf(ret, "%i/%i/%i",
- date.month, date.day, date.year);
+ snprintf(ret, 15, "%i/%i/%i",
+ date.month, date.day, date.year);
return ret;
}
Date today(void) {
Date ret;
time_t tm;
- struct tm localtm;
- struct tm *ltm = &localtm;
+ struct tm *ltm;
- time(&tm);
- ltm = localtime(&tm);
+ time(&tm);
+ ltm = localtime(&tm);
- ret = extract_date(ltm);
+ ret = extract_date(ltm);
return ret;
}
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;
}