diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/libirecovery.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libirecovery.c b/src/libirecovery.c index 4084205..5fc07ba 100644 --- a/src/libirecovery.c +++ b/src/libirecovery.c | |||
| @@ -569,13 +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 | serial_str[0] = '\0'; | 573 | serial_str[0] = '\0'; |
| 573 | if ((sscanf(result, "\\\\?\\usb#vid_%*04x&pid_%*04x#%s#", serial_str) != 1) || (serial_str[0] == '\0')) { | 574 | if (!p && (sscanf(p, "\\usb#vid_%*04x&pid_%*04x#%s", serial_str) != 1) || (serial_str[0] == '\0')) { |
| 574 | mobiledevice_closepipes(_client); | 575 | mobiledevice_closepipes(_client); |
| 575 | continue; | 576 | continue; |
| 576 | } | 577 | } |
| 577 | 578 | ||
| 578 | char* p = strchr(serial_str, '#'); | 579 | p = strchr(serial_str, '#'); |
| 579 | if (p) { | 580 | if (p) { |
| 580 | *p = '\0'; | 581 | *p = '\0'; |
| 581 | } | 582 | } |
| @@ -645,13 +646,14 @@ irecv_error_t mobiledevice_connect(irecv_client_t* client, unsigned long long ec | |||
| 645 | } | 646 | } |
| 646 | 647 | ||
| 647 | char serial_str[256]; | 648 | char serial_str[256]; |
| 649 | char *p = strrchr(result, '\\'); | ||
| 648 | serial_str[0] = '\0'; | 650 | serial_str[0] = '\0'; |
| 649 | if ((sscanf(result, "\\\\?\\usb#vid_%*04x&pid_%*04x#%s#", serial_str) != 1) || (serial_str[0] == '\0')) { | 651 | if (!p || (sscanf(p, "\\usb#vid_%*04x&pid_%*04x#%s", serial_str) != 1) || (serial_str[0] == '\0')) { |
| 650 | mobiledevice_closepipes(_client); | 652 | mobiledevice_closepipes(_client); |
| 651 | continue; | 653 | continue; |
| 652 | } | 654 | } |
| 653 | 655 | ||
| 654 | char* p = strchr(serial_str, '#'); | 656 | p = strchr(serial_str, '#'); |
| 655 | if (p) { | 657 | if (p) { |
| 656 | *p = '\0'; | 658 | *p = '\0'; |
| 657 | } | 659 | } |
