summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christophe Fergeau2008-08-12 22:01:18 +0200
committerGravatar Jonathan Beck2008-08-21 18:58:17 +0200
commit0496edd88632b0bf83a78bbf5f665569f5b71e1a (patch)
tree57af5ead86b0430228b13f6439bcd74bb6af710e
parent877fd5089abaa58273c6b251f9ca30c4303e3632 (diff)
downloadlibimobiledevice-0496edd88632b0bf83a78bbf5f665569f5b71e1a.tar.gz
libimobiledevice-0496edd88632b0bf83a78bbf5f665569f5b71e1a.tar.bz2
Don't leak "version" in get_iPhone
-rw-r--r--src/iphone.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/iphone.c b/src/iphone.c
index 2bdb5c8..ecbb751 100644
--- a/src/iphone.c
+++ b/src/iphone.c
@@ -36,7 +36,6 @@ extern int debug;
*/
iPhone *get_iPhone() {
iPhone *phone = (iPhone*)malloc(sizeof(iPhone));
- usbmux_version_header *version = version_header();
struct usb_bus *bus, *busses;
struct usb_device *dev;
@@ -79,6 +78,7 @@ iPhone *get_iPhone() {
// Send the version command to the phone
int bytes = 0;
+ usbmux_version_header *version = version_header();
bytes = usb_bulk_write(phone->device, BULKOUT, (char*)version, sizeof(*version), 800);
if (bytes < 20 && debug) {
fprintf(stderr, "get_iPhone(): libusb did NOT send enough!\n");
@@ -93,6 +93,7 @@ iPhone *get_iPhone() {
// Check for bad response
if (bytes < 20) {
+ free(version);
free_iPhone(phone);
free(version);
if (debug) fprintf(stderr, "get_iPhone(): Invalid version message -- header too short.\n");
@@ -114,7 +115,6 @@ iPhone *get_iPhone() {
if (debug) fprintf(stderr, "get_iPhone(): Received a bad header/invalid version number.");
return NULL;
}
-
// If it got to this point it's gotta be bad
if (debug) fprintf(stderr, "get_iPhone(): Unknown error.\n");