diff --git a/tools/ideviceimagemounter.c b/tools/ideviceimagemounter.c
index c89ddd3..325a9e2 100644
--- a/tools/ideviceimagemounter.c
+++ b/tools/ideviceimagemounter.c
@@ -51,8 +51,8 @@
 static int list_mode = 0;
 static int use_network = 0;
 static int xml_mode = 0;
-static char *udid = NULL;
-static char *imagetype = NULL;
+static const char *udid = NULL;
+static const char *imagetype = NULL;
 
 static const char PKG_PATH[] = "PublicStaging";
 static const char PATH_PREFIX[] = "/private/var/mobile/Media";
@@ -116,8 +116,7 @@
 				print_usage(argc, argv);
 				exit(2);
 			}
-			free(udid);
-			udid = strdup(optarg);
+			udid = optarg;
 			break;
 		case 'n':
 			use_network = 1;
@@ -126,9 +125,7 @@
 			list_mode = 1;
 			break;
 		case 't':
-			if (imagetype)
-				free(imagetype);
-			imagetype = strdup(optarg);
+			imagetype = optarg;
 			break;
 		case 'x':
 			xml_mode = 1;
@@ -281,10 +278,9 @@
 	if (list_mode) {
 		/* list mounts mode */
 		if (!imagetype) {
-			imagetype = strdup("Developer");
+			imagetype = "Developer";
 		}
 		err = mobile_image_mounter_lookup_image(mim, imagetype, &result);
-		free(imagetype);
 		if (err == MOBILE_IMAGE_MOUNTER_E_SUCCESS) {
 			res = 0;
 			if (xml_mode) {
@@ -329,7 +325,7 @@
 
 
 		if (!imagetype) {
-			imagetype = strdup("Developer");
+			imagetype = "Developer";
 		}
 
 		switch(disk_image_upload_type) {
@@ -407,7 +403,6 @@
 
 		printf("Mounting...\n");
 		err = mobile_image_mounter_mount_image(mim, mountname, sig, sig_length, imagetype, &result);
-		free(imagetype);
 		if (err == MOBILE_IMAGE_MOUNTER_E_SUCCESS) {
 			if (result) {
 				plist_t node = plist_dict_get_item(result, "Status");
diff --git a/tools/ideviceinfo.c b/tools/ideviceinfo.c
index a222e69..d8260e0 100644
--- a/tools/ideviceinfo.c
+++ b/tools/ideviceinfo.c
@@ -129,10 +129,10 @@
 	idevice_error_t ret = IDEVICE_E_UNKNOWN_ERROR;
 	int simple = 0;
 	int format = FORMAT_KEY_VALUE;
-	char* udid = NULL;
+	const char* udid = NULL;
 	int use_network = 0;
-	char *domain = NULL;
-	char *key = NULL;
+	const char *domain = NULL;
+	const char *key = NULL;
 	char *xml_doc = NULL;
 	uint32_t xml_length;
 	plist_t node = NULL;
@@ -166,8 +166,7 @@
 				print_usage(argc, argv, 1);
 				return 2;
 			}
-			free(udid);
-			udid = strdup(optarg);
+			udid = optarg;
 			break;
 		case 'n':
 			use_network = 1;
@@ -178,8 +177,7 @@
 				print_usage(argc, argv, 1);
 				return 2;
 			}
-			free(domain);
-			domain = strdup(optarg);
+			domain = optarg;
 			break;
 		case 'k':
 			if (!*optarg) {
@@ -187,8 +185,7 @@
 				print_usage(argc, argv, 1);
 				return 2;
 			}
-			free(key);
-			key = strdup(optarg);
+			key = optarg;
 			break;
 		case 'x':
 			format = FORMAT_XML;
@@ -255,8 +252,6 @@
 		}
 	}
 
-	if (domain != NULL)
-		free(domain);
 	lockdownd_client_free(client);
 	idevice_free(device);
 
diff --git a/tools/idevicename.c b/tools/idevicename.c
index a87872b..97bf2d4 100644
--- a/tools/idevicename.c
+++ b/tools/idevicename.c
@@ -66,7 +66,7 @@
 		{ NULL, 0, NULL, 0}
 	};
 	int res = -1;
-	char* udid = NULL;
+	const char* udid = NULL;
 	int use_network = 0;
 
 #ifndef WIN32
@@ -81,8 +81,7 @@
 				print_usage();
 				exit(2);
 			}
-			free(udid);
-			udid = strdup(optarg);
+			udid = optarg;
 			break;
 		case 'n':
 			use_network = 1;
@@ -153,9 +152,5 @@
 	lockdownd_client_free(lockdown);
 	idevice_free(device);
 
-	if (udid) {
-		free(udid);
-	}
-
 	return res;
 }
diff --git a/tools/idevicesetlocation.c b/tools/idevicesetlocation.c
index 6332e3c..ffa285e 100644
--- a/tools/idevicesetlocation.c
+++ b/tools/idevicesetlocation.c
@@ -76,7 +76,7 @@
 		{ NULL, 0, NULL, 0}
 	};
 	uint32_t mode = 0;
-	char *udid = NULL;
+	const char *udid = NULL;
 	int use_network = 0;
 
 	while ((c = getopt_long(argc, argv, "dhu:nv", longopts, NULL)) != -1) {
@@ -90,8 +90,7 @@
 				print_usage(argc, argv, 1);
 				return 2;
 			}
-			free(udid);
-			udid = strdup(optarg);
+			udid = optarg;
 			break;
 		case 'n':
 			use_network = 1;
