(trunk libT) add a string length argument to tr_urlIsValid()

This commit is contained in:
Charles Kerr
2010-08-21 12:47:28 +00:00
parent 94ea77a014
commit 2d5ac5b150
3 changed files with 13 additions and 9 deletions

View File

@@ -877,7 +877,7 @@ on_drag_data_received( GtkWidget * widget UNUSED,
filenames = g_slist_append( filenames, g_strdup( filename ) );
success = TRUE;
}
else if( tr_urlIsValid( uri ) )
else if( tr_urlIsValid( uri, -1 ) )
{
tr_core_add_from_url( data->core, uri );
success = TRUE;

View File

@@ -919,9 +919,10 @@ tr_hex_to_sha1( uint8_t * out, const char * in )
***/
static tr_bool
isValidURLChars( const char * url )
isValidURLChars( const char * url, int url_len )
{
const char * c;
const char * end;
static const char * rfc2396_valid_chars =
"abcdefghijklmnopqrstuvwxyz" /* lowalpha */
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" /* upalpha */
@@ -934,7 +935,7 @@ isValidURLChars( const char * url )
if( url == NULL )
return FALSE;
for( c = url; c && *c; ++c )
for( c=url, end=c+url_len; c && *c && c!=end; ++c )
if( !strchr( rfc2396_valid_chars, *c ) )
return FALSE;
@@ -947,9 +948,10 @@ tr_urlIsValidTracker( const char * url )
{
tr_bool valid;
char * scheme = NULL;
const int len = url ? strlen(url) : 0;
valid = isValidURLChars( url )
&& !tr_urlParse( url, -1, &scheme, NULL, NULL, NULL )
valid = isValidURLChars( url, len )
&& !tr_urlParse( url, len, &scheme, NULL, NULL, NULL )
&& ( scheme != NULL )
&& ( !strcmp(scheme,"http") || !strcmp(scheme,"https") );
@@ -959,13 +961,15 @@ tr_urlIsValidTracker( const char * url )
/** @brief return TRUE if the url is a http or https or ftp or sftp url that Transmission understands */
tr_bool
tr_urlIsValid( const char * url )
tr_urlIsValid( const char * url, int url_len )
{
tr_bool valid;
char * scheme = NULL;
if( ( url_len < 0 ) && ( url != NULL ) )
url_len = strlen( url );
valid = isValidURLChars( url )
&& !tr_urlParse( url, -1, &scheme, NULL, NULL, NULL )
valid = isValidURLChars( url, url_len )
&& !tr_urlParse( url, url_len, &scheme, NULL, NULL, NULL )
&& ( scheme != NULL )
&& ( !strcmp(scheme,"http") || !strcmp(scheme,"https") || !strcmp(scheme,"ftp") || !strcmp(scheme,"sftp") );

View File

@@ -449,7 +449,7 @@ tr_bool tr_addressIsIP( const char * address );
tr_bool tr_urlIsValidTracker( const char * url ) TR_GNUC_NONNULL(1);
/** @brief return TRUE if the url is a [ http, https, ftp, ftps ] url that Transmission understands */
tr_bool tr_urlIsValid( const char * url ) TR_GNUC_NONNULL(1);
tr_bool tr_urlIsValid( const char * url, int url_len ) TR_GNUC_NONNULL(1);
/** @brief parse a URL into its component parts
@return zero on success or an error number if an error occurred */