From ba45ddf37cf4543143af6b2e27fc1214f3dbe892 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Mon, 27 Apr 2015 18:39:27 -0700 Subject: [PATCH] Stop using adb_strtok, and check argument validity. Change-Id: I323ffda71b82cc939aed446f9c9fb86ca78df153 --- minadbd/services.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/minadbd/services.cpp b/minadbd/services.cpp index a8325679..dd1fd7c4 100644 --- a/minadbd/services.cpp +++ b/minadbd/services.cpp @@ -43,15 +43,16 @@ void* service_bootstrap_func(void* x) { return 0; } -static void sideload_host_service(int sfd, void* cookie) { - char* saveptr; - const char* s = adb_strtok_r(reinterpret_cast(cookie), ":", &saveptr); - uint64_t file_size = strtoull(s, NULL, 10); - s = adb_strtok_r(NULL, ":", &saveptr); - uint32_t block_size = strtoul(s, NULL, 10); +static void sideload_host_service(int sfd, void* data) { + const char* args = reinterpret_cast(data); + int file_size; + int block_size; + if (sscanf(args, "%d:%d", &file_size, &block_size) != 2) { + printf("bad sideload-host arguments: %s\n", args); + exit(1); + } - printf("sideload-host file size %" PRIu64 " block size %" PRIu32 "\n", - file_size, block_size); + printf("sideload-host file size %d block size %d\n", file_size, block_size); int result = run_adb_fuse(sfd, file_size, block_size);