Commit 2be52151 authored by Nick Mathewson's avatar Nick Mathewson 🐘
Browse files

Fix a hard-to-trigger memory leak in log_credential status. Found by Coverity scan. CID 349.

svn:r17484
parent ea975dde
Loading
Loading
Loading
Loading
+3 −0
Changes for ChangeLog: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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
+5 −6
Changes for src/common/compat.c: 5 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -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