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
This commit is contained in:
Tao Bao 2016-10-24 16:08:28 -07:00
parent fd796317c3
commit edf1b15fef

View file

@ -99,7 +99,7 @@ static int PatchMode(int argc, char** argv) {
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 @@ static int PatchMode(int argc, char** argv) {
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,