From: Michał Kępień Date: Tue, 15 May 2018 06:18:01 +0000 (+0200) Subject: dns_rdataslab_merge(): use dns_rdata_compare() instead of compare_rdata() X-Git-Tag: v9.13.0~16^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9bc6ba0be9447c66d8f2b055a696ff12842c7863;p=thirdparty%2Fbind9.git dns_rdataslab_merge(): use dns_rdata_compare() instead of compare_rdata() compare_rdata() was meant to be used as a qsort() callback. Meanwhile, dns_rdataslab_merge() calls compare_rdata() for a pair of dns_rdata_t structures rather than a pair of struct xrdata structures, which is harmless, but triggers an ubsan warning: rdataslab.c:84:33: runtime error: member access within address
with insufficient space for an object of type 'const struct xrdata' Use dns_rdata_compare() instead of compare_rdata() to prevent the warning from being triggered. --- diff --git a/lib/dns/rdataslab.c b/lib/dns/rdataslab.c index 3df852e4254..a442fe9d299 100644 --- a/lib/dns/rdataslab.c +++ b/lib/dns/rdataslab.c @@ -796,7 +796,8 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab, else if (nadded == ncount) fromold = ISC_TRUE; else - fromold = ISC_TF(compare_rdata(&ordata, &nrdata) < 0); + fromold = ISC_TF(dns_rdata_compare(&ordata, + &nrdata) < 0); if (fromold) { #if DNS_RDATASET_FIXED offsettable[oorder] = tcurrent - offsetbase;