summaryrefslogtreecommitdiffstats
path: root/minadbd
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-04-27 18:39:27 -0700
committerElliott Hughes <enh@google.com>2015-04-28 10:52:52 -0700
commitf7466f9f2334b0e9025e1c7ecf65b4d04a246b20 (patch)
treecf3e1d4b9957032db8046f4bb49d5878cb60a538 /minadbd
parent5c025ac5c84c19e4eac6ca6e9f5c2f51e09add54 (diff)
downloadbootable_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.cpp19
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);