Mercurial > pidgin.yaz
comparison libpurple/protocols/yahoo/yahoo_filexfer.c @ 26634:4bac03b3c0fd
Free the DNS query data before purple_url_parse() to avoid leaking on failure.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 12 Apr 2009 22:25:56 +0000 |
parents | 98d8c336234d |
children | fac90dbe196d b623c1824f29 |
comparison
equal
deleted
inserted
replaced
26633:5d1140b0b10a | 26634:4bac03b3c0fd |
---|---|
1027 xd->port = YAHOOJP_XFER_RELAY_PORT; | 1027 xd->port = YAHOOJP_XFER_RELAY_PORT; |
1028 else | 1028 else |
1029 xd->port = YAHOO_XFER_RELAY_PORT; | 1029 xd->port = YAHOO_XFER_RELAY_PORT; |
1030 | 1030 |
1031 url = g_strdup_printf("%ld.%ld.%ld.%ld", d, c, b, a); | 1031 url = g_strdup_printf("%ld.%ld.%ld.%ld", d, c, b, a); |
1032 if (!purple_url_parse(url, &(xd->host), &(xd->port), &(xd->path), NULL, NULL)) { | 1032 |
1033 purple_xfer_cancel_remote(xfer); | |
1034 g_free(url); | |
1035 return; | |
1036 } | |
1037 g_free(url); | |
1038 /* Free the address... */ | 1033 /* Free the address... */ |
1039 g_free(hosts->data); | 1034 g_free(hosts->data); |
1040 hosts = g_slist_remove(hosts, hosts->data); | 1035 hosts = g_slist_remove(hosts, hosts->data); |
1041 addr = NULL; | 1036 addr = NULL; |
1042 while (hosts != NULL) | 1037 while (hosts != NULL) |
1045 hosts = g_slist_remove(hosts, hosts->data); | 1040 hosts = g_slist_remove(hosts, hosts->data); |
1046 /* Free the address... */ | 1041 /* Free the address... */ |
1047 g_free(hosts->data); | 1042 g_free(hosts->data); |
1048 hosts = g_slist_remove(hosts, hosts->data); | 1043 hosts = g_slist_remove(hosts, hosts->data); |
1049 } | 1044 } |
1045 | |
1046 if (!purple_url_parse(url, &(xd->host), &(xd->port), &(xd->path), NULL, NULL)) { | |
1047 purple_xfer_cancel_remote(xfer); | |
1048 g_free(url); | |
1049 return; | |
1050 } | |
1051 g_free(url); | |
1050 | 1052 |
1051 pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_INFO_15, YAHOO_STATUS_AVAILABLE, yd->session_id); | 1053 pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_INFO_15, YAHOO_STATUS_AVAILABLE, yd->session_id); |
1052 filename = g_path_get_basename(purple_xfer_get_local_filename(xfer)); | 1054 filename = g_path_get_basename(purple_xfer_get_local_filename(xfer)); |
1053 | 1055 |
1054 yahoo_packet_hash(pkt, "ssssis", | 1056 yahoo_packet_hash(pkt, "ssssis", |