summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mobilebackup.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/mobilebackup.c b/src/mobilebackup.c
index aa29277..1505623 100644
--- a/src/mobilebackup.c
+++ b/src/mobilebackup.c
@@ -279,7 +279,15 @@ LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_request_backup(mobileback
279 char *str = NULL; 279 char *str = NULL;
280 plist_get_string_val(node, &str); 280 plist_get_string_val(node, &str);
281 if (str) { 281 if (str) {
282 if (strcmp(str, proto_version) != 0) { 282 int maj = 0;
283 int min = 0;
284 sscanf(str, "%u.%u", &maj, &min);
285 uint32_t this_ver = ((maj & 0xFF) << 8) | (min & 0xFF);
286 maj = 0;
287 min = 0;
288 sscanf(proto_version, "%u.%u", &maj, &min);
289 uint32_t proto_ver = ((maj & 0xFF) << 8) | (min & 0xFF);
290 if (this_ver > proto_ver) {
283 err = MOBILEBACKUP_E_BAD_VERSION; 291 err = MOBILEBACKUP_E_BAD_VERSION;
284 } 292 }
285 free(str); 293 free(str);
@@ -346,7 +354,15 @@ LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_request_restore(mobilebac
346 char *str = NULL; 354 char *str = NULL;
347 plist_get_string_val(node, &str); 355 plist_get_string_val(node, &str);
348 if (str) { 356 if (str) {
349 if (strcmp(str, proto_version) != 0) { 357 int maj = 0;
358 int min = 0;
359 sscanf(str, "%u.%u", &maj, &min);
360 uint32_t this_ver = ((maj & 0xFF) << 8) | (min & 0xFF);
361 maj = 0;
362 min = 0;
363 sscanf(proto_version, "%u.%u", &maj, &min);
364 uint32_t proto_ver = ((maj & 0xFF) << 8) | (min & 0xFF);
365 if (this_ver > proto_ver) {
350 err = MOBILEBACKUP_E_BAD_VERSION; 366 err = MOBILEBACKUP_E_BAD_VERSION;
351 } 367 }
352 free(str); 368 free(str);