update_engine: error out on bad compression factor am: 722f6f858a am: d12cad55a9

Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/3019784

Change-Id: Ife98864af60f725287b0677465e7ce85422ed4d5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc
index 470d622..839960e 100644
--- a/payload_generator/payload_generation_config.cc
+++ b/payload_generator/payload_generation_config.cc
@@ -228,7 +228,16 @@
       compression_factor = "4096";
     }
     size_t compression_factor_value{};
-    android::base::ParseUint(compression_factor, &compression_factor_value);
+    if (!android::base::ParseUint(compression_factor,
+                                  &compression_factor_value)) {
+      LOG(ERROR) << "failed to parse compression factor value: "
+                 << compression_factor;
+      return false;
+    }
+    CHECK_EQ(static_cast<int>(compression_factor_value % kBlockSize), 0);
+    CHECK_EQ(static_cast<int>(compression_factor_value &
+                              (compression_factor_value - 1)),
+             0);
     metadata->set_compression_factor(compression_factor_value);
   }
   dynamic_partition_metadata = std::move(metadata);