diff options
| author | 2008-08-12 23:03:00 +0200 | |
|---|---|---|
| committer | 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; | 
