From: Alan T. DeKok Date: Tue, 26 Dec 2023 15:55:32 +0000 (-0500) Subject: catch more corner cases X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9f245f47edcd09c7b89d519ae8e684afe6fd1f87;p=thirdparty%2Ffreeradius-server.git catch more corner cases --- diff --git a/src/lib/util/pair.c b/src/lib/util/pair.c index 3db078ae3c4..38892de6cc1 100644 --- a/src/lib/util/pair.c +++ b/src/lib/util/pair.c @@ -1041,6 +1041,7 @@ fr_pair_t *fr_pair_list_iter_leaf(fr_pair_list_t *list, fr_pair_t *vp) */ if (!vp) { vp = fr_pair_list_head(list); + if (!vp) goto next_parent_sibling; next_sibling: if (fr_type_is_leaf(vp->vp_type)) return vp; @@ -1056,8 +1057,10 @@ fr_pair_t *fr_pair_list_iter_leaf(fr_pair_list_t *list, fr_pair_t *vp) /* * Go to the next sibling in the parent list of vp. */ -redo: +next_parent_sibling: parent_list = fr_pair_parent_list(vp); + if (!parent_list) return NULL; + next = fr_pair_list_next(parent_list, vp); if (!next) { /* @@ -1068,7 +1071,7 @@ redo: parent = fr_pair_parent(vp); fr_assert(&parent->vp_group == parent_list); vp = parent; - goto redo; + goto next_parent_sibling; } /*