[or-cvs] r17484: {tor} Fix a hard-to-trigger memory leak in log_credential status. (in tor/trunk: . src/common)

nickm at seul.org nickm at seul.org
Fri Dec 5 01:29:59 UTC 2008


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
 



More information about the tor-commits mailing list