Snap for 4425573 from 1385908bdbe37a1c3fc58c89de8d24fb0b5b3089 to pi-release

Change-Id: I06ec7c0b5e05779e5c15821229f50fe0185c031d
diff --git a/update_verifier/update_verifier.cpp b/update_verifier/update_verifier.cpp
index faebbed..ba7b7ae 100644
--- a/update_verifier/update_verifier.cpp
+++ b/update_verifier/update_verifier.cpp
@@ -137,11 +137,12 @@
     LOG(ERROR) << "Error in parsing range string.";
     return false;
   }
+  range_count /= 2;
 
   std::vector<std::future<bool>> threads;
   size_t thread_num = std::thread::hardware_concurrency() ?: 4;
-  thread_num = std::min(thread_num, range_count / 2);
-  size_t group_range_count = range_count / thread_num;
+  thread_num = std::min(thread_num, range_count);
+  size_t group_range_count = (range_count + thread_num - 1) / thread_num;
 
   for (size_t t = 0; t < thread_num; t++) {
     auto thread_func = [t, group_range_count, &dm_block_device, &ranges, &partition]() {
@@ -154,7 +155,8 @@
         return false;
       }
 
-      for (size_t i = 1 + group_range_count * t; i < group_range_count * (t + 1) + 1; i += 2) {
+      for (size_t i = group_range_count * 2 * t + 1;
+           i < std::min(group_range_count * 2 * (t + 1) + 1, ranges.size()); i += 2) {
         unsigned int range_start, range_end;
         bool parse_status = android::base::ParseUint(ranges[i], &range_start);
         parse_status = parse_status && android::base::ParseUint(ranges[i + 1], &range_end);