applypatch: Fix the bug when constructing VAL_BLOB.
When constructing std::string from C-string, the string may be truncated
at null char. Use range constructor instead.
Bug: 32380016
Test: Use applypatch to install a previously failed recovery image.
Change-Id: Id3e2afb4a810594243cd21db526933d1fea5044b
diff --git a/applypatch/main.cpp b/applypatch/main.cpp
index a3a45d0..294f7ee 100644
--- a/applypatch/main.cpp
+++ b/applypatch/main.cpp
@@ -99,7 +99,7 @@
return 1;
}
bonus.type = VAL_BLOB;
- bonus.data = reinterpret_cast<const char*>(bonusFc.data.data());
+ bonus.data = std::string(bonusFc.data.cbegin(), bonusFc.data.cend());
argc -= 2;
argv += 2;
}
@@ -132,7 +132,8 @@
std::vector<Value> patches;
std::vector<Value*> patch_ptrs;
for (size_t i = 0; i < files.size(); ++i) {
- patches.push_back(Value(VAL_BLOB, reinterpret_cast<const char*>(files[i].data.data())));
+ patches.push_back(Value(VAL_BLOB,
+ std::string(files[i].data.cbegin(), files[i].data.cend())));
patch_ptrs.push_back(&patches[i]);
}
return applypatch(argv[1], argv[2], argv[3], target_size,