From ae11cc812ed4e4ec011a960b77973e66a8694d10 Mon Sep 17 00:00:00 2001 From: Christophe Fergeau Date: Tue, 12 Aug 2008 23:03:00 +0200 Subject: Don't leak "response" in mux_connect --- src/usbmux.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/usbmux.c b/src/usbmux.c index 511bb01..a71439d 100644 --- a/src/usbmux.c +++ b/src/usbmux.c @@ -122,8 +122,6 @@ usbmux_connection *mux_connect(iPhone *phone, uint16 s_port, uint16 d_port) { // Initialize connection stuff usbmux_connection *new_connection = (usbmux_connection*)malloc(sizeof(usbmux_connection)); new_connection->header = new_mux_packet(s_port, d_port); - usbmux_tcp_header *response; - response = (usbmux_tcp_header*)malloc(sizeof(usbmux_tcp_header)); // blargg if (new_connection && new_connection->header) { new_connection->header->tcp_flags = 0x02; @@ -131,9 +129,14 @@ usbmux_connection *mux_connect(iPhone *phone, uint16 s_port, uint16 d_port) { new_connection->header->length16 = htons(new_connection->header->length16); if (send_to_phone(phone, (char*)new_connection->header, sizeof(usbmux_tcp_header)) >= 0) { + usbmux_tcp_header *response; + response = (usbmux_tcp_header*)malloc(sizeof(usbmux_tcp_header)); bytes = recv_from_phone(phone, (char*)response, sizeof(*response)); - if (response->tcp_flags != 0x12) return NULL; - else { + if (response->tcp_flags != 0x12) { + free(response); + return NULL; + } else { + free(response); if (debug) printf("mux_connect: connection success\n"); new_connection->header->tcp_flags = 0x10; new_connection->header->scnt = 1; -- cgit v1.1-32-gdbae