diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/file.c | 6 | ||||
-rw-r--r-- | src/lib/keytab.c | 8 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/lib/file.c b/src/lib/file.c index 7e84f46..f170b4e 100644 --- a/src/lib/file.c +++ b/src/lib/file.c @@ -24,14 +24,12 @@ tablist_t *readdb(char *filename) switch (c) { case 250: p = getpair(&c, fp); - if (p == NULL) - goto fail; + if (p == NULL) goto fail; setkey(&list, i, p); free(p); break; case 251: - if (open == 1) - goto fail; + if (open == 1) goto fail; open = 1; break; case 254: diff --git a/src/lib/keytab.c b/src/lib/keytab.c index f8570a0..c2842c9 100644 --- a/src/lib/keytab.c +++ b/src/lib/keytab.c @@ -52,8 +52,10 @@ int setkey(tablist_t **list, int id, char *pair) (*list)[0].len = id + 1; } char **kv = getkv(pair); - if (kv == NULL) + if (kv == NULL) { + free(pair); return 1; + } int idx = hash(kv[0]); while ((*list)[id].tab[idx].key != NULL && @@ -120,8 +122,10 @@ static char **getkv(char *pair) int i = 0; while (pair[i] != ':' && i < strlen(pair)) i++; - if (i >= strlen(pair)) + if (i >= strlen(pair)) { + free(kv); return NULL; + } kv[0] = calloc(i + 1, sizeof(char)); strncpy(kv[0], pair, i); kv[1] = calloc(strlen(pair) - i, sizeof(char)); |