Xext/xselinux: add fast path to ProcSELinuxListSelections()

If there's nothing to send, skip over a bunch of code to make a list
that won't be used, and hopefully make the code path clearer to both
humans and static analyzers, who raise errors as seen in #1817 of
dereferencing NULL pointers when count == 0.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2072>
This commit is contained in:
Alan Coopersmith 2025-10-04 17:19:05 -07:00 committed by Marge Bot
parent 3da60c96a9
commit d34243606c

View file

@ -450,8 +450,10 @@ ProcSELinuxListSelections(ClientPtr client)
count = 0; count = 0;
for (pSel = CurrentSelections; pSel; pSel = pSel->next) for (pSel = CurrentSelections; pSel; pSel = pSel->next)
count++; count++;
if (count == 0)
return SELinuxSendItemsToClient(client, NULL, 0, 0);
items = calloc(count, sizeof(SELinuxListItemRec)); items = calloc(count, sizeof(SELinuxListItemRec));
if (count && !items) if (!items)
return BadAlloc; return BadAlloc;
/* Fill in the items and calculate size */ /* Fill in the items and calculate size */