diff --git a/lz4diff/lz4diff.cc b/lz4diff/lz4diff.cc
index 3e4d3b4..25dce00 100644
--- a/lz4diff/lz4diff.cc
+++ b/lz4diff/lz4diff.cc
@@ -122,8 +122,7 @@
 static bool ConstructLz4diffPatch(Blob inner_patch,
                                   const Lz4diffHeader& header,
                                   Blob* output) {
-  Blob patch;
-  patch.resize(kLz4diffHeaderSize);
+  Blob patch(kLz4diffHeaderSize);
   std::memcpy(patch.data(), kLz4diffMagic.data(), kLz4diffMagic.size());
   *reinterpret_cast<uint32_t*>(patch.data() + kLz4diffMagic.size()) =
       htobe32(kLz4diffVersion);
@@ -182,16 +181,15 @@
              std::string_view dst,
              const CompressedFile& src_file_info,
              const CompressedFile& dst_file_info,
-             const bool zero_padding_enabled,
              Blob* output,
              InstallOperation::Type* op_type) noexcept {
   const auto& src_block_info = src_file_info.blocks;
   const auto& dst_block_info = dst_file_info.blocks;
 
-  auto decompressed_src =
-      TryDecompressBlob(src, src_block_info, zero_padding_enabled);
-  auto decompressed_dst =
-      TryDecompressBlob(dst, dst_block_info, zero_padding_enabled);
+  auto decompressed_src = TryDecompressBlob(
+      src, src_block_info, src_file_info.zero_padding_enabled);
+  auto decompressed_dst = TryDecompressBlob(
+      dst, dst_block_info, dst_file_info.zero_padding_enabled);
   if (decompressed_src.empty() || decompressed_dst.empty()) {
     LOG(ERROR) << "Failed to decompress input data";
     return false;
@@ -222,7 +220,7 @@
 
   auto recompressed_blob = TryCompressBlob(ToStringView(decompressed_dst),
                                            dst_block_info,
-                                           zero_padding_enabled,
+                                           dst_file_info.zero_padding_enabled,
                                            dst_file_info.algo);
   TEST_AND_RETURN_FALSE(recompressed_blob.size() > 0);
 
@@ -236,14 +234,12 @@
              const Blob& dst,
              const CompressedFile& src_file_info,
              const CompressedFile& dst_file_info,
-             const bool zero_padding_enabled,
              Blob* output,
              InstallOperation::Type* op_type) noexcept {
   return Lz4Diff(ToStringView(src),
                  ToStringView(dst),
                  src_file_info,
                  dst_file_info,
-                 zero_padding_enabled,
                  output,
                  op_type);
 }
diff --git a/lz4diff/lz4diff.h b/lz4diff/lz4diff.h
index a1a1b9b..92bdb10 100644
--- a/lz4diff/lz4diff.h
+++ b/lz4diff/lz4diff.h
@@ -30,7 +30,6 @@
              std::string_view dst,
              const CompressedFile& src_file_info,
              const CompressedFile& dst_file_info,
-             const bool zero_padding_enabled,
              Blob* output,
              InstallOperation::Type* op_type = nullptr) noexcept;
 
@@ -38,7 +37,6 @@
              const Blob& dst,
              const CompressedFile& src_file_info,
              const CompressedFile& dst_file_info,
-             const bool zero_padding_enabled,
              Blob* output,
              InstallOperation::Type* op_type = nullptr) noexcept;
 
diff --git a/lz4diff/lz4diff_compress.cc b/lz4diff/lz4diff_compress.cc
index 333148a..e580c91 100644
--- a/lz4diff/lz4diff_compress.cc
+++ b/lz4diff/lz4diff_compress.cc
@@ -40,8 +40,7 @@
     compressed_size += block.compressed_length;
   }
   CHECK_EQ(uncompressed_size, blob.size());
-  Blob output;
-  output.resize(utils::RoundUp(compressed_size, kBlockSize));
+  Blob output(utils::RoundUp(compressed_size, kBlockSize));
   auto hc = LZ4_createStreamHC();
   DEFER {
     if (hc) {
@@ -110,10 +109,6 @@
                   0);
       }
     }
-    if (static_cast<uint64_t>(src_size) != block.uncompressed_length) {
-      LOG(WARNING) << "Recompress size mismatch: " << src_size << ", "
-                   << block.uncompressed_length;
-    }
   }
   // Any trailing data will be copied to the output buffer.
   output.insert(output.end(), blob.begin() + uncompressed_size, blob.end());
