summaryrefslogtreecommitdiffstats
path: root/src/debugserver.c
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2019-11-20 01:39:46 +0100
committerGravatar Nikias Bassen2019-11-20 01:39:46 +0100
commit43852c74160394c0be876945b85c0656fa2bff81 (patch)
tree00c22f445e13fadf344d7977e00cf2b2dee34856 /src/debugserver.c
parentaf91dc6376946daffd5c9ece916d9f33af828890 (diff)
downloadlibimobiledevice-43852c74160394c0be876945b85c0656fa2bff81.tar.gz
libimobiledevice-43852c74160394c0be876945b85c0656fa2bff81.tar.bz2
debugserver: Return size of the returned buffer
Diffstat (limited to 'src/debugserver.c')
-rw-r--r--src/debugserver.c19
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
372LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive_response(debugserver_client_t client, char** response) 372LIBIMOBILEDEVICE_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
484LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_send_command(debugserver_client_t client, debugserver_command_t command, char** response) 485LIBIMOBILEDEVICE_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)