diff --git a/libs/libimobiledevice/Makefile b/libs/libimobiledevice/Makefile index 84a56ccec..b1528c9ec 100644 --- a/libs/libimobiledevice/Makefile +++ b/libs/libimobiledevice/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libimobiledevice PKG_VERSION:=1.3.0 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads diff --git a/libs/libimobiledevice/patches/100-ios14.patch b/libs/libimobiledevice/patches/100-ios14.patch new file mode 100644 index 000000000..cd9502856 --- /dev/null +++ b/libs/libimobiledevice/patches/100-ios14.patch @@ -0,0 +1,21 @@ +From b5d575c118ecfc2afcb12739433e916527182327 Mon Sep 17 00:00:00 2001 +From: Nikias Bassen +Date: Fri, 7 Aug 2020 00:50:46 +0200 +Subject: [PATCH] mobilebackup2: Set DeviceLink version to 400 to support iOS + 14b4+ + +--- + src/mobilebackup2.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/mobilebackup2.c ++++ b/src/mobilebackup2.c +@@ -30,7 +30,7 @@ + #include "device_link_service.h" + #include "common/debug.h" + +-#define MBACKUP2_VERSION_INT1 300 ++#define MBACKUP2_VERSION_INT1 400 + #define MBACKUP2_VERSION_INT2 0 + + #define IS_FLAG_SET(x, y) ((x & y) == y) diff --git a/libs/libimobiledevice/patches/110-iOS14.patch b/libs/libimobiledevice/patches/110-iOS14.patch new file mode 100644 index 000000000..d4d1b4c12 --- /dev/null +++ b/libs/libimobiledevice/patches/110-iOS14.patch @@ -0,0 +1,21 @@ +From d857a83272d921929ae6ccf1fa70d85768840e84 Mon Sep 17 00:00:00 2001 +From: Nikias Bassen +Date: Mon, 10 Aug 2020 15:39:56 +0200 +Subject: [PATCH] screenshotr: Set DeviceLink version to 400 to support iOS + 14b4+ + +--- + src/screenshotr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/screenshotr.c ++++ b/src/screenshotr.c +@@ -30,7 +30,7 @@ + #include "device_link_service.h" + #include "common/debug.h" + +-#define SCREENSHOTR_VERSION_INT1 300 ++#define SCREENSHOTR_VERSION_INT1 400 + #define SCREENSHOTR_VERSION_INT2 0 + + /** diff --git a/libs/libimobiledevice/patches/120-iOS14.patch b/libs/libimobiledevice/patches/120-iOS14.patch new file mode 100644 index 000000000..9b981c88e --- /dev/null +++ b/libs/libimobiledevice/patches/120-iOS14.patch @@ -0,0 +1,81 @@ +From 98056a89648f431759c5fa4ed87c6ea6ba0cdd3f Mon Sep 17 00:00:00 2001 +From: Nikias Bassen +Date: Thu, 10 Sep 2020 15:12:21 +0200 +Subject: [PATCH] debugserver: Fix service startup for iOS 14b4+ + +--- + include/libimobiledevice/debugserver.h | 1 + + include/libimobiledevice/lockdown.h | 1 + + src/debugserver.c | 11 +++++++++-- + src/lockdown.c | 5 ++++- + 4 files changed, 15 insertions(+), 3 deletions(-) + +--- a/include/libimobiledevice/debugserver.h ++++ b/include/libimobiledevice/debugserver.h +@@ -31,6 +31,7 @@ extern "C" { + #include + + #define DEBUGSERVER_SERVICE_NAME "com.apple.debugserver" ++#define DEBUGSERVER_SECURE_SERVICE_NAME DEBUGSERVER_SERVICE_NAME ".DVTSecureSocketProxy" + + /** Error Codes */ + typedef enum { +--- a/include/libimobiledevice/lockdown.h ++++ b/include/libimobiledevice/lockdown.h +@@ -96,6 +96,7 @@ typedef struct lockdownd_pair_record *lockdownd_pair_record_t; + struct lockdownd_service_descriptor { + uint16_t port; + uint8_t ssl_enabled; ++ char* identifier; + }; + typedef struct lockdownd_service_descriptor *lockdownd_service_descriptor_t; + +--- a/src/debugserver.c ++++ b/src/debugserver.c +@@ -80,7 +80,10 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_new(idevice_t device + debug_info("Creating base service client failed. Error: %i", ret); + return ret; + } +- service_disable_bypass_ssl(parent, 1); ++ ++ if (service->identifier && (strcmp(service->identifier, DEBUGSERVER_SECURE_SERVICE_NAME) != 0)) { ++ service_disable_bypass_ssl(parent, 1); ++ } + + debugserver_client_t client_loc = (debugserver_client_t) malloc(sizeof(struct debugserver_client_private)); + client_loc->parent = parent; +@@ -95,7 +98,11 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_new(idevice_t device + LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_start_service(idevice_t device, debugserver_client_t * client, const char* label) + { + debugserver_error_t err = DEBUGSERVER_E_UNKNOWN_ERROR; +- service_client_factory_start_service(device, DEBUGSERVER_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err); ++ service_client_factory_start_service(device, DEBUGSERVER_SECURE_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err); ++ if (err != DEBUGSERVER_E_SUCCESS) { ++ err = DEBUGSERVER_E_UNKNOWN_ERROR; ++ service_client_factory_start_service(device, DEBUGSERVER_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err); ++ } + return err; + } + +--- a/src/lockdown.c ++++ b/src/lockdown.c +@@ -1307,6 +1307,7 @@ static lockdownd_error_t lockdownd_do_start_service(lockdownd_client_t client, c + *service = (lockdownd_service_descriptor_t)malloc(sizeof(struct lockdownd_service_descriptor)); + (*service)->port = 0; + (*service)->ssl_enabled = 0; ++ (*service)->identifier = strdup(identifier); + + /* read service port number */ + plist_t node = plist_dict_get_item(dict, "Port"); +@@ -1511,8 +1512,10 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_data_classes_free(char **classe + + LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor_t service) + { +- if (service) ++ if (service) { ++ free(service->identifier); + free(service); ++ } + + return LOCKDOWN_E_SUCCESS; + }