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.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user