mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
(trunk libT) add a string length argument to tr_urlIsValid()
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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") );
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user