[tor-commits] [tor/master] Fix crash on HUP with mixed ephemeral services

nickm at torproject.org nickm at torproject.org
Mon May 18 15:56:42 UTC 2015


commit 6f9e90101e64040bda38c34de884f3d996677ac9
Author: John Brooks <john.brooks at dereferenced.net>
Date:   Sat May 16 19:50:18 2015 -0600

    Fix crash on HUP with mixed ephemeral services
    
    Ephemeral services will be listed in rend_services_list at the end of
    rend_config_services, so it must check whether directory is non-NULL
    before comparing.
    
    This crash happens when reloading config on a tor with mixed configured
    and ephemeral services.
    
    Fixes bug #16060. Bugfix on 0.2.7.1-alpha.
---
 changes/bug16060     |    4 ++++
 src/or/rendservice.c |    3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/changes/bug16060 b/changes/bug16060
new file mode 100644
index 0000000..eb0b50f
--- /dev/null
+++ b/changes/bug16060
@@ -0,0 +1,4 @@
+  o Minor bugfixes (hidden service):
+    - Fix a crash when reloading configuration while at least one
+      configured and one ephemeral hidden service exists. Fixes bug 16060;
+      bugfix on 0.2.7.1-alpha.
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index e170760..daca4cc 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -709,7 +709,8 @@ rend_config_services(const or_options_t *options, int validate_only)
      * probably ok? */
     SMARTLIST_FOREACH_BEGIN(rend_service_list, rend_service_t *, new) {
       SMARTLIST_FOREACH_BEGIN(old_service_list, rend_service_t *, old) {
-        if (!strcmp(old->directory, new->directory)) {
+        if (new->directory && old->directory &&
+            !strcmp(old->directory, new->directory)) {
           smartlist_add_all(new->intro_nodes, old->intro_nodes);
           smartlist_clear(old->intro_nodes);
           smartlist_add(surviving_services, old);





More information about the tor-commits mailing list