diff options
Diffstat (limited to 'fuzzy.c')
-rw-r--r-- | fuzzy.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -222,11 +222,13 @@ int fuzzy_digest(const struct fuzzy_state *self, /*@out@*/ char *result) { /* Initial blocksize guess. */ while((size_t)SSDEEP_BS(bi) * SPAMSUM_LENGTH < self->total_size) { ++bi; - if(bi >= self->bhend) + if(bi >= SSDEEP_BS(NUM_BLOCKHASHES)) /* The input exceeds data types. */ return -1; } /* Adapt blocksize guess to actual digest length. */ + while(bi >= self->bhend) + --bi; while(bi > self->bhstart && self->bh[bi].dlen < SPAMSUM_LENGTH / 2) --bi; assert(!(bi > 0 && self->bh[bi].dlen < SPAMSUM_LENGTH / 2)); |