summaryrefslogtreecommitdiffstats
path: root/src/usbmux.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/usbmux.c')
-rw-r--r--src/usbmux.c11
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;