Check the results from applypatch
Check the results from applypatch in PerformCommandDiff; and abort the
update on failure.
Bug:29339536
Change-Id: I5087d79ba532b54250f4c17560524255c8a4fabc
diff --git a/updater/blockimg.cpp b/updater/blockimg.cpp
index f795556..a80180a 100644
--- a/updater/blockimg.cpp
+++ b/updater/blockimg.cpp
@@ -1267,11 +1267,17 @@
}
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.