[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r17484: {tor} Fix a hard-to-trigger memory leak in log_credential status. (in tor/trunk: . src/common)
Author: nickm
Date: 2008-12-04 20:29:59 -0500 (Thu, 04 Dec 2008)
New Revision: 17484
Modified:
tor/trunk/ChangeLog
tor/trunk/src/common/compat.c
Log:
Fix a hard-to-trigger memory leak in log_credential status. Found by Coverity scan. CID 349.
Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog 2008-12-04 19:39:03 UTC (rev 17483)
+++ tor/trunk/ChangeLog 2008-12-05 01:29:59 UTC (rev 17484)
@@ -34,6 +34,9 @@
- 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
Modified: tor/trunk/src/common/compat.c
===================================================================
--- tor/trunk/src/common/compat.c 2008-12-04 19:39:03 UTC (rev 17483)
+++ tor/trunk/src/common/compat.c 2008-12-05 01:29:59 UTC (rev 17484)
@@ -1049,17 +1049,17 @@
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 @@
});
smartlist_free(elts);
- if (formatting_error)
- return -1;
+ return retval;
}
#endif