Merge branch 'maint-0.2.1' into merge_tmp

This commit is contained in:
Nick Mathewson 2009-05-17 02:11:34 -04:00
commit 14a549552a
4 changed files with 14 additions and 7 deletions

View File

@ -36,6 +36,13 @@ Changes in version 0.2.1.15??? - ????-??-??
memory right up to the end of a memarea, then realigned the memory right up to the end of a memarea, then realigned the
memory one step beyond the end. Fixes a possible cause of bug memory one step beyond the end. Fixes a possible cause of bug
930. 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 Changes in version 0.2.1.14-rc - 2009-04-12

View File

@ -258,7 +258,9 @@ _tor_malloc_roundup(size_t *sizep DMALLOC_PARAMS)
#ifdef HAVE_MALLOC_GOOD_SIZE #ifdef HAVE_MALLOC_GOOD_SIZE
*sizep = malloc_good_size(*sizep); *sizep = malloc_good_size(*sizep);
return _tor_malloc(*sizep DMALLOC_FN_ARGS); 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); void *result = _tor_malloc(*sizep DMALLOC_FN_ARGS);
*sizep = malloc_usable_size(result); *sizep = malloc_usable_size(result);
return result; return result;

View File

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

View File

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