]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Permit an empty "bridge-ips" line when parsing bridge stats.
authorKarsten Loesing <karsten.loesing@gmx.net>
Fri, 18 Dec 2009 12:29:51 +0000 (13:29 +0100)
committerKarsten Loesing <karsten.loesing@gmx.net>
Fri, 18 Dec 2009 12:29:51 +0000 (13:29 +0100)
src/or/geoip.c

index d99e472118303b0b8182c4f8bb28d052436f3bbf..45dc8cf3441f8fc204f209f7f31c06f900e450b4 100644 (file)
@@ -1102,6 +1102,7 @@ parse_bridge_stats_controller(const char *stats_str, time_t now)
 
   const char *BRIDGE_STATS_END = "bridge-stats-end ";
   const char *BRIDGE_IPS = "bridge-ips ";
+  const char *BRIDGE_IPS_EMPTY_LINE = "bridge-ips\n";
   const char *tmp;
   time_t stats_end_time;
   size_t controller_len;
@@ -1130,17 +1131,21 @@ parse_bridge_stats_controller(const char *stats_str, time_t now)
 
   /* Parse: "bridge-ips CC=N,CC=N,..." */
   tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS);
-  if (!tmp)
-    return NULL;
-  tmp += strlen(BRIDGE_IPS);
-
-  tmp = eat_whitespace_no_nl(tmp);
-
-  eol = strchr(tmp, '\n');
-  if (eol)
-    summary = tor_strndup(tmp, eol-tmp);
-  else
-    summary = tor_strdup(tmp);
+  if (tmp) {
+    tmp += strlen(BRIDGE_IPS);
+    tmp = eat_whitespace_no_nl(tmp);
+    eol = strchr(tmp, '\n');
+    if (eol)
+      summary = tor_strndup(tmp, eol-tmp);
+    else
+      summary = tor_strdup(tmp);
+  } else {
+    /* Look if there is an empty "bridge-ips" line */
+    tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS_EMPTY_LINE);
+    if (!tmp)
+      return NULL;
+    summary = tor_strdup("");
+  }
 
   controller_len = strlen("TimeStarted=\"\" CountrySummary=") +
                           strlen(summary) + 42;