summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2014-03-24 03:07:19 +0100
committerGravatar Nikias Bassen2014-03-24 03:07:19 +0100
commit4e4dec264adcc1b847808663205d44b84168481f (patch)
treea026d611234934e9aced8e00b47ec0a95aab749c
parent5c7ff87fe9df54e97ae18c9a92138f7b2115c20a (diff)
downloadlibusbmuxd-4e4dec264adcc1b847808663205d44b84168481f.tar.gz
libusbmuxd-4e4dec264adcc1b847808663205d44b84168481f.tar.bz2
Improve error checking around usbmuxd_get_result()
-rw-r--r--src/libusbmuxd.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c
index 6a6b3e6..2d27ba3 100644
--- a/src/libusbmuxd.c
+++ b/src/libusbmuxd.c
@@ -287,10 +287,10 @@ static int usbmuxd_get_result(int sfd, uint32_t tag, uint32_t *result, void **re
}
if ((recv_len = receive_packet(sfd, &hdr, (void**)&res, 5000)) < 0) {
- DEBUG(1, "%s: Error receiving packet: %d\n", __func__, errno);
+ DEBUG(1, "%s: Error receiving packet: %d\n", __func__, recv_len);
if (res)
free(res);
- return -errno;
+ return recv_len;
}
if ((size_t)recv_len < sizeof(hdr)) {
DEBUG(1, "%s: Received packet is too small!\n", __func__);
@@ -594,7 +594,7 @@ retry:
socket_close(sfd);
return -1;
}
- if (usbmuxd_get_result(sfd, tag, &res, NULL) && (res != 0)) {
+ if ((usbmuxd_get_result(sfd, tag, &res, NULL) == 1) && (res != 0)) {
socket_close(sfd);
if ((res == RESULT_BADVERSION) && (proto_version == 1)) {
proto_version = 0;
@@ -603,7 +603,6 @@ retry:
DEBUG(1, "%s: ERROR: did not get OK but %d\n", __func__, res);
return -1;
}
-
return sfd;
}
@@ -818,7 +817,7 @@ retry:
if ((proto_version == 1) && (try_list_devices)) {
if (send_list_devices_packet(sfd, tag) > 0) {
plist_t list = NULL;
- if (usbmuxd_get_result(sfd, tag, &res, &list) && (res == 0)) {
+ if ((usbmuxd_get_result(sfd, tag, &res, &list) == 1) && (res == 0)) {
plist_t devlist = plist_dict_get_item(list, "DeviceList");
if (devlist && plist_get_node_type(devlist) == PLIST_ARRAY) {
collection_init(&tmpdevs);
@@ -857,7 +856,7 @@ retry:
if (send_listen_packet(sfd, tag) > 0) {
res = -1;
// get response
- if (usbmuxd_get_result(sfd, tag, &res, NULL) && (res == 0)) {
+ if ((usbmuxd_get_result(sfd, tag, &res, NULL) == 1) && (res == 0)) {
listen_success = 1;
} else {
socket_close(sfd);
@@ -1006,7 +1005,7 @@ retry:
} else {
// read ACK
DEBUG(2, "%s: Reading connect result...\n", __func__);
- if (usbmuxd_get_result(sfd, tag, &res, NULL)) {
+ if (usbmuxd_get_result(sfd, tag, &res, NULL) == 1) {
if (res == 0) {
DEBUG(2, "%s: Connect success!\n", __func__);
connected = 1;
@@ -1100,12 +1099,13 @@ int usbmuxd_read_buid(char **buid)
} else {
uint32_t rc = 0;
plist_t pl = NULL;
- if (usbmuxd_get_result(sfd, tag, &rc, &pl) && (rc == 0)) {
+ ret = usbmuxd_get_result(sfd, tag, &rc, &pl);
+ if ((ret == 1) && (rc == 0)) {
plist_t node = plist_dict_get_item(pl, "BUID");
if (node && plist_get_node_type(node) == PLIST_STRING) {
plist_get_string_val(node, buid);
}
- } else {
+ } else if (ret == 1) {
ret = -(int)rc;
}
plist_free(pl);
@@ -1141,7 +1141,8 @@ int usbmuxd_read_pair_record(const char* record_id, char **record_data, uint32_t
} else {
uint32_t rc = 0;
plist_t pl = NULL;
- if (usbmuxd_get_result(sfd, tag, &rc, &pl) && (rc == 0)) {
+ ret = usbmuxd_get_result(sfd, tag, &rc, &pl);
+ if ((ret == 1) && (rc == 0)) {
plist_t node = plist_dict_get_item(pl, "PairRecordData");
if (node && plist_get_node_type(node) == PLIST_DATA) {
uint64_t int64val = 0;
@@ -1151,7 +1152,7 @@ int usbmuxd_read_pair_record(const char* record_id, char **record_data, uint32_t
ret = 0;
}
}
- } else {
+ } else if (ret == 1) {
ret = -(int)rc;
}
plist_free(pl);
@@ -1185,9 +1186,10 @@ int usbmuxd_save_pair_record(const char* record_id, const char *record_data, uin
DEBUG(1, "%s: Error sending SavePairRecord message!\n", __func__);
} else {
uint32_t rc = 0;
- if (usbmuxd_get_result(sfd, tag, &rc, NULL) && (rc == 0)) {
+ ret = usbmuxd_get_result(sfd, tag, &rc, NULL);
+ if ((ret == 1) && (rc == 0)) {
ret = 0;
- } else {
+ } else if (ret == 1) {
ret = -(int)rc;
DEBUG(1, "%s: Error: saving pair record failed: %d\n", __func__, ret);
}
@@ -1221,9 +1223,10 @@ int usbmuxd_delete_pair_record(const char* record_id)
DEBUG(1, "%s: Error sending DeletePairRecord message!\n", __func__);
} else {
uint32_t rc = 0;
- if (usbmuxd_get_result(sfd, tag, &rc, NULL) && (rc == 0)) {
+ ret = usbmuxd_get_result(sfd, tag, &rc, NULL);
+ if ((ret == 1) && (rc == 0)) {
ret = 0;
- } else {
+ } else if (ret == 1) {
ret = -(int)rc;
DEBUG(1, "%s: Error: deleting pair record failed: %d\n", __func__, ret);
}