From d4f7ecd334cb666d2b58d80b40fe95d9b89f6716 Mon Sep 17 00:00:00 2001 From: Eivind Uggedal Date: Fri, 11 Mar 2016 15:06:18 +0000 Subject: [PATCH] uniq: always store previous line length A bug was introduced in the NUL support refactor leading to the length of the previous line only being saved if the previous line was shorter than the current line. If triggered this lead to copying too much data into the previous line buffer. Behavior before: printf '1234\na\n' | ./uniq 1234 a 4 Behavior after: printf '1234\na\n' | ./uniq 1234 a --- uniq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uniq.c b/uniq.c index 4f35d05..f1ad6a7 100644 --- a/uniq.c +++ b/uniq.c @@ -62,9 +62,9 @@ uniqline(FILE *ofp, struct line *l) if (l) { if (!prevl.data || l->len >= prevl.len) { - prevl.len = l->len; - prevl.data = erealloc(prevl.data, prevl.len); + prevl.data = erealloc(prevl.data, l->len); } + prevl.len = l->len; memcpy(prevl.data, l->data, prevl.len); prevoff = loff; }