idevicesetlocation: Print proper lockdown error message when connection fails
diff --git a/tools/idevicesetlocation.c b/tools/idevicesetlocation.c
index 69fbaf5..a23b8e4 100644
--- a/tools/idevicesetlocation.c
+++ b/tools/idevicesetlocation.c
@@ -138,11 +138,16 @@
 		return -1;
 	}
 
-	lockdownd_client_t lockdown;
-	lockdownd_client_new_with_handshake(device, &lockdown, TOOL_NAME);
+	lockdownd_client_t lockdown = NULL;
+	lockdownd_error_t lerr = lockdownd_client_new_with_handshake(device, &lockdown, TOOL_NAME);
+	if (lerr != LOCKDOWN_E_SUCCESS) {
+		idevice_free(device);
+		printf("ERROR: Could not connect to lockdownd: %s (%d)\n", lockdownd_strerror(lerr), lerr);
+		return -1;
+	}
 
 	lockdownd_service_descriptor_t svc = NULL;
-	lockdownd_error_t lerr = lockdownd_start_service(lockdown, DT_SIMULATELOCATION_SERVICE, &svc);
+	lerr = lockdownd_start_service(lockdown, DT_SIMULATELOCATION_SERVICE, &svc);
 	if (lerr != LOCKDOWN_E_SUCCESS) {
 		lockdownd_client_free(lockdown);
 		idevice_free(device);
@@ -158,7 +163,6 @@
 	lockdownd_service_descriptor_free(svc);
 
 	if (serr != SERVICE_E_SUCCESS) {
-		lockdownd_client_free(lockdown);
 		idevice_free(device);
 		printf("ERROR: Could not connect to simulatelocation service (%d)\n", serr);
 		return -1;