diff --git a/lz4diff/lz4diff_unittest.cc b/lz4diff/lz4diff_unittest.cc
new file mode 100644
index 0000000..aabff99
--- /dev/null
+++ b/lz4diff/lz4diff_unittest.cc
@@ -0,0 +1,110 @@
+//
+// Copyright (C) 2021 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <unistd.h>
+
+#include <algorithm>
+#include <mutex>
+#include <string>
+#include <vector>
+
+#include <base/format_macros.h>
+#include <base/logging.h>
+#include <base/strings/string_number_conversions.h>
+#include <base/strings/string_util.h>
+#include <base/strings/stringprintf.h>
+#include <gtest/gtest.h>
+#include <erofs/internal.h>
+#include <erofs/io.h>
+
+#include "lz4diff/lz4diff.h"
+#include "lz4diff/lz4patch.h"
+#include "update_engine/common/test_utils.h"
+#include "update_engine/common/utils.h"
+#include "update_engine/lz4diff/lz4diff_compress.h"
+#include "update_engine/payload_generator/delta_diff_generator.h"
+#include "update_engine/payload_generator/erofs_filesystem.h"
+#include "update_engine/payload_generator/extent_utils.h"
+
+using std::string;
+using std::vector;
+
+namespace chromeos_update_engine {
+
+namespace {
+class Lz4diffTest : public ::testing::Test {};
+
+using test_utils::GetBuildArtifactsPath;
+
+// This test parses the sample images generated during build time with the
+// "generate_image.sh" script. The expected conditions of each file in these
+// images is encoded in the file name, as defined in the mentioned script.
+TEST_F(Lz4diffTest, DiffElfBinary) {
+  const auto old_img = GetBuildArtifactsPath("gen/erofs.img");
+  const auto new_img = GetBuildArtifactsPath("gen/erofs_new.img");
+  auto old_fs = ErofsFilesystem::CreateFromFile(old_img);
+  ASSERT_NE(old_fs, nullptr);
+  ASSERT_EQ(kBlockSize, old_fs->GetBlockSize());
+  auto new_fs = ErofsFilesystem::CreateFromFile(new_img);
+  ASSERT_NE(new_fs, nullptr);
+  ASSERT_EQ(kBlockSize, new_fs->GetBlockSize());
+
+  vector<ErofsFilesystem::File> old_files;
+  ASSERT_TRUE(old_fs->GetFiles(&old_files));
+  vector<ErofsFilesystem::File> new_files;
+  ASSERT_TRUE(new_fs->GetFiles(&new_files));
+
+  const auto it =
+      std::find_if(old_files.begin(), old_files.end(), [](const auto& file) {
+        return file.name == "/delta_generator";
+      });
+  ASSERT_NE(it, old_files.end())
+      << "There should be a delta_generator entry in gen/erofs.img. Is the "
+         "generate_test_erofs_imgages.sh script implemented wrong?";
+  const auto new_it =
+      std::find_if(new_files.begin(), new_files.end(), [](const auto& file) {
+        return file.name == "/delta_generator";
+      });
+  ASSERT_NE(new_it, new_files.end())
+      << "There should be a delta_generator entry in gen/erofs_new.img. Is the "
+         "generate_test_erofs_imgages.sh script implemented wrong?";
+
+  const auto old_delta_generator = *it;
+  auto new_delta_generator = *new_it;
+  Blob old_data;
+  ASSERT_TRUE(utils::ReadExtents(
+      old_img, old_delta_generator.extents, &old_data, kBlockSize));
+  Blob new_data;
+  ASSERT_TRUE(utils::ReadExtents(
+      new_img, new_delta_generator.extents, &new_data, kBlockSize));
+  // New image is actually generated with compression level 7, we use a
+  // different compression level so that recompressed blob is different. This
+  // way we can test the postfix functionality.
+  new_delta_generator.compressed_file_info.algo.set_level(5);
+  Blob diff_blob;
+  ASSERT_TRUE(Lz4Diff(old_data,
+                      new_data,
+                      old_delta_generator.compressed_file_info,
+                      new_delta_generator.compressed_file_info,
+                      &diff_blob));
+  Blob patched_new_data;
+  ASSERT_TRUE(Lz4Patch(old_data, diff_blob, &patched_new_data));
+  ASSERT_EQ(patched_new_data, new_data);
+}
+
+}  // namespace
+
+}  // namespace chromeos_update_engine
diff --git a/lz4diff/lz4patch.cc b/lz4diff/lz4patch.cc
index 1dcf933..7766e24 100644
--- a/lz4diff/lz4patch.cc
+++ b/lz4diff/lz4patch.cc
@@ -297,6 +297,10 @@
   return true;
 }
 
+bool Lz4Patch(const Blob& src_data, const Blob& patch_data, Blob* output) {
+  return Lz4Patch(ToStringView(src_data), ToStringView(patch_data), output);
+}
+
 std::ostream& operator<<(std::ostream& out, const CompressionAlgorithm& info) {
   out << "Algo {type: " << info.Type_Name(info.type());
   if (info.level() != 0) {
diff --git a/lz4diff/lz4patch.h b/lz4diff/lz4patch.h
index 5610891..8f66180 100644
--- a/lz4diff/lz4patch.h
+++ b/lz4diff/lz4patch.h
@@ -17,12 +17,14 @@
 #ifndef UPDATE_ENGINE_LZ4DIFF_LZ4PATCH_H_
 #define UPDATE_ENGINE_LZ4DIFF_LZ4PATCH_H_
 
+#include "lz4diff/lz4diff_compress.h"
 #include "lz4diff_format.h"
 
 namespace chromeos_update_engine {
 bool Lz4Patch(std::string_view src_data,
               std::string_view patch_data,
               Blob* output);
+bool Lz4Patch(const Blob& src_data, const Blob& patch_data, Blob* output);
 
 std::ostream& operator<<(std::ostream& out, const Lz4diffHeader&);
 
