diff options
| author | 2018-09-11 00:15:41 +0200 | |
|---|---|---|
| committer | 2018-09-11 00:15:41 +0200 | |
| commit | 96b0c2eb571498749c9e8b926c02559f6956e273 (patch) | |
| tree | b1bd7b1d81390d05f8b8735c58f91a653090ed2d /src/libirecovery.c | |
| parent | f1d7ac2ba8f598fce0135af4894b2f7cf3c03a9d (diff) | |
| download | libirecovery-96b0c2eb571498749c9e8b926c02559f6956e273.tar.gz libirecovery-96b0c2eb571498749c9e8b926c02559f6956e273.tar.bz2 | |
win32: REALLY Fix parsing of usb device path so it works again with older drivers
Diffstat (limited to 'src/libirecovery.c')
| -rw-r--r-- | src/libirecovery.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/libirecovery.c b/src/libirecovery.c index 5fc07ba..df9fde6 100644 --- a/src/libirecovery.c +++ b/src/libirecovery.c | |||
| @@ -569,9 +569,14 @@ irecv_error_t mobiledevice_connect(irecv_client_t* client, unsigned long long ec | |||
| 569 | } | 569 | } |
| 570 | 570 | ||
| 571 | char serial_str[256]; | 571 | char serial_str[256]; |
| 572 | char *p = strrchr(result, '\\'); | 572 | char *p = result + strlen(result) - 1; |
| 573 | while (p-- && p > result) { | ||
| 574 | if (*p == '\\' && (strncmp(p, "\\usb", 4) == 0)) { | ||
| 575 | break; | ||
| 576 | } | ||
| 577 | } | ||
| 573 | serial_str[0] = '\0'; | 578 | serial_str[0] = '\0'; |
| 574 | if (!p && (sscanf(p, "\\usb#vid_%*04x&pid_%*04x#%s", serial_str) != 1) || (serial_str[0] == '\0')) { | 579 | if (!p || (sscanf(p, "\\usb#vid_%*04x&pid_%*04x#%s", serial_str) != 1) || (serial_str[0] == '\0')) { |
| 575 | mobiledevice_closepipes(_client); | 580 | mobiledevice_closepipes(_client); |
| 576 | continue; | 581 | continue; |
| 577 | } | 582 | } |
| @@ -646,7 +651,12 @@ irecv_error_t mobiledevice_connect(irecv_client_t* client, unsigned long long ec | |||
| 646 | } | 651 | } |
| 647 | 652 | ||
| 648 | char serial_str[256]; | 653 | char serial_str[256]; |
| 649 | char *p = strrchr(result, '\\'); | 654 | char *p = result + strlen(result) - 1; |
| 655 | while (p-- && p > result) { | ||
| 656 | if (*p == '\\' && (strncmp(p, "\\usb", 4) == 0)) { | ||
| 657 | break; | ||
| 658 | } | ||
| 659 | } | ||
| 650 | serial_str[0] = '\0'; | 660 | serial_str[0] = '\0'; |
| 651 | if (!p || (sscanf(p, "\\usb#vid_%*04x&pid_%*04x#%s", serial_str) != 1) || (serial_str[0] == '\0')) { | 661 | if (!p || (sscanf(p, "\\usb#vid_%*04x&pid_%*04x#%s", serial_str) != 1) || (serial_str[0] == '\0')) { |
| 652 | mobiledevice_closepipes(_client); | 662 | mobiledevice_closepipes(_client); |
