don't try to match checksums of two blocks which are of unequal
authorAndrew Tridgell <tridge@samba.org>
Tue, 5 Jan 1999 06:31:58 +0000 (06:31 +0000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 5 Jan 1999 06:31:58 +0000 (06:31 +0000)
size. This explains the high false_alarms rate that I saw for one of
the sample data files used in my thesis.

The bug was harmless as the strong checksum easily caught all the
false matches but it's been bugging me as I couldn't explain it :)

match.c

diff --git a/match.c b/match.c
index c231c2a..613eaec 100644 (file)
--- a/match.c
+++ b/match.c
@@ -178,7 +178,7 @@ static void hash_search(int f,struct sum_struct *s,
                for (; j<s->count && targets[j].t == t; j++) {
                        int i = targets[j].i;
                        
-                       if (sum != s->sums[i].sum1) continue;
+                       if (sum != s->sums[i].sum1 || s->sums[i].len > (len-offset)) continue;
                        
                        if (verbose > 3)
                                rprintf(FINFO,"potential match at %d target=%d %d sum=%08x\n",