diff --git a/changes/bug17401 b/changes/bug17401 new file mode 100644 index 0000000000..a22f79c431 --- /dev/null +++ b/changes/bug17401 @@ -0,0 +1,3 @@ + o Major bugfixes (correctness): + - Fix a use-after-free bug in validate_intro_point_failure(). + Fixes bug 17401; bugfix on 0.2.7.3-rc. diff --git a/src/or/rendcache.c b/src/or/rendcache.c index a75028e7f7..e377e9ad81 100644 --- a/src/or/rendcache.c +++ b/src/or/rendcache.c @@ -418,8 +418,8 @@ validate_intro_point_failure(const rend_service_descriptor_t *desc, SMARTLIST_DEL_CURRENT(desc->intro_nodes, intro); /* Keep it for our new entry. */ digestmap_set(new_entry->intro_failures, (char *) identity, ent_dup); + /* Only free it when we're done looking at it. */ rend_intro_point_free(intro); - continue; } } SMARTLIST_FOREACH_END(intro);