aboutsummaryrefslogtreecommitdiffstats
path: root/lib/url.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2008-03-15 16:09:50 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2008-03-15 16:09:50 +0000
commit9ad86bb22e53a40b3ad5bbc57f33d819d2748b0c (patch)
treeb6d51b2b2d2a0d587e6a62ac454344cfaceca32a /lib/url.c
parent7f421d6b922837857d6aca342da314225023eb46 (diff)
Fixed issues with "long" URLs in url.c. Reusing code from 2001 wasn't a
good idea...
Diffstat (limited to 'lib/url.c')
-rw-r--r--lib/url.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/url.c b/lib/url.c
index c6fdc4c8..de9966b4 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -25,13 +25,16 @@
#include "url.h"
-/* Convert an URL to a url_t structure */
+/* Convert an URL to a url_t structure */
int url_set( url_t *url, char *set_url )
{
- char s[MAX_STRING];
+ char s[MAX_STRING+1];
char *i;
- /* protocol:// */
+ memset( url, 0, sizeof( url_t ) );
+ memset( s, 0, sizeof( s ) );
+
+ /* protocol:// */
if( ( i = strstr( set_url, "://" ) ) == NULL )
{
url->proto = PROTO_DEFAULT;
@@ -48,13 +51,12 @@ int url_set( url_t *url, char *set_url )
else if( g_strncasecmp( set_url, "socks5", i - set_url ) == 0 )
url->proto = PROTO_SOCKS5;
else
- {
- return( 0 );
- }
+ return 0;
+
strncpy( s, i + 3, MAX_STRING );
}
- /* Split */
+ /* Split */
if( ( i = strchr( s, '/' ) ) == NULL )
{
strcpy( url->file, "/" );
@@ -66,7 +68,7 @@ int url_set( url_t *url, char *set_url )
}
strncpy( url->host, s, MAX_STRING );
- /* Check for username in host field */
+ /* Check for username in host field */
if( strrchr( url->host, '@' ) != NULL )
{
strncpy( url->user, url->host, MAX_STRING );
@@ -75,19 +77,19 @@ int url_set( url_t *url, char *set_url )
strcpy( url->host, i + 1 );
*url->pass = 0;
}
- /* If not: Fill in defaults */
+ /* If not: Fill in defaults */
else
{
*url->user = *url->pass = 0;
}
- /* Password? */
+ /* Password? */
if( ( i = strchr( url->user, ':' ) ) != NULL )
{
*i = 0;
strcpy( url->pass, i + 1 );
}
- /* Port number? */
+ /* Port number? */
if( ( i = strchr( url->host, ':' ) ) != NULL )
{
*i = 0;