Check the results from applypatch

Check the results from applypatch in PerformCommandDiff; and abort the
update on failure.

Bug:29339536
Change-Id: I5087d79ba532b54250f4c17560524255c8a4fabc
This commit is contained in:
Tianjie Xu 2016-06-15 11:56:42 -07:00
parent 490fad6791
commit 31f8cc84cf

View file

@ -1267,11 +1267,17 @@ static int PerformCommandDiff(CommandParameters& params) {
}
if (params.cmdname[0] == 'i') { // imgdiff
ApplyImagePatch(params.buffer.data(), blocks * BLOCKSIZE, &patch_value,
&RangeSinkWrite, &rss, nullptr, nullptr);
if (ApplyImagePatch(params.buffer.data(), blocks * BLOCKSIZE, &patch_value,
&RangeSinkWrite, &rss, nullptr, nullptr) != 0) {
fprintf(stderr, "Failed to apply image patch.\n");
return -1;
}
} else {
ApplyBSDiffPatch(params.buffer.data(), blocks * BLOCKSIZE, &patch_value, 0,
&RangeSinkWrite, &rss, nullptr);
if (ApplyBSDiffPatch(params.buffer.data(), blocks * BLOCKSIZE, &patch_value,
0, &RangeSinkWrite, &rss, nullptr) != 0) {
fprintf(stderr, "Failed to apply bsdiff patch.\n");
return -1;
}
}
// We expect the output of the patcher to fill the tgt ranges exactly.