aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2011-05-17 19:51:53 -0400
committerNick Mathewson <nickm@torproject.org>2011-05-17 19:51:53 -0400
commitbc89ef0ca8164f9e6e23e73c01bdb4257fdbce7c (patch)
treeadeb21790fdf248942455db89a6d0bd2f9050394
parent21ed575826e701437f7893536ffc5c8d2a71532f (diff)
parent9674fe7e2fdafdc7db7fac737c9e668b2a5e989a (diff)
downloadtor-bc89ef0ca8164f9e6e23e73c01bdb4257fdbce7c.tar.gz
tor-bc89ef0ca8164f9e6e23e73c01bdb4257fdbce7c.zip
Merge branch 'bug2752' into maint-0.2.2
-rw-r--r--changes/bug27525
-rw-r--r--src/or/config.c8
-rw-r--r--src/or/connection.c13
3 files changed, 20 insertions, 6 deletions
diff --git a/changes/bug2752 b/changes/bug2752
new file mode 100644
index 0000000000..b872d3374a
--- /dev/null
+++ b/changes/bug2752
@@ -0,0 +1,5 @@
+ o Minor features:
+ - Tor used to limit HttpProxyAuthenticator values to 48 characters.
+ Changed the limit to 512 characters by removing base64 newlines.
+ Fixes bug 2752. Fix by Michael Yakubovich.
+
diff --git a/src/or/config.c b/src/or/config.c
index 614fc48c3e..36a8940cab 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3398,8 +3398,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->HTTPProxyAuthenticator) {
- if (strlen(options->HTTPProxyAuthenticator) >= 48)
- REJECT("HTTPProxyAuthenticator is too long (>= 48 chars).");
+ if (strlen(options->HTTPProxyAuthenticator) >= 512)
+ REJECT("HTTPProxyAuthenticator is too long (>= 512 chars).");
}
if (options->HTTPSProxy) { /* parse it now */
@@ -3412,8 +3412,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->HTTPSProxyAuthenticator) {
- if (strlen(options->HTTPSProxyAuthenticator) >= 48)
- REJECT("HTTPSProxyAuthenticator is too long (>= 48 chars).");
+ if (strlen(options->HTTPSProxyAuthenticator) >= 512)
+ REJECT("HTTPSProxyAuthenticator is too long (>= 512 chars).");
}
if (options->Socks4Proxy) { /* parse it now */
diff --git a/src/or/connection.c b/src/or/connection.c
index 5054909df9..bcdde67568 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -3232,8 +3232,17 @@ alloc_http_authenticator(const char *authenticator)
authenticator, authenticator_length) < 0) {
tor_free(base64_authenticator); /* free and set to null */
} else {
- /* remove extra \n at end of encoding */
- base64_authenticator[strlen(base64_authenticator) - 1] = 0;
+ int i = 0, j = 0;
+ int len = strlen(base64_authenticator);
+
+ /* remove all newline occurrences within the string */
+ for (i=0; i < len; ++i) {
+ if ('\n' != base64_authenticator[i]) {
+ base64_authenticator[j] = base64_authenticator[i];
+ ++j;
+ }
+ }
+ base64_authenticator[j]='\0';
}
return base64_authenticator;
}