diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-12-05 01:29:59 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-12-05 01:29:59 +0000 |
commit | 2be52151816dbec0d9548362775c9bc5de46372e (patch) | |
tree | 8ba2236245e77b681f42684b70bc866c548035d6 | |
parent | ea975ddeee9a33fd410afedfd15c10159a2aa834 (diff) | |
download | tor-2be52151816dbec0d9548362775c9bc5de46372e.tar tor-2be52151816dbec0d9548362775c9bc5de46372e.tar.gz |
Fix a hard-to-trigger memory leak in log_credential status. Found by Coverity scan. CID 349.
svn:r17484
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/common/compat.c | 11 |
2 files changed, 8 insertions, 6 deletions
@@ -34,6 +34,9 @@ Changes in version 0.2.1.8-alpha - 2008-??-?? - Correct handling of possible malformed authority signing key certificates with internal signature types. Fixes bug 880. Bugfix on 0.2.0.3-alpha. + - Fix a hard-to-trigger resource leak when logging credential status. + CID 349. + - o Minor features: - Report the case where all signatures in a detached set are rejected diff --git a/src/common/compat.c b/src/common/compat.c index fcc57f60d..9ce5885dc 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -1049,17 +1049,17 @@ log_credential_status(void) strerror(errno)); return -1; } else { - int i; + int i, retval = 0; char *strgid; char *s = NULL; - int formatting_error = 0; smartlist_t *elts = smartlist_create(); for (i = 0; i<ngids; i++) { strgid = tor_malloc(11); - if (tor_snprintf(strgid, 11, "%u", (unsigned)sup_gids[i]) == -1) { + if (tor_snprintf(strgid, 11, "%u", (unsigned)sup_gids[i]) < 0) { log_warn(LD_GENERAL, "Error printing supplementary GIDs"); - formatting_error = 1; + tor_free(strgid); + retval = -1; goto error; } smartlist_add(elts, strgid); @@ -1077,8 +1077,7 @@ log_credential_status(void) }); smartlist_free(elts); - if (formatting_error) - return -1; + return retval; } #endif |