diff options
author | Roger Dingledine <arma@torproject.org> | 2004-04-03 00:27:33 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2004-04-03 00:27:33 +0000 |
commit | 06c812c2decf92bbd23e7750a98b4ae6802c3836 (patch) | |
tree | cc69caacaed68e2b9bcc51cd0c555f8eae3c16f3 /src/or | |
parent | 2202c2c7eca9b4ff86fc3f0730af698142739dad (diff) | |
download | tor-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.c | 13 |
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; |