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?hp=34d3eed4627bbb30ff77c92e2c055c3e5836de77 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",