From 6fd6dacb399986a432f9fb648667d5959f37a236 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Tue, 21 Jan 2014 20:17:40 +0000 Subject: [PATCH] Fix loop in RR sort. --- src/dnssec.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/dnssec.c b/src/dnssec.c index d61eff9..0a80c7b 100644 --- a/src/dnssec.c +++ b/src/dnssec.c @@ -457,7 +457,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int else left2 = len2 - len1, left1 = 0, len = len1; - rc = memcmp(buff1, buff2, len); + rc = (len == 0) ? 0 : memcmp(buff1, buff2, len); if (rc > 0 || (rc == 0 && quit && len1 > len2)) { @@ -466,6 +466,8 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int rrset[i] = tmp; swap = quit = 1; } + else if (rc < 0) + quit = 1; } } } while (swap);