summaryrefslogtreecommitdiffstats
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
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 "").
-rw-r--r--common/userpref.c53
-rw-r--r--docs/idevice_id.12
-rw-r--r--docs/idevicebackup.12
-rw-r--r--docs/idevicebackup2.12
-rw-r--r--docs/idevicecrashreport.12
-rw-r--r--docs/idevicedate.12
-rw-r--r--docs/idevicedebug.12
-rw-r--r--docs/idevicedebugserverproxy.12
-rw-r--r--docs/idevicediagnostics.12
-rw-r--r--docs/ideviceenterrecovery.12
-rw-r--r--docs/ideviceimagemounter.12
-rw-r--r--docs/ideviceinfo.12
-rw-r--r--docs/idevicename.12
-rw-r--r--docs/idevicenotificationproxy.12
-rw-r--r--docs/idevicepair.12
-rw-r--r--docs/ideviceprovision.12
-rw-r--r--docs/idevicescreenshot.12
-rw-r--r--docs/idevicesyslog.12
-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
35 files changed, 95 insertions, 97 deletions
diff --git a/common/userpref.c b/common/userpref.c
index 0fa5b96..b985285 100644
--- a/common/userpref.c
+++ b/common/userpref.c
@@ -208,14 +208,8 @@ int userpref_read_system_buid(char **system_buid)
*/
userpref_error_t userpref_get_paired_udids(char ***list, unsigned int *count)
{
- struct slist_t {
- char *name;
- void *next;
- };
DIR *config_dir;
const char *config_path = NULL;
- struct slist_t *udids = NULL;
- unsigned int i;
unsigned int found = 0;
if (!list || (list && *list)) {
@@ -226,41 +220,42 @@ userpref_error_t userpref_get_paired_udids(char ***list, unsigned int *count)
if (count) {
*count = 0;
}
+ *list = (char**)malloc(sizeof(char*));
config_path = userpref_get_config_dir();
config_dir = opendir(config_path);
if (config_dir) {
struct dirent *entry;
- struct slist_t *listp = udids;
while ((entry = readdir(config_dir))) {
- char *ext = strstr(entry->d_name, USERPREF_CONFIG_EXTENSION);
- if (ext && ((ext - entry->d_name) == 40) && (strlen(entry->d_name) == (40 + strlen(ext)))) {
- struct slist_t *ne = (struct slist_t*)malloc(sizeof(struct slist_t));
- ne->name = (char*)malloc(41);
- strncpy(ne->name, entry->d_name, 40);
- ne->name[40] = 0;
- ne->next = NULL;
- if (!listp) {
- listp = ne;
- udids = listp;
- } else {
- listp->next = ne;
- listp = listp->next;
+ if (strcmp(entry->d_name, USERPREF_CONFIG_FILE) == 0) {
+ /* ignore SystemConfiguration.plist */
+ continue;
+ }
+ char *ext = strrchr(entry->d_name, '.');
+ if (ext && (strcmp(ext, USERPREF_CONFIG_EXTENSION) == 0)) {
+ size_t len = strlen(entry->d_name) - strlen(USERPREF_CONFIG_EXTENSION);
+ char **newlist = (char**)realloc(*list, sizeof(char*) * (found+2));
+ if (!newlist) {
+ fprintf(stderr, "ERROR: Out of memory\n");
+ break;
+ }
+ *list = newlist;
+ char *tmp = (char*)malloc(len+1);
+ if (tmp) {
+ strncpy(tmp, entry->d_name, len);
+ tmp[len] = '\0';
+ }
+ (*list)[found] = tmp;
+ if (!tmp) {
+ fprintf(stderr, "ERROR: Out of memory\n");
+ break;
}
found++;
}
}
closedir(config_dir);
}
- *list = (char**)malloc(sizeof(char*) * (found+1));
- i = 0;
- while (udids) {
- (*list)[i++] = udids->name;
- struct slist_t *old = udids;
- udids = udids->next;
- free(old);
- }
- (*list)[i] = NULL;
+ (*list)[found] = NULL;
if (count) {
*count = found;
diff --git a/docs/idevice_id.1 b/docs/idevice_id.1
index cdc5342..e223dcb 100644
--- a/docs/idevice_id.1
+++ b/docs/idevice_id.1
@@ -8,7 +8,7 @@ idevice_id \- Prints device name or a list of attached devices.
.SH DESCRIPTION
Prints device name or a list of attached devices.
-The UDID is a 40-digit hexadecimal number of the device
+UDID is the unique device identifier of the device
for which the name should be retrieved.
.SH OPTIONS
diff --git a/docs/idevicebackup.1 b/docs/idevicebackup.1
index a9330e0..517ca2a 100644
--- a/docs/idevicebackup.1
+++ b/docs/idevicebackup.1
@@ -12,7 +12,7 @@ Create or restore backup from the current or specified directory.
.SH OPTIONS
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-d, \-\-debug
enable communication debugging.
diff --git a/docs/idevicebackup2.1 b/docs/idevicebackup2.1
index 1b50a2b..6c40929 100644
--- a/docs/idevicebackup2.1
+++ b/docs/idevicebackup2.1
@@ -12,7 +12,7 @@ Create or restore backup from the current or specified directory.
.SH OPTIONS
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-s, \-\-source UDID
use backup data from device specified by UDID.
diff --git a/docs/idevicecrashreport.1 b/docs/idevicecrashreport.1
index 24015d3..a3742e7 100644
--- a/docs/idevicecrashreport.1
+++ b/docs/idevicecrashreport.1
@@ -25,7 +25,7 @@ copy but do not remove crash reports from device.
enable communication debugging.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-h, \-\-help
prints usage information.
diff --git a/docs/idevicedate.1 b/docs/idevicedate.1
index aa77df6..adb091a 100644
--- a/docs/idevicedate.1
+++ b/docs/idevicedate.1
@@ -15,7 +15,7 @@ Simple utility to manage the clock on a device.
enable communication debugging.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-s, \-\-set TIMESTAMP
set UTC time described by TIMESTAMP
diff --git a/docs/idevicedebug.1 b/docs/idevicedebug.1
index daa3c0c..2024842 100644
--- a/docs/idevicedebug.1
+++ b/docs/idevicedebug.1
@@ -17,7 +17,7 @@ stdout/stderr of the process.
set environment variable NAME to VALUE.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-d, \-\-debug
enable communication debugging.
diff --git a/docs/idevicedebugserverproxy.1 b/docs/idevicedebugserverproxy.1
index 669806a..e2372e6 100644
--- a/docs/idevicedebugserverproxy.1
+++ b/docs/idevicedebugserverproxy.1
@@ -17,7 +17,7 @@ The developer disk image needs to be mounted for this service to be available.
.SH OPTIONS
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-d, \-\-debug
enable communication debugging.
diff --git a/docs/idevicediagnostics.1 b/docs/idevicediagnostics.1
index 460c17f..8a9b947 100644
--- a/docs/idevicediagnostics.1
+++ b/docs/idevicediagnostics.1
@@ -16,7 +16,7 @@ iOS 5 and later.
.SH OPTIONS
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-d, \-\-debug
enable communication debugging.
diff --git a/docs/ideviceenterrecovery.1 b/docs/ideviceenterrecovery.1
index feea733..cbceb36 100644
--- a/docs/ideviceenterrecovery.1
+++ b/docs/ideviceenterrecovery.1
@@ -7,7 +7,7 @@ ideviceenterrecovery \- Make a device enter recovery mode.
.SH DESCRIPTION
-Makes a device with the supplied 40-digit UDID enter recovery mode immediately.
+Makes a device with the supplied UDID enter recovery mode immediately.
.SH OPTIONS
.TP
diff --git a/docs/ideviceimagemounter.1 b/docs/ideviceimagemounter.1
index 4afdca6..322bd34 100644
--- a/docs/ideviceimagemounter.1
+++ b/docs/ideviceimagemounter.1
@@ -15,7 +15,7 @@ Mounts the specified disk image on the device.
enable communication debugging.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-l, \-\-list
list mount information
diff --git a/docs/ideviceinfo.1 b/docs/ideviceinfo.1
index f61c713..d4ecbf0 100644
--- a/docs/ideviceinfo.1
+++ b/docs/ideviceinfo.1
@@ -15,7 +15,7 @@ Show information about the first connected device.
enable communication debugging.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-q, \-\-domain NAME
set domain of query to NAME. Default: None.
diff --git a/docs/idevicename.1 b/docs/idevicename.1
index 67897f1..ee7cd02 100644
--- a/docs/idevicename.1
+++ b/docs/idevicename.1
@@ -21,7 +21,7 @@ is given the device name will be set to the name specified.
enable communication debugging.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-h, \-\-help
prints usage information
diff --git a/docs/idevicenotificationproxy.1 b/docs/idevicenotificationproxy.1
index 75bf6b1..19cf02e 100644
--- a/docs/idevicenotificationproxy.1
+++ b/docs/idevicenotificationproxy.1
@@ -12,7 +12,7 @@ Post or observe notifications on an iOS device from the command line.
.SH OPTIONS
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-d, \-\-debug
enable communication debugging.
diff --git a/docs/idevicepair.1 b/docs/idevicepair.1
index e9916b3..5c567ee 100644
--- a/docs/idevicepair.1
+++ b/docs/idevicepair.1
@@ -12,7 +12,7 @@ Manage host pairings with devices and usbmuxd.
.SH OPTIONS
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-d, \-\-debug
enable communication debugging.
diff --git a/docs/ideviceprovision.1 b/docs/ideviceprovision.1
index b79ea82..5f312a5 100644
--- a/docs/ideviceprovision.1
+++ b/docs/ideviceprovision.1
@@ -12,7 +12,7 @@ Manage provisioning profiles on a device.
.SH OPTIONS
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-x, \-\-xml
print XML output when using the 'dump' command.
diff --git a/docs/idevicescreenshot.1 b/docs/idevicescreenshot.1
index c2b9619..7b6794c 100644
--- a/docs/idevicescreenshot.1
+++ b/docs/idevicescreenshot.1
@@ -22,7 +22,7 @@ the screenshotr service is not available.
enable communication debugging.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID.
+target specific device by UDID.
.TP
.B \-h, \-\-help
prints usage information
diff --git a/docs/idevicesyslog.1 b/docs/idevicesyslog.1
index 4230461..aa24339 100644
--- a/docs/idevicesyslog.1
+++ b/docs/idevicesyslog.1
@@ -15,7 +15,7 @@ Relay syslog of a connected device.
enable communication debugging.
.TP
.B \-u, \-\-udid UDID
-target specific device by its 40-digit device UDID
+target specific device by UDID.
.TP
.B \-h, \-\-help
prints usage information.
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)
name = strrchr(argv[0], '/');
printf("Usage: %s [OPTIONS] [UDID]\n", (name ? name + 1: argv[0]));
printf("Prints device name or a list of attached devices.\n\n");
- printf(" The UDID is a 40-digit hexadecimal number of the device\n");
+ printf(" UDID is the unique device identifier of the device\n");
printf(" for which the name should be retrieved.\n\n");
printf(" -l, --list\t\tlist UDID of all attached devices\n");
printf(" -d, --debug\t\tenable communication debugging\n");
@@ -79,7 +79,7 @@ int main(int argc, char **argv)
/* check if udid was passed */
if (mode == MODE_SHOW_ID) {
i--;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (argc < 2 || !argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
@@ -90,7 +90,7 @@ int main(int argc, char **argv)
case MODE_SHOW_ID:
idevice_new(&device, udid);
if (!device) {
- fprintf(stderr, "ERROR: No device with UDID=%s attached.\n", udid);
+ fprintf(stderr, "ERROR: No device with UDID %s attached.\n", udid);
return -2;
}
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)
printf(" restore\tRestores a device backup from DIRECTORY.\n\n");
printf("options:\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
printf("Homepage: <" PACKAGE_URL ">\n");
@@ -715,7 +715,7 @@ int main(int argc, char *argv[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
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)
printf("\n");
printf("options:\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -s, --source UDID\tuse backup data from device specified by UDID\n");
printf(" -i, --interactive\trequest passwords interactively\n");
printf(" -h, --help\t\tprints usage information\n");
@@ -1369,7 +1369,7 @@ int main(int argc, char *argv[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return -1;
}
@@ -1378,7 +1378,7 @@ int main(int argc, char *argv[])
}
else if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--source")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return -1;
}
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)
printf(" -e, --extract\t\textract raw crash report into separate '.crash' file\n");
printf(" -k, --keep\t\tcopy but do not remove crash reports from device\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
printf("Homepage: <" PACKAGE_URL ">\n");
@@ -327,7 +327,7 @@ int main(int argc, char* argv[]) {
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
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)
printf("NOTE: Setting the time on iOS 6 and later is only supported\n");
printf(" in the setup wizard screens before device activation.\n\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -s, --set TIMESTAMP\tset UTC time described by TIMESTAMP\n");
printf(" -c, --sync\t\tset time of device to current system time\n");
printf(" -h, --help\t\tprints usage information\n");
@@ -84,7 +84,7 @@ int main(int argc, char *argv[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
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)
printf("\n");
printf(" The following OPTIONS are accepted:\n");
printf(" -e, --env NAME=VALUE\tset environment variable NAME to VALUE\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -d, --debug\t\tenable communication debugging\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
@@ -233,7 +233,7 @@ int main(int argc, char *argv[])
continue;
} else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
res = 0;
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)
printf("Usage: %s [OPTIONS] <PORT>\n", (name ? name + 1: argv[0]));
printf("Proxy debugserver connection from device to a local socket at PORT.\n\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
printf("Homepage: <" PACKAGE_URL ">\n");
@@ -280,7 +280,7 @@ int main(int argc, char *argv[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
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)
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
result = 0;
goto cleanup;
@@ -318,7 +318,7 @@ void print_usage(int argc, char **argv)
printf(" sleep\t\t\t\tput device into sleep mode (disconnects from host)\n\n");
printf(" The following OPTIONS are accepted:\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
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)
name = strrchr(argv[0], '/');
printf("Usage: %s [OPTIONS] UDID\n", (name ? name + 1: argv[0]));
- printf("Makes a device with the supplied 40-digit UDID enter recovery mode immediately.\n\n");
+ printf("Makes a device with the supplied UDID enter recovery mode immediately.\n\n");
printf(" -d, --debug\t\tenable communication debugging\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
@@ -66,7 +66,7 @@ int main(int argc, char *argv[])
}
i--;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (argc < 2 || !argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
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)
name = strrchr(argv[0], '/');
printf("Usage: %s [OPTIONS] IMAGE_FILE IMAGE_SIGNATURE_FILE\n\n", (name ? name + 1: argv[0]));
printf("Mounts the specified disk image on the device.\n\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -l, --list\t\tList mount information\n");
printf(" -t, --imagetype\tImage type to use, default is 'Developer'\n");
printf(" -x, --xml\t\tUse XML output\n");
@@ -76,19 +76,18 @@ static void print_usage(int argc, char **argv)
static void parse_opts(int argc, char **argv)
{
static struct option longopts[] = {
- {"help", 0, NULL, 'h'},
- {"udid", 0, NULL, 'u'},
- {"list", 0, NULL, 'l'},
- {"imagetype", 0, NULL, 't'},
- {"xml", 0, NULL, 'x'},
- {"debug", 0, NULL, 'd'},
+ {"help", no_argument, NULL, 'h'},
+ {"udid", required_argument, NULL, 'u'},
+ {"list", no_argument, NULL, 'l'},
+ {"imagetype", required_argument, NULL, 't'},
+ {"xml", no_argument, NULL, 'x'},
+ {"debug", no_argument, NULL, 'd'},
{NULL, 0, NULL, 0}
};
int c;
while (1) {
- c = getopt_long(argc, argv, "hu:lt:xd", longopts,
- (int *) 0);
+ c = getopt_long(argc, argv, "hu:lt:xd", longopts, NULL);
if (c == -1) {
break;
}
@@ -98,14 +97,12 @@ static void parse_opts(int argc, char **argv)
print_usage(argc, argv);
exit(0);
case 'u':
- if (strlen(optarg) != 40) {
- printf("%s: invalid UDID specified (length != 40)\n",
- argv[0]);
+ if (!*optarg) {
+ fprintf(stderr, "ERROR: UDID must not be empty!\n");
print_usage(argc, argv);
exit(2);
}
- if (udid)
- free(udid);
+ free(udid);
udid = strdup(optarg);
break;
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)
printf("Show information about a connected device.\n\n");
printf(" -d, --debug\t\tenable communication debugging\n");
printf(" -s, --simple\t\tuse a simple connection to avoid auto-pairing with the device\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -q, --domain NAME\tset domain of query to NAME. Default: None\n");
printf(" -k, --key NAME\tonly query key specified by NAME. Default: All keys.\n");
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[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
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)
printf("Display the device name or set it to NAME if specified.\n");
printf("\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\tuse UDID to target a specific device\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprint usage information\n");
printf("\n");
printf("Homepage: <" PACKAGE_URL ">\n");
@@ -60,6 +60,12 @@ int main(int argc, char** argv)
while ((c = getopt_long(argc, argv, "du:h", longopts, &optidx)) != -1) {
switch (c) {
case 'u':
+ if (!*optarg) {
+ fprintf(stderr, "ERROR: UDID must not be empty!\n");
+ print_usage();
+ exit(2);
+ }
+ free(udid);
udid = strdup(optarg);
break;
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)
printf("\n");
printf(" The following OPTIONS are accepted:\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
printf("Homepage: <" PACKAGE_URL ">\n");
@@ -114,7 +114,7 @@ int main(int argc, char *argv[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
result = 0;
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)
printf(" list list devices paired with this host\n\n");
printf(" The following OPTIONS are accepted:\n");
printf(" -d, --debug enable communication debugging\n");
- printf(" -u, --udid UDID target specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID target specific device by UDID\n");
printf(" -h, --help prints usage information\n");
printf("\n");
printf("Homepage: <" PACKAGE_URL ">\n");
@@ -81,9 +81,9 @@ static void print_usage(int argc, char **argv)
static void parse_opts(int argc, char **argv)
{
static struct option longopts[] = {
- {"help", 0, NULL, 'h'},
- {"udid", 1, NULL, 'u'},
- {"debug", 0, NULL, 'd'},
+ {"help", no_argument, NULL, 'h'},
+ {"udid", required_argument, NULL, 'u'},
+ {"debug", no_argument, NULL, 'd'},
{NULL, 0, NULL, 0}
};
int c;
@@ -99,8 +99,8 @@ static void parse_opts(int argc, char **argv)
print_usage(argc, argv);
exit(EXIT_SUCCESS);
case 'u':
- if (strlen(optarg) != 40) {
- printf("%s: invalid UDID specified (length != 40)\n", argv[0]);
+ if (!*optarg) {
+ fprintf(stderr, "ERROR: UDID must not be empty!\n");
print_usage(argc, argv);
exit(2);
}
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)
printf(" \tspecified by FILE.\n\n");
printf(" The following OPTIONS are accepted:\n");
printf(" -d, --debug enable communication debugging\n");
- printf(" -u, --udid UDID target specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID target specific device by UDID\n");
printf(" -x, --xml print XML output when using the 'dump' command\n");
printf(" -h, --help prints usage information\n");
printf("\n");
@@ -299,7 +299,7 @@ int main(int argc, char *argv[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
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)
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
@@ -158,7 +158,7 @@ void print_usage(int argc, char **argv)
printf("NOTE: A mounted developer disk image is required on the device, otherwise\n");
printf("the screenshotr service is not available.\n\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
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[])
}
else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
i++;
- if (!argv[i] || (strlen(argv[i]) != 40)) {
+ if (!argv[i] || !*argv[i]) {
print_usage(argc, argv);
return 0;
}
@@ -238,7 +238,7 @@ void print_usage(int argc, char **argv)
printf("Usage: %s [OPTIONS]\n", (name ? name + 1: argv[0]));
printf("Relay syslog of a connected device.\n\n");
printf(" -d, --debug\t\tenable communication debugging\n");
- printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
+ printf(" -u, --udid UDID\ttarget specific device by UDID\n");
printf(" -h, --help\t\tprints usage information\n");
printf("\n");
printf("Homepage: <" PACKAGE_URL ">\n");