diff options
author | EuAndreh <eu@euandre.org> | 2021-03-07 00:56:08 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-03-07 00:56:30 -0300 |
commit | 28793da65ef9784d6a03bd07e758c962ccd29ee3 (patch) | |
tree | 7e6d92c7bd26e2ddaeea12620c6a527e1309f10c /src/remembering.c | |
parent | Makefile: Add missing -lfallible library (diff) | |
download | remembering-28793da65ef9784d6a03bd07e758c962ccd29ee3.tar.gz remembering-28793da65ef9784d6a03bd07e758c962ccd29ee3.tar.xz |
src/remembering.c: Fix memory errors
Diffstat (limited to 'src/remembering.c')
-rw-r--r-- | src/remembering.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/remembering.c b/src/remembering.c index 95f08ef..f61ff01 100644 --- a/src/remembering.c +++ b/src/remembering.c @@ -253,11 +253,12 @@ static void rankings_test() { { testing("struct Rankings expands its size when needed"); struct Rankings *r = rankings_new(); + if (!r) { + exit(EXIT_FAILURE); + } size_t some_limit = RANKINGS_INITIAL_SIZE + 1; int ret; for (size_t i = 0; i < some_limit; i++) { - ret = rankings_insert(r, strdup("some string"), i); - /* char *s = strdup("some string"); ret = rankings_insert(r, s, i); if (ret) { @@ -265,7 +266,6 @@ static void rankings_test() { rankings_free(r); exit(EXIT_FAILURE); } - */ } assert(r->size == RANKINGS_INITIAL_SIZE * RANKINGS_GROWTH_MULTIPLIER); @@ -278,6 +278,9 @@ static void rankings_test() { { testing("an empty Rankings doesn't leak"); struct Rankings *r = rankings_new(); + if (!r) { + exit(EXIT_FAILURE); + } assert(r->size == RANKINGS_INITIAL_SIZE); assert(r->count == 0); @@ -300,13 +303,17 @@ int parse_ranked_line(FILE *stream, const char *entry, char **value, } int rank_strlen = value_substr - entry; - char *rank_str = malloc(rank_strlen + 1); - strncpy(rank_str, entry, rank_strlen); - rank_str[rank_strlen] = '\0'; + char *rank_str = strndup(entry, rank_strlen); + if (!rank_str) { + return -1; + } *rank = atoi(rank_str); free(rank_str); *value = malloc(strlen(value_substr) + 1); + if (!*value) { + return -1; + } strcpy(*value, entry + (rank_strlen + 1 /* RANKING_DELIMITER */)); return 0; @@ -599,7 +606,7 @@ int main(int argc, char *argv[]) { int ret; char *command; char *profile; - if (ret = get_options(argc, argv, &command, &profile)) { + if ((ret = get_options(argc, argv, &command, &profile))) { goto err; expand_profile_name("oijoI"); } |