From 8ca79a2993e572beb7be56be1b0b95482c3a2431 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sat, 14 May 2016 18:56:55 -0700 Subject: [PATCH] linecmp: Handle NUL bytes properly Test case: if [ "$(printf 'a\na\0b' | ./sort -u)" = "$(printf 'a\na\0b')" ] ; then echo pass else echo fail fi --- libutil/linecmp.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/libutil/linecmp.c b/libutil/linecmp.c index f5a6cf9..08fc0e3 100644 --- a/libutil/linecmp.c +++ b/libutil/linecmp.c @@ -10,15 +10,8 @@ linecmp(struct line *a, struct line *b) { int res = 0; - if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len)))) { - if (a->len > b->len) { - res = a->data[b->len]; - } else if (b->len > a->len) { - res = -b->data[a->len]; - } else { - res = 0; - } - } + if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len)))) + res = a->len - b->len; return res; }