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); | 
