Browse Source

Merge branch 'maint-0.2.1' into merge_tmp

Nick Mathewson 16 years ago
parent
commit
14a549552a
4 changed files with 14 additions and 7 deletions
  1. 7 0
      ChangeLog
  2. 3 1
      src/common/util.c
  3. 0 3
      src/or/router.c
  4. 4 3
      src/or/routerlist.c

+ 7 - 0
ChangeLog

@@ -36,6 +36,13 @@ Changes in version 0.2.1.15??? - ????-??-??
       memory right up to the end of a memarea, then realigned the
       memory one step beyond the end.  Fixes a possible cause of bug
       930.
+    - Stop using malloc_usable_size() to use more area than we had
+      actually allocated: it was safe, but made valgrind really
+      unhappy.  Bugfix on 0.2.0.x.
+    - Fix use of freed memory when deciding to mark a non-addable
+      descriptor as never-downloadable.  Bugfix on 0.2.1.9-alpha.
+    - Fix a memory leak when v3 directory authorities load their keys
+      and cert from disk. Bugfix on 0.2.0.1-alpha.
 
 
 Changes in version 0.2.1.14-rc - 2009-04-12

+ 3 - 1
src/common/util.c

@@ -258,7 +258,9 @@ _tor_malloc_roundup(size_t *sizep DMALLOC_PARAMS)
 #ifdef HAVE_MALLOC_GOOD_SIZE
   *sizep = malloc_good_size(*sizep);
   return _tor_malloc(*sizep DMALLOC_FN_ARGS);
-#elif defined(HAVE_MALLOC_USABLE_SIZE) && !defined(USE_DMALLOC)
+#elif 0 && defined(HAVE_MALLOC_USABLE_SIZE) && !defined(USE_DMALLOC)
+  /* Never use malloc_usable_size(); it makes valgrind really unhappy,
+   * and doesn't win much in terms of usable space where it exists. */
   void *result = _tor_malloc(*sizep DMALLOC_FN_ARGS);
   *sizep = malloc_usable_size(result);
   return result;

+ 0 - 3
src/or/router.c

@@ -330,9 +330,6 @@ load_authority_keyset(int legacy, crypto_pk_env_t **key_out,
              "certificate");
     goto done;
   }
-  parsed->cache_info.signed_descriptor_body = cert;
-  parsed->cache_info.signed_descriptor_len = eos-cert;
-  cert = NULL;
 
   if (*key_out)
     crypto_free_pk_env(*key_out);

+ 4 - 3
src/or/routerlist.c

@@ -3513,6 +3513,7 @@ router_load_routers_from_string(const char *s, const char *eos,
 
   SMARTLIST_FOREACH_BEGIN(routers, routerinfo_t *, ri) {
     was_router_added_t r;
+    char d[DIGEST_LEN];
     if (requested_fingerprints) {
       base16_encode(fp, sizeof(fp), descriptor_digests ?
                       ri->cache_info.signed_descriptor_digest :
@@ -3533,6 +3534,7 @@ router_load_routers_from_string(const char *s, const char *eos,
       }
     }
 
+    memcpy(d, ri->cache_info.signed_descriptor_digest, DIGEST_LEN);
     r = router_add_to_routerlist(ri, &msg, from_cache, !from_cache);
     if (WRA_WAS_ADDED(r)) {
       any_changed++;
@@ -3541,11 +3543,10 @@ router_load_routers_from_string(const char *s, const char *eos,
       smartlist_clear(changed);
     } else if (WRA_WAS_REJECTED(r)) {
       download_status_t *dl_status;
-      dl_status = router_get_dl_status_by_descriptor_digest(
-          ri->cache_info.signed_descriptor_digest);
+      dl_status = router_get_dl_status_by_descriptor_digest(d);
       if (dl_status) {
         log_info(LD_GENERAL, "Marking router %s as never downloadable",
-                 hex_str(ri->cache_info.signed_descriptor_digest, DIGEST_LEN));
+                 hex_str(d, DIGEST_LEN));
         download_status_mark_impossible(dl_status);
       }
     }