summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-06-05 12:02:22 -0400
committerNick Mathewson <nickm@torproject.org>2017-06-05 12:02:22 -0400
commitf875cd712491a96b72f7b3c3273cbc04923d7c91 (patch)
treeb9f6e8375754ccc8bee21fbcae182c2b68318cf7
parenta4d5ce435768e1946d1e23e3f77f446c7717e997 (diff)
parentd75be189df970f0da3a59f649e3be9c5d57868c6 (diff)
downloadtor-f875cd712491a96b72f7b3c3273cbc04923d7c91.tar.gz
tor-f875cd712491a96b72f7b3c3273cbc04923d7c91.zip
Merge branch 'maint-0.2.9' into release-0.2.9
-rw-r--r--changes/bug224903
-rw-r--r--src/or/geoip.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/changes/bug22490 b/changes/bug22490
new file mode 100644
index 0000000000..244dd50b36
--- /dev/null
+++ b/changes/bug22490
@@ -0,0 +1,3 @@
+ o Minor bugfixes (correctness):
+ - Avoid undefined behavior when parsing IPv6 entries from the geoip6
+ file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
diff --git a/src/or/geoip.c b/src/or/geoip.c
index ba65dfe56c..00c055bbe7 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -162,6 +162,7 @@ geoip_parse_entry(const char *line, sa_family_t family)
if (*line == '#')
return 0;
+ char buf[512];
if (family == AF_INET) {
unsigned int low, high;
if (tor_sscanf(line,"%u,%u,%2s", &low, &high, c) == 3 ||
@@ -172,7 +173,6 @@ geoip_parse_entry(const char *line, sa_family_t family)
goto fail;
country = c;
} else { /* AF_INET6 */
- char buf[512];
char *low_str, *high_str;
struct in6_addr low, high;
char *strtok_state;