summaryrefslogtreecommitdiffstats
path: root/src/libirecovery.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libirecovery.c')
-rw-r--r--src/libirecovery.c10
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 }