OSDN Git Service

Fix unsparse image reuse bug.
authorGeremy Condra <gcondra@google.com>
Fri, 6 Dec 2013 01:09:18 +0000 (17:09 -0800)
committerGeremy Condra <gcondra@google.com>
Fri, 6 Dec 2013 01:09:18 +0000 (17:09 -0800)
This would cause an existing sparse image to be reused by a
subsequent build, leading to verity failures.

Change-Id: I2082df3dfba014515c9267e02189fe9987a56830

tools/releasetools/build_image.py

index 2d75749..c3a0d0b 100755 (executable)
@@ -130,12 +130,15 @@ def BuildVerifiedImage(data_image_path, verity_image_path, verity_metadata_path)
     return False
   return True
 
-def UnsparseImage(sparse_image_path):
+def UnsparseImage(sparse_image_path, replace=True):
   img_dir = os.path.dirname(sparse_image_path)
   unsparse_image_path = "unsparse_" + os.path.basename(sparse_image_path)
   unsparse_image_path = os.path.join(img_dir, unsparse_image_path)
   if os.path.exists(unsparse_image_path):
-    return True, unsparse_image_path
+    if replace:
+      os.unlink(unsparse_image_path)
+    else:
+      return True, unsparse_image_path
   inflate_command = ["simg2img", sparse_image_path, unsparse_image_path]
   exit_code = RunCommand(inflate_command)
   if exit_code != 0:
@@ -256,7 +259,7 @@ def BuildImage(in_dir, prop_dict, out_file):
       return False
 
   if run_fsck and prop_dict.get("skip_fsck") != "true":
-    success, unsparse_image = UnsparseImage(out_file)
+    success, unsparse_image = UnsparseImage(out_file, replace=False)
     if not success:
       return False