diff options
author | Elliott Hughes <enh@google.com> | 2015-04-27 18:39:27 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2015-04-28 10:52:52 -0700 |
commit | f7466f9f2334b0e9025e1c7ecf65b4d04a246b20 (patch) | |
tree | cf3e1d4b9957032db8046f4bb49d5878cb60a538 /minadbd | |
parent | 5c025ac5c84c19e4eac6ca6e9f5c2f51e09add54 (diff) | |
download | bootable_recovery-f7466f9f2334b0e9025e1c7ecf65b4d04a246b20.zip bootable_recovery-f7466f9f2334b0e9025e1c7ecf65b4d04a246b20.tar.gz bootable_recovery-f7466f9f2334b0e9025e1c7ecf65b4d04a246b20.tar.bz2 |
Stop using adb_strtok, and check argument validity.
(cherry picked from commit ba45ddf37cf4543143af6b2e27fc1214f3dbe892)
Change-Id: Iba4f77f7db54ca0184437bd8ea96abfadabc72a3
Diffstat (limited to 'minadbd')
-rw-r--r-- | minadbd/services.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/minadbd/services.cpp b/minadbd/services.cpp index a832567..dd1fd7c 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<char*>(cookie), ":", &saveptr); - uint64_t file_size = strtoull(s, NULL, 10); - s = adb_strtok_r(NULL, ":", &saveptr); - uint32_t block_size = strtoul(s, NULL, 10); - - printf("sideload-host file size %" PRIu64 " block size %" PRIu32 "\n", - file_size, block_size); +static void sideload_host_service(int sfd, void* data) { + const char* args = reinterpret_cast<const char*>(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 %d block size %d\n", file_size, block_size); int result = run_adb_fuse(sfd, file_size, block_size); |