Commit 9bc6ba0b authored by Michał Kępień's avatar Michał Kępień
Browse files

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 <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.
parent 34de85da
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment