summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2020-09-10 15:12:21 +0200
committerGravatar Nikias Bassen2020-09-10 15:12:21 +0200
commit98056a89648f431759c5fa4ed87c6ea6ba0cdd3f (patch)
tree074d103f38e53b4eaa19eb320ceccd55f1db528c
parentd857a83272d921929ae6ccf1fa70d85768840e84 (diff)
downloadlibimobiledevice-98056a89648f431759c5fa4ed87c6ea6ba0cdd3f.tar.gz
libimobiledevice-98056a89648f431759c5fa4ed87c6ea6ba0cdd3f.tar.bz2
debugserver: Fix service startup for iOS 14b4+
-rw-r--r--include/libimobiledevice/debugserver.h1
-rw-r--r--include/libimobiledevice/lockdown.h1
-rw-r--r--src/debugserver.c11
-rw-r--r--src/lockdown.c5
4 files changed, 15 insertions, 3 deletions
diff --git a/include/libimobiledevice/debugserver.h b/include/libimobiledevice/debugserver.h
index 8ff31fb..ce8176c 100644
--- a/include/libimobiledevice/debugserver.h
+++ b/include/libimobiledevice/debugserver.h
@@ -31,6 +31,7 @@ extern "C" {
31#include <libimobiledevice/lockdown.h> 31#include <libimobiledevice/lockdown.h>
32 32
33#define DEBUGSERVER_SERVICE_NAME "com.apple.debugserver" 33#define DEBUGSERVER_SERVICE_NAME "com.apple.debugserver"
34#define DEBUGSERVER_SECURE_SERVICE_NAME DEBUGSERVER_SERVICE_NAME ".DVTSecureSocketProxy"
34 35
35/** Error Codes */ 36/** Error Codes */
36typedef enum { 37typedef enum {
diff --git a/include/libimobiledevice/lockdown.h b/include/libimobiledevice/lockdown.h
index a660f33..c35e5e9 100644
--- a/include/libimobiledevice/lockdown.h
+++ b/include/libimobiledevice/lockdown.h
@@ -96,6 +96,7 @@ typedef struct lockdownd_pair_record *lockdownd_pair_record_t;
96struct lockdownd_service_descriptor { 96struct lockdownd_service_descriptor {
97 uint16_t port; 97 uint16_t port;
98 uint8_t ssl_enabled; 98 uint8_t ssl_enabled;
99 char* identifier;
99}; 100};
100typedef struct lockdownd_service_descriptor *lockdownd_service_descriptor_t; 101typedef struct lockdownd_service_descriptor *lockdownd_service_descriptor_t;
101 102
diff --git a/src/debugserver.c b/src/debugserver.c
index c517017..cc0e73f 100644
--- a/src/debugserver.c
+++ b/src/debugserver.c
@@ -80,7 +80,10 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_new(idevice_t device
80 debug_info("Creating base service client failed. Error: %i", ret); 80 debug_info("Creating base service client failed. Error: %i", ret);
81 return ret; 81 return ret;
82 } 82 }
83 service_disable_bypass_ssl(parent, 1); 83
84 if (service->identifier && (strcmp(service->identifier, DEBUGSERVER_SECURE_SERVICE_NAME) != 0)) {
85 service_disable_bypass_ssl(parent, 1);
86 }
84 87
85 debugserver_client_t client_loc = (debugserver_client_t) malloc(sizeof(struct debugserver_client_private)); 88 debugserver_client_t client_loc = (debugserver_client_t) malloc(sizeof(struct debugserver_client_private));
86 client_loc->parent = parent; 89 client_loc->parent = parent;
@@ -95,7 +98,11 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_new(idevice_t device
95LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_start_service(idevice_t device, debugserver_client_t * client, const char* label) 98LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_start_service(idevice_t device, debugserver_client_t * client, const char* label)
96{ 99{
97 debugserver_error_t err = DEBUGSERVER_E_UNKNOWN_ERROR; 100 debugserver_error_t err = DEBUGSERVER_E_UNKNOWN_ERROR;
98 service_client_factory_start_service(device, DEBUGSERVER_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err); 101 service_client_factory_start_service(device, DEBUGSERVER_SECURE_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err);
102 if (err != DEBUGSERVER_E_SUCCESS) {
103 err = DEBUGSERVER_E_UNKNOWN_ERROR;
104 service_client_factory_start_service(device, DEBUGSERVER_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err);
105 }
99 return err; 106 return err;
100} 107}
101 108
diff --git a/src/lockdown.c b/src/lockdown.c
index 79353f2..49f757c 100644
--- 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
1307 *service = (lockdownd_service_descriptor_t)malloc(sizeof(struct lockdownd_service_descriptor)); 1307 *service = (lockdownd_service_descriptor_t)malloc(sizeof(struct lockdownd_service_descriptor));
1308 (*service)->port = 0; 1308 (*service)->port = 0;
1309 (*service)->ssl_enabled = 0; 1309 (*service)->ssl_enabled = 0;
1310 (*service)->identifier = strdup(identifier);
1310 1311
1311 /* read service port number */ 1312 /* read service port number */
1312 plist_t node = plist_dict_get_item(dict, "Port"); 1313 plist_t node = plist_dict_get_item(dict, "Port");
@@ -1511,8 +1512,10 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_data_classes_free(char **classe
1511 1512
1512LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor_t service) 1513LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor_t service)
1513{ 1514{
1514 if (service) 1515 if (service) {
1516 free(service->identifier);
1515 free(service); 1517 free(service);
1518 }
1516 1519
1517 return LOCKDOWN_E_SUCCESS; 1520 return LOCKDOWN_E_SUCCESS;
1518} 1521}