diff options
Diffstat (limited to 'src/debugserver.c')
| -rw-r--r-- | src/debugserver.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/debugserver.c b/src/debugserver.c index 967d01d..0b0d614 100644 --- a/src/debugserver.c +++ b/src/debugserver.c | |||
| @@ -369,7 +369,7 @@ static int debugserver_client_receive_internal_check(debugserver_client_t client | |||
| 369 | return did_receive_char; | 369 | return did_receive_char; |
| 370 | } | 370 | } |
| 371 | 371 | ||
| 372 | LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive_response(debugserver_client_t client, char** response) | 372 | LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive_response(debugserver_client_t client, char** response, size_t* response_size) |
| 373 | { | 373 | { |
| 374 | debugserver_error_t res = DEBUGSERVER_E_SUCCESS; | 374 | debugserver_error_t res = DEBUGSERVER_E_SUCCESS; |
| 375 | 375 | ||
| @@ -449,10 +449,11 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive_response(deb | |||
| 449 | if (client->noack_mode || debugserver_response_is_checksum_valid(buffer, buffer_size)) { | 449 | if (client->noack_mode || debugserver_response_is_checksum_valid(buffer, buffer_size)) { |
| 450 | if (response) { | 450 | if (response) { |
| 451 | /* assemble response string */ | 451 | /* assemble response string */ |
| 452 | uint32_t response_size = sizeof(char) * (buffer_size - DEBUGSERVER_CHECKSUM_HASH_LENGTH - 1); | 452 | uint32_t resp_size = sizeof(char) * (buffer_size - DEBUGSERVER_CHECKSUM_HASH_LENGTH - 1); |
| 453 | *response = (char*)malloc(response_size + 1); | 453 | *response = (char*)malloc(resp_size + 1); |
| 454 | memcpy(*response, buffer + 1, response_size); | 454 | memcpy(*response, buffer + 1, resp_size); |
| 455 | (*response)[response_size] = '\0'; | 455 | (*response)[resp_size] = '\0'; |
| 456 | if (response_size) *response_size = resp_size; | ||
| 456 | } | 457 | } |
| 457 | if (!client->noack_mode) { | 458 | if (!client->noack_mode) { |
| 458 | /* confirm valid command */ | 459 | /* confirm valid command */ |
| @@ -481,7 +482,7 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive_response(deb | |||
| 481 | return res; | 482 | return res; |
| 482 | } | 483 | } |
| 483 | 484 | ||
| 484 | LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_send_command(debugserver_client_t client, debugserver_command_t command, char** response) | 485 | LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_send_command(debugserver_client_t client, debugserver_command_t command, char** response, size_t* response_size) |
| 485 | { | 486 | { |
| 486 | debugserver_error_t res = DEBUGSERVER_E_SUCCESS; | 487 | debugserver_error_t res = DEBUGSERVER_E_SUCCESS; |
| 487 | int i; | 488 | int i; |
| @@ -512,7 +513,7 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_send_command(debugse | |||
| 512 | } | 513 | } |
| 513 | 514 | ||
| 514 | /* receive response */ | 515 | /* receive response */ |
| 515 | res = debugserver_client_receive_response(client, response); | 516 | res = debugserver_client_receive_response(client, response, response_size); |
| 516 | debug_info("response result: %d", res); | 517 | debug_info("response result: %d", res); |
| 517 | if (res != DEBUGSERVER_E_SUCCESS) { | 518 | if (res != DEBUGSERVER_E_SUCCESS) { |
| 518 | goto cleanup; | 519 | goto cleanup; |
| @@ -548,7 +549,7 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_set_environment_hex_ | |||
| 548 | 549 | ||
| 549 | debugserver_command_t command = NULL; | 550 | debugserver_command_t command = NULL; |
| 550 | debugserver_command_new("QEnvironmentHexEncoded:", 1, env_arg, &command); | 551 | debugserver_command_new("QEnvironmentHexEncoded:", 1, env_arg, &command); |
| 551 | result = debugserver_client_send_command(client, command, response); | 552 | result = debugserver_client_send_command(client, command, response, NULL); |
| 552 | debugserver_command_free(command); | 553 | debugserver_command_free(command); |
| 553 | 554 | ||
| 554 | free(env_tmp); | 555 | free(env_tmp); |
| @@ -617,7 +618,7 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_set_argv(debugserver | |||
| 617 | 618 | ||
| 618 | debugserver_command_t command = NULL; | 619 | debugserver_command_t command = NULL; |
| 619 | debugserver_command_new(pkt, 0, NULL, &command); | 620 | debugserver_command_new(pkt, 0, NULL, &command); |
| 620 | result = debugserver_client_send_command(client, command, response); | 621 | result = debugserver_client_send_command(client, command, response, NULL); |
| 621 | debugserver_command_free(command); | 622 | debugserver_command_free(command); |
| 622 | 623 | ||
| 623 | if (pkt) | 624 | if (pkt) |
