]> granicus.if.org Git - transmission/commitdiff
#934: remove invalid tracker addresses
authorCharles Kerr <charles@transmissionbt.com>
Wed, 21 May 2008 20:56:12 +0000 (20:56 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Wed, 21 May 2008 20:56:12 +0000 (20:56 +0000)
libtransmission/utils.c

index ff0d946371d2196ed6c6d1a09f41e04692d061b2..e61edf3b87d5fcd4aa4942650c939eaaba100de8 100644 (file)
@@ -954,6 +954,20 @@ tr_sha1_to_hex( char * out, const uint8_t * sha1 )
 int
 tr_httpIsValidURL( const char * url )
 {
+    const char * c;
+    static const char * rfc2396_valid_chars =
+        "abcdefghijklmnopqrstuvwxyz" /* lowalpha */
+        "ABCDEFGHIJKLMNOPQRSTUVWXYZ" /* upalpha */
+        "0123456789"                 /* digit */
+        "-_.!~*'()"                  /* mark */
+        ";/?:@&=+$,"                 /* reserved */
+        "<>#%<\""                    /* delims */
+        "{}|\\^[]`";                 /* unwise */
+
+    for( c=url; c && *c; ++c )
+        if( !strchr( rfc2396_valid_chars, *c ) )
+            return FALSE;
+
     return !tr_httpParseURL( url, -1, NULL, NULL, NULL );
 }