[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r16422: Some improvements to parsing the HiddenServiceAuthorizeClien (tor/branches/121-hs-authorization/src/or)



Author: kloesing
Date: 2008-08-05 10:17:53 -0400 (Tue, 05 Aug 2008)
New Revision: 16422

Modified:
   tor/branches/121-hs-authorization/src/or/rendservice.c
   tor/branches/121-hs-authorization/src/or/routerparse.c
Log:
Some improvements to parsing the HiddenServiceAuthorizeClient option.

Modified: tor/branches/121-hs-authorization/src/or/rendservice.c
===================================================================
--- tor/branches/121-hs-authorization/src/or/rendservice.c	2008-08-05 14:14:45 UTC (rev 16421)
+++ tor/branches/121-hs-authorization/src/or/rendservice.c	2008-08-05 14:17:53 UTC (rev 16422)
@@ -406,7 +406,7 @@
       }
       clients = smartlist_create();
       smartlist_split_string(clients, smartlist_get(type_names_split, 1),
-                             ",", SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
+                             ",", SPLIT_SKIP_SPACE, 0);
       SMARTLIST_FOREACH(type_names_split, char *, cp, tor_free(cp));
       smartlist_free(type_names_split);
       if ((service->auth_type == 1 && smartlist_len(clients) > 512) ||
@@ -427,17 +427,26 @@
         rend_authorized_client_t *client;
         size_t len = strlen(client_name);
         int found_duplicate = 0;
-        if (len < 1 || len > 19 ||
-            strspn(client_name, REND_LEGAL_CLIENTNAME_CHARACTERS) != len) {
+        if (len < 1 || len > 19) {
           log_warn(LD_CONFIG, "HiddenServiceAuthorizeClient contains an "
-                   "illegal client name: '%s'. (Length must be between 1 "
-                   "and 19, and valid characters are [A-Za-z0-9+-_].)",
+                              "illegal client name: '%s'. Length must be "
+                              "between 1 and 19 characters.",
                    client_name);
           SMARTLIST_FOREACH(clients, char *, cp, tor_free(cp));
           smartlist_free(clients);
           rend_service_free(service);
           return -1;
         }
+        if (strspn(client_name, REND_LEGAL_CLIENTNAME_CHARACTERS) != len) {
+          log_warn(LD_CONFIG, "HiddenServiceAuthorizeClient contains an "
+                              "illegal client name: '%s'. Valid "
+                              "characters are [A-Za-z0-9+-_].",
+                   client_name);
+          SMARTLIST_FOREACH(clients, char *, cp, tor_free(cp));
+          smartlist_free(clients);
+          rend_service_free(service);
+          return -1;
+        }
         /* Check if client name is duplicate. */
         SMARTLIST_FOREACH(service->clients, rend_authorized_client_t *, c, {
           if (!strcmp(c->client_name, client_name)) {
@@ -452,6 +461,7 @@
         client = tor_malloc_zero(sizeof(rend_authorized_client_t));
         client->client_name = strdup(client_name);
         smartlist_add(service->clients, client);
+        log_debug(LD_REND, "Adding client name '%s'", client_name);
       });
       SMARTLIST_FOREACH(clients, char *, cp, tor_free(cp));
       smartlist_free(clients);

Modified: tor/branches/121-hs-authorization/src/or/routerparse.c
===================================================================
--- tor/branches/121-hs-authorization/src/or/routerparse.c	2008-08-05 14:14:45 UTC (rev 16421)
+++ tor/branches/121-hs-authorization/src/or/routerparse.c	2008-08-05 14:17:53 UTC (rev 16422)
@@ -3770,7 +3770,7 @@
   directory_token_t *tok;
   const char *current_entry = NULL;
   memarea_t *area = NULL;
-  if (!ckstr)
+  if (!ckstr || strlen(ckstr) == 0)
     return -1;
   tokens = smartlist_create();
   /* Begin parsing with first entry, skipping comments or whitespace at the