From b89326ac41f48f921e89717cf106a609a9e52190 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 25 Aug 2015 09:26:22 -0400 Subject: [PATCH] rollsum: Fix assertion for CRC matches It's possible for two blocks to have the same CRC but different length. Rather than asserting, treat them as not matching. --- src/libostree/ostree-rollsum.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libostree/ostree-rollsum.c b/src/libostree/ostree-rollsum.c index a2007654..7e9190ce 100644 --- a/src/libostree/ostree-rollsum.c +++ b/src/libostree/ostree-rollsum.c @@ -162,7 +162,10 @@ _ostree_compute_rollsum_matches (GBytes *from, g_variant_get (from_chunk, "(utt)", &fromcrc, &from_start, &from_offset); g_assert (fromcrc == tocrc); - g_assert (to_offset == from_offset); + + /* Same crc32 but different length, skip it. */ + if (to_offset != from_offset) + continue; /* Rsync uses a cryptographic checksum, but let's be * very conservative here and just memcmp.