IMPORT: cebtree: Replace offset calculation with offsetof to avoid UB

This is the same as the equivalent fix in ebtree:

The C standard specifies that it's undefined behavior to dereference
NULL (even if you use & right after). The hand-rolled offsetof idiom
&(((s*)NULL)->f) is thus technically undefined. This clutters the
output of UBSan and is simple to fix: just use the real offsetof when
it's available.

This is cebtree commit 2d08958858c2b8a1da880061aed941324e20e748.
This commit is contained in:
Ben Kallus 2025-10-29 08:38:51 -04:00 committed by Willy Tarreau
parent 4c3351fd63
commit d5ca3bb3b4

View File

@ -555,7 +555,7 @@ struct ceb_node *_ceb_descend(struct ceb_root **root,
/* the parent will be the (possibly virtual) node so that
* &lparent->l == root, i.e. container_of(root, struct ceb_node, b[0]).
*/
lparent = (struct ceb_node *)((char *)root - (long)&((struct ceb_node *)0)->b[0]);
lparent = (struct ceb_node *)((char *)root - offsetof(struct ceb_node, b));
gparent = lparent;
if (ret_nparent)
*ret_nparent = NULL;