diff options
Diffstat (limited to 'src/lockdown.c')
| -rw-r--r-- | src/lockdown.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/lockdown.c b/src/lockdown.c index 1befb72..8f15b3f 100644 --- a/src/lockdown.c +++ b/src/lockdown.c | |||
| @@ -1262,9 +1262,18 @@ lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, const char | |||
| 1262 | if (port && ret == LOCKDOWN_E_SUCCESS) | 1262 | if (port && ret == LOCKDOWN_E_SUCCESS) |
| 1263 | *port = port_loc; | 1263 | *port = port_loc; |
| 1264 | } | 1264 | } |
| 1265 | } | 1265 | } else { |
| 1266 | else | ||
| 1267 | ret = LOCKDOWN_E_START_SERVICE_FAILED; | 1266 | ret = LOCKDOWN_E_START_SERVICE_FAILED; |
| 1267 | plist_t error_node = plist_dict_get_item(dict, "Error"); | ||
| 1268 | if (error_node && PLIST_STRING == plist_get_node_type(error_node)) { | ||
| 1269 | char *error = NULL; | ||
| 1270 | plist_get_string_val(error_node, &error); | ||
| 1271 | if (!strcmp(error, "InvalidService")) { | ||
| 1272 | ret = LOCKDOWN_E_INVALID_SERVICE; | ||
| 1273 | } | ||
| 1274 | free(error); | ||
| 1275 | } | ||
| 1276 | } | ||
| 1268 | 1277 | ||
| 1269 | plist_free(dict); | 1278 | plist_free(dict); |
| 1270 | dict = NULL; | 1279 | dict = NULL; |
