summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2009-07-10 19:01:09 +0200
committerGravatar Matt Colyer2009-07-18 10:39:42 -0700
commit5fa071717799ee2424c41b62360c7122b104fefb (patch)
tree51896d237e6768902d33c776204530bf78d60fff
parentb8ce722ffaeab22e141e18907c46bbed4659d857 (diff)
downloadlibimobiledevice-5fa071717799ee2424c41b62360c7122b104fefb.tar.gz
libimobiledevice-5fa071717799ee2424c41b62360c7122b104fefb.tar.bz2
Use new plist_copy instead of serialization workaround in lockdownd_et_value()
-rw-r--r--dev/lckdclient.c7
-rw-r--r--src/lockdown.c12
2 files changed, 5 insertions, 14 deletions
diff --git a/dev/lckdclient.c b/dev/lckdclient.c
index e197002..e7ad962 100644
--- a/dev/lckdclient.c
+++ b/dev/lckdclient.c
@@ -74,19 +74,20 @@ int main(int argc, char *argv[])
74 loop = FALSE; 74 loop = FALSE;
75 75
76 if (!strcmp(*args, "get") && len >= 2) { 76 if (!strcmp(*args, "get") && len >= 2) {
77 plist_t *value = NULL; 77 plist_t value = NULL;
78 if (IPHONE_E_SUCCESS == lockdownd_get_value(client, len == 3 ? *(args + 1):NULL, len == 3 ? *(args + 2):*(args + 1), &value)) 78 if (IPHONE_E_SUCCESS == lockdownd_get_value(client, len == 3 ? *(args + 1):NULL, len == 3 ? *(args + 2):*(args + 1), &value))
79 { 79 {
80 char *xml = NULL; 80 char *xml = NULL;
81 uint32_t length; 81 uint32_t length;
82 plist_to_xml(value, &xml, &length); 82 plist_to_xml(value, &xml, &length);
83 printf("Success : value = %s\n", xml); 83 printf("Success : value = %s\n", xml);
84
85 free(xml); 84 free(xml);
86 free(value);
87 } 85 }
88 else 86 else
89 printf("Error\n"); 87 printf("Error\n");
88
89 if (value)
90 plist_free(value);
90 } 91 }
91 92
92 if (!strcmp(*args, "start") && len == 2) { 93 if (!strcmp(*args, "start") && len == 2) {
diff --git a/src/lockdown.c b/src/lockdown.c
index 7e1f1a8..24283cb 100644
--- a/src/lockdown.c
+++ b/src/lockdown.c
@@ -445,14 +445,8 @@ iphone_error_t lockdownd_get_value(lockdownd_client_t client, const char *domain
445 plist_get_key_val(value_key_node, &result_key); 445 plist_get_key_val(value_key_node, &result_key);
446 446
447 if (!strcmp(result_key, "Value")) { 447 if (!strcmp(result_key, "Value")) {
448 char *buf = NULL;
449 uint32_t length;
450 log_dbg_msg(DBGMASK_LOCKDOWND, "lockdownd_get_value(): has a value\n"); 448 log_dbg_msg(DBGMASK_LOCKDOWND, "lockdownd_get_value(): has a value\n");
451 449 *value_node = plist_copy(value_value_node);
452 /* FIXME: libplist does not offer cloning of nodes, use serialization */
453 plist_to_bin(value_value_node, &buf, &length);
454 plist_from_bin(buf, length, value_node);
455 free(buf);
456 } 450 }
457 free(result_key); 451 free(result_key);
458 } 452 }
@@ -469,7 +463,6 @@ iphone_error_t lockdownd_get_device_uid(lockdownd_client_t client, char **uid)
469{ 463{
470 iphone_error_t ret = IPHONE_E_UNKNOWN_ERROR; 464 iphone_error_t ret = IPHONE_E_UNKNOWN_ERROR;
471 plist_t value = NULL; 465 plist_t value = NULL;
472 value = plist_new_dict();
473 466
474 ret = lockdownd_get_value(client, NULL, "UniqueDeviceID", &value); 467 ret = lockdownd_get_value(client, NULL, "UniqueDeviceID", &value);
475 if (ret != IPHONE_E_SUCCESS) { 468 if (ret != IPHONE_E_SUCCESS) {
@@ -492,7 +485,6 @@ iphone_error_t lockdownd_get_device_public_key(lockdownd_client_t client, gnutls
492 plist_t value = NULL; 485 plist_t value = NULL;
493 char *value_value = NULL; 486 char *value_value = NULL;
494 uint64_t size = 0; 487 uint64_t size = 0;
495 value = plist_new_dict();
496 488
497 ret = lockdownd_get_value(client, NULL, "DevicePublicKey", &value); 489 ret = lockdownd_get_value(client, NULL, "DevicePublicKey", &value);
498 if (ret != IPHONE_E_SUCCESS) { 490 if (ret != IPHONE_E_SUCCESS) {
@@ -519,14 +511,12 @@ iphone_error_t lockdownd_get_device_name(lockdownd_client_t client, char **devic
519{ 511{
520 iphone_error_t ret = IPHONE_E_UNKNOWN_ERROR; 512 iphone_error_t ret = IPHONE_E_UNKNOWN_ERROR;
521 plist_t value = NULL; 513 plist_t value = NULL;
522 value = plist_new_dict();
523 514
524 ret = lockdownd_get_value(client, NULL, "DeviceName", &value); 515 ret = lockdownd_get_value(client, NULL, "DeviceName", &value);
525 if (ret != IPHONE_E_SUCCESS) { 516 if (ret != IPHONE_E_SUCCESS) {
526 return ret; 517 return ret;
527 } 518 }
528 plist_get_string_val(value, device_name); 519 plist_get_string_val(value, device_name);
529 log_debug_msg("%s: %s\n", __func__, device_name);
530 520
531 plist_free(value); 521 plist_free(value);
532 value = NULL; 522 value = NULL;