summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2018-10-01 02:32:51 +0200
committerGravatar Nikias Bassen2018-10-01 02:32:51 +0200
commitb34e3435c21d06b3e5a4e7b5246fb6ddb6641a9f (patch)
tree89b78560cd956b956a03c9b207816d8cb345c37e /tools
parentf1ee0fd8b2b1dd65c64f5a67e208efc708295caa (diff)
downloadlibimobiledevice-b34e3435c21d06b3e5a4e7b5246fb6ddb6641a9f.tar.gz
libimobiledevice-b34e3435c21d06b3e5a4e7b5246fb6ddb6641a9f.tar.bz2
tools: Remove length check on device UDID arguments to support newer devices
The 40 characters length check on the device UDID made newer devices unusable with the libimobiledevice tools and was actually redundant since an invalid UDID will always fail to resolve. This commit removes the length check alltogether (but makes sure it is not an empty string "").
Diffstat (limited to 'tools')
-rw-r--r--tools/idevice_id.c6
-rw-r--r--tools/idevicebackup.c4
-rw-r--r--tools/idevicebackup2.c6
-rw-r--r--tools/idevicecrashreport.c4
-rw-r--r--tools/idevicedate.c4
-rw-r--r--tools/idevicedebug.c4
-rw-r--r--tools/idevicedebugserverproxy.c4
-rw-r--r--tools/idevicediagnostics.c4
-rw-r--r--tools/ideviceenterrecovery.c4
-rw-r--r--tools/ideviceimagemounter.c25
-rw-r--r--tools/ideviceinfo.c4
-rw-r--r--tools/idevicename.c8
-rw-r--r--tools/idevicenotificationproxy.c4
-rw-r--r--tools/idevicepair.c12
-rw-r--r--tools/ideviceprovision.c4
-rw-r--r--tools/idevicescreenshot.c4
-rw-r--r--tools/idevicesyslog.c4
17 files changed, 54 insertions, 51 deletions
diff --git a/tools/idevice_id.c b/tools/idevice_id.c
index 6f020ff..558dcbe 100644
--- a/tools/idevice_id.c
+++ b/tools/idevice_id.c
@@ -40,7 +40,7 @@ static void print_usage(int argc, char **argv)
40 name = strrchr(argv[0], '/'); 40 name = strrchr(argv[0], '/');
41 printf("Usage: %s [OPTIONS] [UDID]\n", (name ? name + 1: argv[0])); 41 printf("Usage: %s [OPTIONS] [UDID]\n", (name ? name + 1: argv[0]));
42 printf("Prints device name or a list of attached devices.\n\n"); 42 printf("Prints device name or a list of attached devices.\n\n");
43 printf(" The UDID is a 40-digit hexadecimal number of the device\n"); 43 printf(" UDID is the unique device identifier of the device\n");
44 printf(" for which the name should be retrieved.\n\n"); 44 printf(" for which the name should be retrieved.\n\n");
45 printf(" -l, --list\t\tlist UDID of all attached devices\n"); 45 printf(" -l, --list\t\tlist UDID of all attached devices\n");
46 printf(" -d, --debug\t\tenable communication debugging\n"); 46 printf(" -d, --debug\t\tenable communication debugging\n");
@@ -79,7 +79,7 @@ int main(int argc, char **argv)
79 /* check if udid was passed */ 79 /* check if udid was passed */
80 if (mode == MODE_SHOW_ID) { 80 if (mode == MODE_SHOW_ID) {
81 i--; 81 i--;
82 if (!argv[i] || (strlen(argv[i]) != 40)) { 82 if (argc < 2 || !argv[i] || !*argv[i]) {
83 print_usage(argc, argv); 83 print_usage(argc, argv);
84 return 0; 84 return 0;
85 } 85 }
@@ -90,7 +90,7 @@ int main(int argc, char **argv)
90 case MODE_SHOW_ID: 90 case MODE_SHOW_ID:
91 idevice_new(&device, udid); 91 idevice_new(&device, udid);
92 if (!device) { 92 if (!device) {
93 fprintf(stderr, "ERROR: No device with UDID=%s attached.\n", udid); 93 fprintf(stderr, "ERROR: No device with UDID %s attached.\n", udid);
94 return -2; 94 return -2;
95 } 95 }
96 96
diff --git a/tools/idevicebackup.c b/tools/idevicebackup.c
index 7e825de..cd69bcc 100644
--- a/tools/idevicebackup.c
+++ b/tools/idevicebackup.c
@@ -671,7 +671,7 @@ static void print_usage(int argc, char **argv)
671 printf(" restore\tRestores a device backup from DIRECTORY.\n\n"); 671 printf(" restore\tRestores a device backup from DIRECTORY.\n\n");
672 printf("options:\n"); 672 printf("options:\n");
673 printf(" -d, --debug\t\tenable communication debugging\n"); 673 printf(" -d, --debug\t\tenable communication debugging\n");
674 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 674 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
675 printf(" -h, --help\t\tprints usage information\n"); 675 printf(" -h, --help\t\tprints usage information\n");
676 printf("\n"); 676 printf("\n");
677 printf("Homepage: <" PACKAGE_URL ">\n"); 677 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -715,7 +715,7 @@ int main(int argc, char *argv[])
715 } 715 }
716 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 716 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
717 i++; 717 i++;
718 if (!argv[i] || (strlen(argv[i]) != 40)) { 718 if (!argv[i] || !*argv[i]) {
719 print_usage(argc, argv); 719 print_usage(argc, argv);
720 return 0; 720 return 0;
721 } 721 }
diff --git a/tools/idevicebackup2.c b/tools/idevicebackup2.c
index 7fb67df..6d4785b 100644
--- a/tools/idevicebackup2.c
+++ b/tools/idevicebackup2.c
@@ -1323,7 +1323,7 @@ static void print_usage(int argc, char **argv)
1323 printf("\n"); 1323 printf("\n");
1324 printf("options:\n"); 1324 printf("options:\n");
1325 printf(" -d, --debug\t\tenable communication debugging\n"); 1325 printf(" -d, --debug\t\tenable communication debugging\n");
1326 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 1326 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
1327 printf(" -s, --source UDID\tuse backup data from device specified by UDID\n"); 1327 printf(" -s, --source UDID\tuse backup data from device specified by UDID\n");
1328 printf(" -i, --interactive\trequest passwords interactively\n"); 1328 printf(" -i, --interactive\trequest passwords interactively\n");
1329 printf(" -h, --help\t\tprints usage information\n"); 1329 printf(" -h, --help\t\tprints usage information\n");
@@ -1369,7 +1369,7 @@ int main(int argc, char *argv[])
1369 } 1369 }
1370 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 1370 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
1371 i++; 1371 i++;
1372 if (!argv[i] || (strlen(argv[i]) != 40)) { 1372 if (!argv[i] || !*argv[i]) {
1373 print_usage(argc, argv); 1373 print_usage(argc, argv);
1374 return -1; 1374 return -1;
1375 } 1375 }
@@ -1378,7 +1378,7 @@ int main(int argc, char *argv[])
1378 } 1378 }
1379 else if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--source")) { 1379 else if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--source")) {
1380 i++; 1380 i++;
1381 if (!argv[i] || (strlen(argv[i]) != 40)) { 1381 if (!argv[i] || !*argv[i]) {
1382 print_usage(argc, argv); 1382 print_usage(argc, argv);
1383 return -1; 1383 return -1;
1384 } 1384 }
diff --git a/tools/idevicecrashreport.c b/tools/idevicecrashreport.c
index 4d7f41c..e05d506 100644
--- a/tools/idevicecrashreport.c
+++ b/tools/idevicecrashreport.c
@@ -301,7 +301,7 @@ static void print_usage(int argc, char **argv)
301 printf(" -e, --extract\t\textract raw crash report into separate '.crash' file\n"); 301 printf(" -e, --extract\t\textract raw crash report into separate '.crash' file\n");
302 printf(" -k, --keep\t\tcopy but do not remove crash reports from device\n"); 302 printf(" -k, --keep\t\tcopy but do not remove crash reports from device\n");
303 printf(" -d, --debug\t\tenable communication debugging\n"); 303 printf(" -d, --debug\t\tenable communication debugging\n");
304 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 304 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
305 printf(" -h, --help\t\tprints usage information\n"); 305 printf(" -h, --help\t\tprints usage information\n");
306 printf("\n"); 306 printf("\n");
307 printf("Homepage: <" PACKAGE_URL ">\n"); 307 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -327,7 +327,7 @@ int main(int argc, char* argv[]) {
327 } 327 }
328 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 328 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
329 i++; 329 i++;
330 if (!argv[i] || (strlen(argv[i]) != 40)) { 330 if (!argv[i] || !*argv[i]) {
331 print_usage(argc, argv); 331 print_usage(argc, argv);
332 return 0; 332 return 0;
333 } 333 }
diff --git a/tools/idevicedate.c b/tools/idevicedate.c
index 97243bb..2676880 100644
--- a/tools/idevicedate.c
+++ b/tools/idevicedate.c
@@ -50,7 +50,7 @@ static void print_usage(int argc, char **argv)
50 printf("NOTE: Setting the time on iOS 6 and later is only supported\n"); 50 printf("NOTE: Setting the time on iOS 6 and later is only supported\n");
51 printf(" in the setup wizard screens before device activation.\n\n"); 51 printf(" in the setup wizard screens before device activation.\n\n");
52 printf(" -d, --debug\t\tenable communication debugging\n"); 52 printf(" -d, --debug\t\tenable communication debugging\n");
53 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 53 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
54 printf(" -s, --set TIMESTAMP\tset UTC time described by TIMESTAMP\n"); 54 printf(" -s, --set TIMESTAMP\tset UTC time described by TIMESTAMP\n");
55 printf(" -c, --sync\t\tset time of device to current system time\n"); 55 printf(" -c, --sync\t\tset time of device to current system time\n");
56 printf(" -h, --help\t\tprints usage information\n"); 56 printf(" -h, --help\t\tprints usage information\n");
@@ -84,7 +84,7 @@ int main(int argc, char *argv[])
84 } 84 }
85 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 85 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
86 i++; 86 i++;
87 if (!argv[i] || (strlen(argv[i]) != 40)) { 87 if (!argv[i] || !*argv[i]) {
88 print_usage(argc, argv); 88 print_usage(argc, argv);
89 return 0; 89 return 0;
90 } 90 }
diff --git a/tools/idevicedebug.c b/tools/idevicedebug.c
index f18254a..c7508e3 100644
--- a/tools/idevicedebug.c
+++ b/tools/idevicedebug.c
@@ -188,7 +188,7 @@ static void print_usage(int argc, char **argv)
188 printf("\n"); 188 printf("\n");
189 printf(" The following OPTIONS are accepted:\n"); 189 printf(" The following OPTIONS are accepted:\n");
190 printf(" -e, --env NAME=VALUE\tset environment variable NAME to VALUE\n"); 190 printf(" -e, --env NAME=VALUE\tset environment variable NAME to VALUE\n");
191 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 191 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
192 printf(" -d, --debug\t\tenable communication debugging\n"); 192 printf(" -d, --debug\t\tenable communication debugging\n");
193 printf(" -h, --help\t\tprints usage information\n"); 193 printf(" -h, --help\t\tprints usage information\n");
194 printf("\n"); 194 printf("\n");
@@ -233,7 +233,7 @@ int main(int argc, char *argv[])
233 continue; 233 continue;
234 } else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 234 } else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
235 i++; 235 i++;
236 if (!argv[i] || (strlen(argv[i]) != 40)) { 236 if (!argv[i] || !*argv[i]) {
237 print_usage(argc, argv); 237 print_usage(argc, argv);
238 res = 0; 238 res = 0;
239 goto cleanup; 239 goto cleanup;
diff --git a/tools/idevicedebugserverproxy.c b/tools/idevicedebugserverproxy.c
index 56b1013..0b0419b 100644
--- a/tools/idevicedebugserverproxy.c
+++ b/tools/idevicedebugserverproxy.c
@@ -71,7 +71,7 @@ static void print_usage(int argc, char **argv)
71 printf("Usage: %s [OPTIONS] <PORT>\n", (name ? name + 1: argv[0])); 71 printf("Usage: %s [OPTIONS] <PORT>\n", (name ? name + 1: argv[0]));
72 printf("Proxy debugserver connection from device to a local socket at PORT.\n\n"); 72 printf("Proxy debugserver connection from device to a local socket at PORT.\n\n");
73 printf(" -d, --debug\t\tenable communication debugging\n"); 73 printf(" -d, --debug\t\tenable communication debugging\n");
74 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 74 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
75 printf(" -h, --help\t\tprints usage information\n"); 75 printf(" -h, --help\t\tprints usage information\n");
76 printf("\n"); 76 printf("\n");
77 printf("Homepage: <" PACKAGE_URL ">\n"); 77 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -280,7 +280,7 @@ int main(int argc, char *argv[])
280 } 280 }
281 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 281 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
282 i++; 282 i++;
283 if (!argv[i] || (strlen(argv[i]) != 40)) { 283 if (!argv[i] || !*argv[i]) {
284 print_usage(argc, argv); 284 print_usage(argc, argv);
285 return 0; 285 return 0;
286 } 286 }
diff --git a/tools/idevicediagnostics.c b/tools/idevicediagnostics.c
index 66e192f..8c32854 100644
--- a/tools/idevicediagnostics.c
+++ b/tools/idevicediagnostics.c
@@ -79,7 +79,7 @@ int main(int argc, char **argv)
79 } 79 }
80 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 80 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
81 i++; 81 i++;
82 if (!argv[i] || (strlen(argv[i]) != 40)) { 82 if (!argv[i] || !*argv[i]) {
83 print_usage(argc, argv); 83 print_usage(argc, argv);
84 result = 0; 84 result = 0;
85 goto cleanup; 85 goto cleanup;
@@ -318,7 +318,7 @@ void print_usage(int argc, char **argv)
318 printf(" sleep\t\t\t\tput device into sleep mode (disconnects from host)\n\n"); 318 printf(" sleep\t\t\t\tput device into sleep mode (disconnects from host)\n\n");
319 printf(" The following OPTIONS are accepted:\n"); 319 printf(" The following OPTIONS are accepted:\n");
320 printf(" -d, --debug\t\tenable communication debugging\n"); 320 printf(" -d, --debug\t\tenable communication debugging\n");
321 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 321 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
322 printf(" -h, --help\t\tprints usage information\n"); 322 printf(" -h, --help\t\tprints usage information\n");
323 printf("\n"); 323 printf("\n");
324 printf("Homepage: <" PACKAGE_URL ">\n"); 324 printf("Homepage: <" PACKAGE_URL ">\n");
diff --git a/tools/ideviceenterrecovery.c b/tools/ideviceenterrecovery.c
index 21c4ff6..69484cc 100644
--- a/tools/ideviceenterrecovery.c
+++ b/tools/ideviceenterrecovery.c
@@ -37,7 +37,7 @@ static void print_usage(int argc, char **argv)
37 37
38 name = strrchr(argv[0], '/'); 38 name = strrchr(argv[0], '/');
39 printf("Usage: %s [OPTIONS] UDID\n", (name ? name + 1: argv[0])); 39 printf("Usage: %s [OPTIONS] UDID\n", (name ? name + 1: argv[0]));
40 printf("Makes a device with the supplied 40-digit UDID enter recovery mode immediately.\n\n"); 40 printf("Makes a device with the supplied UDID enter recovery mode immediately.\n\n");
41 printf(" -d, --debug\t\tenable communication debugging\n"); 41 printf(" -d, --debug\t\tenable communication debugging\n");
42 printf(" -h, --help\t\tprints usage information\n"); 42 printf(" -h, --help\t\tprints usage information\n");
43 printf("\n"); 43 printf("\n");
@@ -66,7 +66,7 @@ int main(int argc, char *argv[])
66 } 66 }
67 67
68 i--; 68 i--;
69 if (!argv[i] || (strlen(argv[i]) != 40)) { 69 if (argc < 2 || !argv[i] || !*argv[i]) {
70 print_usage(argc, argv); 70 print_usage(argc, argv);
71 return 0; 71 return 0;
72 } 72 }
diff --git a/tools/ideviceimagemounter.c b/tools/ideviceimagemounter.c
index d56fa0c..7101c7e 100644
--- a/tools/ideviceimagemounter.c
+++ b/tools/ideviceimagemounter.c
@@ -63,7 +63,7 @@ static void print_usage(int argc, char **argv)
63 name = strrchr(argv[0], '/'); 63 name = strrchr(argv[0], '/');
64 printf("Usage: %s [OPTIONS] IMAGE_FILE IMAGE_SIGNATURE_FILE\n\n", (name ? name + 1: argv[0])); 64 printf("Usage: %s [OPTIONS] IMAGE_FILE IMAGE_SIGNATURE_FILE\n\n", (name ? name + 1: argv[0]));
65 printf("Mounts the specified disk image on the device.\n\n"); 65 printf("Mounts the specified disk image on the device.\n\n");
66 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 66 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
67 printf(" -l, --list\t\tList mount information\n"); 67 printf(" -l, --list\t\tList mount information\n");
68 printf(" -t, --imagetype\tImage type to use, default is 'Developer'\n"); 68 printf(" -t, --imagetype\tImage type to use, default is 'Developer'\n");
69 printf(" -x, --xml\t\tUse XML output\n"); 69 printf(" -x, --xml\t\tUse XML output\n");
@@ -76,19 +76,18 @@ static void print_usage(int argc, char **argv)
76static void parse_opts(int argc, char **argv) 76static void parse_opts(int argc, char **argv)
77{ 77{
78 static struct option longopts[] = { 78 static struct option longopts[] = {
79 {"help", 0, NULL, 'h'}, 79 {"help", no_argument, NULL, 'h'},
80 {"udid", 0, NULL, 'u'}, 80 {"udid", required_argument, NULL, 'u'},
81 {"list", 0, NULL, 'l'}, 81 {"list", no_argument, NULL, 'l'},
82 {"imagetype", 0, NULL, 't'}, 82 {"imagetype", required_argument, NULL, 't'},
83 {"xml", 0, NULL, 'x'}, 83 {"xml", no_argument, NULL, 'x'},
84 {"debug", 0, NULL, 'd'}, 84 {"debug", no_argument, NULL, 'd'},
85 {NULL, 0, NULL, 0} 85 {NULL, 0, NULL, 0}
86 }; 86 };
87 int c; 87 int c;
88 88
89 while (1) { 89 while (1) {
90 c = getopt_long(argc, argv, "hu:lt:xd", longopts, 90 c = getopt_long(argc, argv, "hu:lt:xd", longopts, NULL);
91 (int *) 0);
92 if (c == -1) { 91 if (c == -1) {
93 break; 92 break;
94 } 93 }
@@ -98,14 +97,12 @@ static void parse_opts(int argc, char **argv)
98 print_usage(argc, argv); 97 print_usage(argc, argv);
99 exit(0); 98 exit(0);
100 case 'u': 99 case 'u':
101 if (strlen(optarg) != 40) { 100 if (!*optarg) {
102 printf("%s: invalid UDID specified (length != 40)\n", 101 fprintf(stderr, "ERROR: UDID must not be empty!\n");
103 argv[0]);
104 print_usage(argc, argv); 102 print_usage(argc, argv);
105 exit(2); 103 exit(2);
106 } 104 }
107 if (udid) 105 free(udid);
108 free(udid);
109 udid = strdup(optarg); 106 udid = strdup(optarg);
110 break; 107 break;
111 case 'l': 108 case 'l':
diff --git a/tools/ideviceinfo.c b/tools/ideviceinfo.c
index 40bcac6..59fade8 100644
--- a/tools/ideviceinfo.c
+++ b/tools/ideviceinfo.c
@@ -91,7 +91,7 @@ static void print_usage(int argc, char **argv)
91 printf("Show information about a connected device.\n\n"); 91 printf("Show information about a connected device.\n\n");
92 printf(" -d, --debug\t\tenable communication debugging\n"); 92 printf(" -d, --debug\t\tenable communication debugging\n");
93 printf(" -s, --simple\t\tuse a simple connection to avoid auto-pairing with the device\n"); 93 printf(" -s, --simple\t\tuse a simple connection to avoid auto-pairing with the device\n");
94 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 94 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
95 printf(" -q, --domain NAME\tset domain of query to NAME. Default: None\n"); 95 printf(" -q, --domain NAME\tset domain of query to NAME. Default: None\n");
96 printf(" -k, --key NAME\tonly query key specified by NAME. Default: All keys.\n"); 96 printf(" -k, --key NAME\tonly query key specified by NAME. Default: All keys.\n");
97 printf(" -x, --xml\t\toutput information as xml plist instead of key/value pairs\n"); 97 printf(" -x, --xml\t\toutput information as xml plist instead of key/value pairs\n");
@@ -129,7 +129,7 @@ int main(int argc, char *argv[])
129 } 129 }
130 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 130 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
131 i++; 131 i++;
132 if (!argv[i] || (strlen(argv[i]) != 40)) { 132 if (!argv[i] || !*argv[i]) {
133 print_usage(argc, argv); 133 print_usage(argc, argv);
134 return 0; 134 return 0;
135 } 135 }
diff --git a/tools/idevicename.c b/tools/idevicename.c
index 013becc..ef226f7 100644
--- a/tools/idevicename.c
+++ b/tools/idevicename.c
@@ -38,7 +38,7 @@ static void print_usage(void)
38 printf("Display the device name or set it to NAME if specified.\n"); 38 printf("Display the device name or set it to NAME if specified.\n");
39 printf("\n"); 39 printf("\n");
40 printf(" -d, --debug\t\tenable communication debugging\n"); 40 printf(" -d, --debug\t\tenable communication debugging\n");
41 printf(" -u, --udid UDID\tuse UDID to target a specific device\n"); 41 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
42 printf(" -h, --help\t\tprint usage information\n"); 42 printf(" -h, --help\t\tprint usage information\n");
43 printf("\n"); 43 printf("\n");
44 printf("Homepage: <" PACKAGE_URL ">\n"); 44 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -60,6 +60,12 @@ int main(int argc, char** argv)
60 while ((c = getopt_long(argc, argv, "du:h", longopts, &optidx)) != -1) { 60 while ((c = getopt_long(argc, argv, "du:h", longopts, &optidx)) != -1) {
61 switch (c) { 61 switch (c) {
62 case 'u': 62 case 'u':
63 if (!*optarg) {
64 fprintf(stderr, "ERROR: UDID must not be empty!\n");
65 print_usage();
66 exit(2);
67 }
68 free(udid);
63 udid = strdup(optarg); 69 udid = strdup(optarg);
64 break; 70 break;
65 case 'h': 71 case 'h':
diff --git a/tools/idevicenotificationproxy.c b/tools/idevicenotificationproxy.c
index 5e4ac9a..72b406c 100644
--- a/tools/idevicenotificationproxy.c
+++ b/tools/idevicenotificationproxy.c
@@ -70,7 +70,7 @@ static void print_usage(int argc, char **argv)
70 printf("\n"); 70 printf("\n");
71 printf(" The following OPTIONS are accepted:\n"); 71 printf(" The following OPTIONS are accepted:\n");
72 printf(" -d, --debug\t\tenable communication debugging\n"); 72 printf(" -d, --debug\t\tenable communication debugging\n");
73 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 73 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
74 printf(" -h, --help\t\tprints usage information\n"); 74 printf(" -h, --help\t\tprints usage information\n");
75 printf("\n"); 75 printf("\n");
76 printf("Homepage: <" PACKAGE_URL ">\n"); 76 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -114,7 +114,7 @@ int main(int argc, char *argv[])
114 } 114 }
115 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 115 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
116 i++; 116 i++;
117 if (!argv[i] || (strlen(argv[i]) != 40)) { 117 if (!argv[i] || !*argv[i]) {
118 print_usage(argc, argv); 118 print_usage(argc, argv);
119 result = 0; 119 result = 0;
120 goto cleanup; 120 goto cleanup;
diff --git a/tools/idevicepair.c b/tools/idevicepair.c
index b6f0751..6ae9103 100644
--- a/tools/idevicepair.c
+++ b/tools/idevicepair.c
@@ -72,7 +72,7 @@ static void print_usage(int argc, char **argv)
72 printf(" list list devices paired with this host\n\n"); 72 printf(" list list devices paired with this host\n\n");
73 printf(" The following OPTIONS are accepted:\n"); 73 printf(" The following OPTIONS are accepted:\n");
74 printf(" -d, --debug enable communication debugging\n"); 74 printf(" -d, --debug enable communication debugging\n");
75 printf(" -u, --udid UDID target specific device by its 40-digit device UDID\n"); 75 printf(" -u, --udid UDID target specific device by UDID\n");
76 printf(" -h, --help prints usage information\n"); 76 printf(" -h, --help prints usage information\n");
77 printf("\n"); 77 printf("\n");
78 printf("Homepage: <" PACKAGE_URL ">\n"); 78 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -81,9 +81,9 @@ static void print_usage(int argc, char **argv)
81static void parse_opts(int argc, char **argv) 81static void parse_opts(int argc, char **argv)
82{ 82{
83 static struct option longopts[] = { 83 static struct option longopts[] = {
84 {"help", 0, NULL, 'h'}, 84 {"help", no_argument, NULL, 'h'},
85 {"udid", 1, NULL, 'u'}, 85 {"udid", required_argument, NULL, 'u'},
86 {"debug", 0, NULL, 'd'}, 86 {"debug", no_argument, NULL, 'd'},
87 {NULL, 0, NULL, 0} 87 {NULL, 0, NULL, 0}
88 }; 88 };
89 int c; 89 int c;
@@ -99,8 +99,8 @@ static void parse_opts(int argc, char **argv)
99 print_usage(argc, argv); 99 print_usage(argc, argv);
100 exit(EXIT_SUCCESS); 100 exit(EXIT_SUCCESS);
101 case 'u': 101 case 'u':
102 if (strlen(optarg) != 40) { 102 if (!*optarg) {
103 printf("%s: invalid UDID specified (length != 40)\n", argv[0]); 103 fprintf(stderr, "ERROR: UDID must not be empty!\n");
104 print_usage(argc, argv); 104 print_usage(argc, argv);
105 exit(2); 105 exit(2);
106 } 106 }
diff --git a/tools/ideviceprovision.c b/tools/ideviceprovision.c
index 0bef7e8..f91ce4f 100644
--- a/tools/ideviceprovision.c
+++ b/tools/ideviceprovision.c
@@ -64,7 +64,7 @@ static void print_usage(int argc, char **argv)
64 printf(" \tspecified by FILE.\n\n"); 64 printf(" \tspecified by FILE.\n\n");
65 printf(" The following OPTIONS are accepted:\n"); 65 printf(" The following OPTIONS are accepted:\n");
66 printf(" -d, --debug enable communication debugging\n"); 66 printf(" -d, --debug enable communication debugging\n");
67 printf(" -u, --udid UDID target specific device by its 40-digit device UDID\n"); 67 printf(" -u, --udid UDID target specific device by UDID\n");
68 printf(" -x, --xml print XML output when using the 'dump' command\n"); 68 printf(" -x, --xml print XML output when using the 'dump' command\n");
69 printf(" -h, --help prints usage information\n"); 69 printf(" -h, --help prints usage information\n");
70 printf("\n"); 70 printf("\n");
@@ -299,7 +299,7 @@ int main(int argc, char *argv[])
299 } 299 }
300 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 300 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
301 i++; 301 i++;
302 if (!argv[i] || (strlen(argv[i]) != 40)) { 302 if (!argv[i] || !*argv[i]) {
303 print_usage(argc, argv); 303 print_usage(argc, argv);
304 return 0; 304 return 0;
305 } 305 }
diff --git a/tools/idevicescreenshot.c b/tools/idevicescreenshot.c
index 74acdf6..f2bcd48 100644
--- a/tools/idevicescreenshot.c
+++ b/tools/idevicescreenshot.c
@@ -55,7 +55,7 @@ int main(int argc, char **argv)
55 } 55 }
56 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 56 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
57 i++; 57 i++;
58 if (!argv[i] || (strlen(argv[i]) != 40)) { 58 if (!argv[i] || !*argv[i]) {
59 print_usage(argc, argv); 59 print_usage(argc, argv);
60 return 0; 60 return 0;
61 } 61 }
@@ -158,7 +158,7 @@ void print_usage(int argc, char **argv)
158 printf("NOTE: A mounted developer disk image is required on the device, otherwise\n"); 158 printf("NOTE: A mounted developer disk image is required on the device, otherwise\n");
159 printf("the screenshotr service is not available.\n\n"); 159 printf("the screenshotr service is not available.\n\n");
160 printf(" -d, --debug\t\tenable communication debugging\n"); 160 printf(" -d, --debug\t\tenable communication debugging\n");
161 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 161 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
162 printf(" -h, --help\t\tprints usage information\n"); 162 printf(" -h, --help\t\tprints usage information\n");
163 printf("\n"); 163 printf("\n");
164 printf("Homepage: <" PACKAGE_URL ">\n"); 164 printf("Homepage: <" PACKAGE_URL ">\n");
diff --git a/tools/idevicesyslog.c b/tools/idevicesyslog.c
index 0a923b8..76de128 100644
--- a/tools/idevicesyslog.c
+++ b/tools/idevicesyslog.c
@@ -185,7 +185,7 @@ int main(int argc, char *argv[])
185 } 185 }
186 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 186 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
187 i++; 187 i++;
188 if (!argv[i] || (strlen(argv[i]) != 40)) { 188 if (!argv[i] || !*argv[i]) {
189 print_usage(argc, argv); 189 print_usage(argc, argv);
190 return 0; 190 return 0;
191 } 191 }
@@ -238,7 +238,7 @@ void print_usage(int argc, char **argv)
238 printf("Usage: %s [OPTIONS]\n", (name ? name + 1: argv[0])); 238 printf("Usage: %s [OPTIONS]\n", (name ? name + 1: argv[0]));
239 printf("Relay syslog of a connected device.\n\n"); 239 printf("Relay syslog of a connected device.\n\n");
240 printf(" -d, --debug\t\tenable communication debugging\n"); 240 printf(" -d, --debug\t\tenable communication debugging\n");
241 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 241 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
242 printf(" -h, --help\t\tprints usage information\n"); 242 printf(" -h, --help\t\tprints usage information\n");
243 printf("\n"); 243 printf("\n");
244 printf("Homepage: <" PACKAGE_URL ">\n"); 244 printf("Homepage: <" PACKAGE_URL ">\n");