aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2004-04-03 00:27:33 +0000
committerRoger Dingledine <arma@torproject.org>2004-04-03 00:27:33 +0000
commit06c812c2decf92bbd23e7750a98b4ae6802c3836 (patch)
treecc69caacaed68e2b9bcc51cd0c555f8eae3c16f3 /src/or
parent2202c2c7eca9b4ff86fc3f0730af698142739dad (diff)
downloadtor-06c812c2decf92bbd23e7750a98b4ae6802c3836.tar
tor-06c812c2decf92bbd23e7750a98b4ae6802c3836.tar.gz
remember to lower-case the y in y.onion
svn:r1449
Diffstat (limited to 'src/or')
-rw-r--r--src/or/rendcommon.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index ece9c59f2..0a10f022f 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -254,19 +254,26 @@ int rend_cache_store(char *desc, int desc_len)
/* ==== General utility functions for rendezvous. */
/* If address is of the form "y.onion" with a well-formed handle y,
- * then put a '\0' after y and return 0.
+ * then put a '\0' after y, lower-case it, and return 0.
* Else return -1 and change nothing.
*/
int rend_parse_rendezvous_address(char *address) {
char *s;
+ char query[REND_SERVICE_ID_LEN+1];
s = strchr(address,'.');
if(!s) return -1; /* no dot */
- if(strcmp(s+1,"onion")) return -1; /* not .onion */
+ if(strcasecmp(s+1,"onion")) return -1; /* not .onion */
*s = 0; /* null terminate it */
- if(rend_valid_service_id(address))
+ if(strlcpy(query, address, REND_SERVICE_ID_LEN+1) >= REND_SERVICE_ID_LEN+1)
+ goto failed;
+ tor_strlower(query);
+ if(rend_valid_service_id(query)) {
+ tor_strlower(address);
return 0; /* success */
+ }
+failed:
/* otherwise, return to previous state and return -1 */
*s = '.';
return -1;