diff options
author | Roger Dingledine <arma@torproject.org> | 2017-05-25 00:27:08 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2017-05-25 00:27:08 -0400 |
commit | a4d5ce435768e1946d1e23e3f77f446c7717e997 (patch) | |
tree | 7bb8238b070b5124fa910ef7c3fd0b091e3ddb94 | |
parent | 54bfbc08ce2d756c3f40549dd9e7ae4222e34c20 (diff) | |
parent | ec61ae59a5d009a9e80f3bfa9a2aa5f5dfa05551 (diff) | |
download | tor-a4d5ce435768e1946d1e23e3f77f446c7717e997.tar.gz tor-a4d5ce435768e1946d1e23e3f77f446c7717e997.zip |
Merge branch 'maint-0.2.9' into release-0.2.9
-rw-r--r-- | changes/bug22370 | 4 | ||||
-rw-r--r-- | src/or/dirserv.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/changes/bug22370 b/changes/bug22370 new file mode 100644 index 0000000000..e0e87e3339 --- /dev/null +++ b/changes/bug22370 @@ -0,0 +1,4 @@ + o Minor bugfixes (memory handling): + - When directory authorities reject a router descriptor due to keypinning, + free the router descriptor rather than leaking the memory. + Fixes bug 22370; bugfix on 0.2.7.2-alpha. diff --git a/src/or/dirserv.c b/src/or/dirserv.c index fedbe51b4c..72441081c4 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -626,7 +626,11 @@ dirserv_add_multiple_descriptors(const char *desc, uint8_t purpose, * passed back to the origin of this descriptor, or NULL if there is no such * message. Use <b>source</b> to produce better log messages. * - * Return the status of the operation + * If <b>ri</b> is not added to the list of server descriptors, free it. + * That means the caller must not access <b>ri</b> after this function + * returns, since it might have been freed. + * + * Return the status of the operation. * * This function is only called when fresh descriptors are posted, not when * we re-load the cache. @@ -699,6 +703,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source) "its key did not match an older RSA/Ed25519 keypair", router_describe(ri), source); *msg = "Looks like your keypair does not match its older value."; + routerinfo_free(ri); return ROUTER_AUTHDIR_REJECTS; } |