Mercurial > pidgin
changeset 28294:578b4048a501
More tightly scope a variable and avoid trying to free an unset variable.
Patch from Brian Lu. Closes #10242.
committer: Paul Aurich <paul@darkrain42.org>
author | brian.lu@sun.com |
---|---|
date | Fri, 25 Sep 2009 03:39:35 +0000 |
parents | c42d5c23a9e8 |
children | a143b7fcff4c |
files | COPYRIGHT ChangeLog libpurple/dnsquery.c |
diffstat | 3 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Thu Sep 24 16:58:31 2009 +0000 +++ b/COPYRIGHT Fri Sep 25 03:39:35 2009 +0000 @@ -275,6 +275,7 @@ Lokheed Norberto Lopes Shlomi Loubaton +Brian Lu Uli Luckas Matthew Luckie Marcus Lundblad
--- a/ChangeLog Thu Sep 24 16:58:31 2009 +0000 +++ b/ChangeLog Fri Sep 25 03:39:35 2009 +0000 @@ -10,6 +10,8 @@ General: * New 'plugins' sub-command to 'debug' command (i.e. '/debug plugins') to announce the list of loaded plugins (in both Finch and Pidgin). + * Fix a crash when performing DNS queries on Unixes that use the + blocking DNS lookups. (Brian Lu) version 2.6.2 (09/05/2009): libpurple:
--- a/libpurple/dnsquery.c Thu Sep 24 16:58:31 2009 +0000 +++ b/libpurple/dnsquery.c Fri Sep 25 03:39:35 2009 +0000 @@ -918,7 +918,6 @@ PurpleDnsQueryData *query_data; struct sockaddr_in sin; GSList *hosts = NULL; - char *hostname; query_data = data; query_data->timeout = 0; @@ -931,6 +930,7 @@ if (!inet_aton(query_data->hostname, &sin.sin_addr)) { struct hostent *hp; + gchar *hostname; #ifdef USE_IDN if (!dns_str_is_ascii(query_data->hostname)) { int ret = purple_network_convert_idn_to_ascii(query_data->hostname, @@ -956,11 +956,11 @@ memset(&sin, 0, sizeof(struct sockaddr_in)); memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length); sin.sin_family = hp->h_addrtype; + g_free(hostname); } else sin.sin_family = AF_INET; sin.sin_port = htons(query_data->port); - g_free(hostname); hosts = g_slist_append(hosts, GINT_TO_POINTER(sizeof(sin))); hosts = g_slist_append(hosts, g_memdup(&sin, sizeof(sin)));