update_engine: error out on bad compression factor

We need to check that we are parsing compression factor correctly here.

This test here catches a bug where in the build system compression
factor is specified as a string 64k, instead of integer value 262144

Test: th
Change-Id: I98fa4db3a9f66137d3d5f93bd4b34f7126f8a184
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);