From 80172b86edfb4a46a26de13c741a8da97d1b7713 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Thu, 8 May 2014 12:54:09 +0200 Subject: c-files: fix offset calculation for overlap --- find-bytes.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/find-bytes.c b/find-bytes.c index 6e5af9c..8415d4d 100644 --- a/find-bytes.c +++ b/find-bytes.c @@ -75,7 +75,9 @@ void find_key(FILE *fp, char *key, size_t key_len) { while (next_p && end_p >= next_p + key_len) { next_p = memmem(next_p, end_p - next_p, key, key_len); if (next_p) { - size_t offset = (next_p - buf_start) + position; + /* if there is an overlap with the previous chunk, then the + * offset may be smaller than position. */ + size_t offset = position + (next_p - new_data_p); printf(as_hex ? "%zx\n" : "%zi\n", offset); next_p += key_len; } -- cgit v1.2.1