libsemanage: do not sort empty records

Do not sort empty records to avoid calling qsort(3) with a NULL pointer.
qsort(3) might be annotated with the function attribute nonnull and
UBSan then complains:

    database_join.c:80:2: runtime error: null pointer passed as argument 1, which is declared to never be null

Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
This commit is contained in:
Christian Göttsche 2021-10-19 17:11:22 +02:00 committed by Nicolas Iooss
parent b98d3c4c53
commit ea539017fb
No known key found for this signature in database
GPG Key ID: C191415F340DAAA0
1 changed files with 8 additions and 4 deletions

View File

@ -77,10 +77,14 @@ static int dbase_join_cache(semanage_handle_t * handle, dbase_join_t * dbase)
goto err;
/* Sort for quicker merge later */
qsort(records1, rcount1, sizeof(record1_t *),
(int (*)(const void *, const void *))rtable1->compare2_qsort);
qsort(records2, rcount2, sizeof(record2_t *),
(int (*)(const void *, const void *))rtable2->compare2_qsort);
if (rcount1 > 0) {
qsort(records1, rcount1, sizeof(record1_t *),
(int (*)(const void *, const void *))rtable1->compare2_qsort);
}
if (rcount2 > 0) {
qsort(records2, rcount2, sizeof(record2_t *),
(int (*)(const void *, const void *))rtable2->compare2_qsort);
}
/* Now merge into this dbase */
while (i < rcount1 || j < rcount2) {