From: Andrew Tridgell Date: Tue, 5 Jan 1999 06:31:58 +0000 (+0000) Subject: don't try to match checksums of two blocks which are of unequal X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/496d9272c1b3094e4a1c31273af5401bac1720c0 don't try to match checksums of two blocks which are of unequal 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 :) --- diff --git a/match.c b/match.c index c231c2ac..613eaec8 100644 --- a/match.c +++ b/match.c @@ -178,7 +178,7 @@ static void hash_search(int f,struct sum_struct *s, for (; jcount && 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",