diff options
author | Christophe Fergeau | 2008-08-12 23:03:00 +0200 |
---|---|---|
committer | Jonathan Beck | 2008-08-21 19:01:35 +0200 |
commit | ae11cc812ed4e4ec011a960b77973e66a8694d10 (patch) | |
tree | f4c08288e04875bf511d53e6e74dc9c26517d4c3 /src/usbmux.c | |
parent | f526a360da6aba9a015a1685db03d587ab7c4dbe (diff) | |
download | libplist-ae11cc812ed4e4ec011a960b77973e66a8694d10.tar.gz libplist-ae11cc812ed4e4ec011a960b77973e66a8694d10.tar.bz2 |
Don't leak "response" in mux_connect
Diffstat (limited to 'src/usbmux.c')
-rw-r--r-- | src/usbmux.c | 11 |
1 files 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; |