diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
index f1594d7..d5ab055 100755
--- a/tools/releasetools/build_image.py
+++ b/tools/releasetools/build_image.py
@@ -330,7 +330,7 @@
         "Failed to build FEC data:\n{}".format(output))
 
 
-def BuildVerityTree(sparse_image_path, verity_image_path, prop_dict):
+def BuildVerityTree(sparse_image_path, verity_image_path):
   cmd = ["build_verity_tree", "-A", FIXED_SALT, sparse_image_path,
          verity_image_path]
   output, exit_code = RunCommand(cmd)
@@ -338,8 +338,7 @@
     raise BuildImageError(
         "Failed to build verity tree:\n{}".format(output))
   root, salt = output.split()
-  prop_dict["verity_root_hash"] = root
-  prop_dict["verity_salt"] = salt
+  return root, salt
 
 
 def BuildVerityMetadata(image_size, verity_metadata_path, root_hash, salt,
@@ -453,11 +452,9 @@
   verity_fec_path = os.path.join(tempdir_name, "verity_fec.img")
 
   # Build the verity tree and get the root hash and salt.
-  BuildVerityTree(out_file, verity_image_path, prop_dict)
+  root_hash, salt = BuildVerityTree(out_file, verity_image_path)
 
   # Build the metadata blocks.
-  root_hash = prop_dict["verity_root_hash"]
-  salt = prop_dict["verity_salt"]
   verity_disable = "verity_disable" in prop_dict
   BuildVerityMetadata(
       image_size, verity_metadata_path, root_hash, salt, block_dev, signer_path,
diff --git a/tools/releasetools/verity_utils.py b/tools/releasetools/verity_utils.py
index 0e605b1..38ebcf5 100644
--- a/tools/releasetools/verity_utils.py
+++ b/tools/releasetools/verity_utils.py
@@ -169,14 +169,17 @@
       self.image.WriteRangeDataToFd(self.hashtree_info.filesystem_range, fd)
 
     generated_verity_tree = common.MakeTempFile(prefix="verity")
-    prop_dict = {}
-    BuildVerityTree(adjusted_partition, generated_verity_tree, prop_dict)
+    root_hash, salt = BuildVerityTree(adjusted_partition, generated_verity_tree)
 
-    assert prop_dict["verity_salt"] == self.hashtree_info.salt
-    if prop_dict["verity_root_hash"] != self.hashtree_info.root_hash:
-      print("Calculated verty root hash {} doesn't match the one in metadata"
-            " {}".format(prop_dict["verity_root_hash"],
-                         self.hashtree_info.root_hash))
+    # The salt should be always identical, as we use fixed value.
+    assert salt == self.hashtree_info.salt, \
+        "Calculated salt {} doesn't match the one in metadata {}".format(
+            salt, self.hashtree_info.salt)
+
+    if root_hash != self.hashtree_info.root_hash:
+      print(
+          "Calculated root hash {} doesn't match the one in metadata {}".format(
+              root_hash, self.hashtree_info.root_hash))
       return False
 
     # Reads the generated hash tree and checks if it has the exact same bytes
@@ -190,6 +193,7 @@
 
     Returns:
       hashtree_info: The information needed to reconstruct the hashtree.
+
     Raises:
       HashtreeInfoGenerationError: If we fail to generate the exact bytes of
           the hashtree.
