diff options
-rw-r--r-- | src/mobilebackup.c | 20 |
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); |