diff options
author | bpc2003 <wpesfriendnva@gmail.com> | 2025-03-17 14:54:25 -0400 |
---|---|---|
committer | bpc2003 <wpesfriendnva@gmail.com> | 2025-03-17 14:54:25 -0400 |
commit | 67124b97b3af69af0e2eeb82bb751a909f99b245 (patch) | |
tree | 347cb08dffa45a4990681a11faf06119ac787f15 /src | |
parent | f8ad5a7a313070111e9a47195f738740146f71ed (diff) |
Added extra guard clauses to prevent undefined behavior
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/file.c | 7 | ||||
-rw-r--r-- | src/lib/keytab.c | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/file.c b/src/lib/file.c index f170b4e..a6bb035 100644 --- a/src/lib/file.c +++ b/src/lib/file.c @@ -14,8 +14,9 @@ tablist_t *readdb(char *filename) int len = 2; tablist_t *list = calloc(len, sizeof(tablist_t)); list[0].len = len; - FILE *fp = fopen(filename, "rb"); - if (fp == NULL) + FILE *fp; + if (filename == NULL || + (fp = fopen(filename, "rb")) == NULL) return list; int c, i = 0, open = 0; @@ -59,6 +60,8 @@ fail: void writedb(char *filename, tablist_t *list) { FILE *fp = fopen(filename, "wb"); + if (fp == NULL) + return; for (int i = 0; i < list[0].len; ++i) { fputc(0xFB, fp); int *indexes = getkeys(list, i); diff --git a/src/lib/keytab.c b/src/lib/keytab.c index c2842c9..ff32e42 100644 --- a/src/lib/keytab.c +++ b/src/lib/keytab.c @@ -12,6 +12,8 @@ static char **getkv(char *pair); int *getkeys(tablist_t *list, int id) { int len = 2; + if (id >= list[0].len) + return NULL; int *indexes = calloc(len, sizeof(int)); for (int i = 0, j = 0; i < TABLEN; ++i) { if (j >= len) { |