changeset 23912:7fbc99a1481d

purple_url_parse() now gracefully handles a url which is wholly invalid. Previously, if sscanf() failed, it would assign *ret_host to g_strdup()'d garbage. Now it assigns it to NULL. This probably fixes more than a single issue, but specifically it fixes a crash which could occur when querying UPnP on a WR641G router in some situations because the router would lead us to look up the url "/ipc".
author Evan Schoenberg <evan.s@dreskin.net>
date Wed, 27 Aug 2008 02:54:59 +0000
parents dd4df1a209b7
children 58e3b422e595
files libpurple/util.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/util.c	Wed Aug 27 01:43:09 2008 +0000
+++ b/libpurple/util.c	Wed Aug 27 02:54:59 2008 +0000
@@ -3578,7 +3578,10 @@
 		g_snprintf(port_str, sizeof(port_str), "80");
 	}
 
-	if (f == 1)
+	if (f == 0)
+		*host = '\0';
+
+	if (f <= 1)
 		*path = '\0';
 
 	sscanf(port_str, "%d", &port);