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",