libsolv: Enable correct qsort_r on musl

Newer musl now has this function implemented and signatures are same as
glibc, current codepaths forces it on BSD path which is wrong for musl
and results in random segfaults in apps using libsolv e.g. opkg

(From OE-Core rev: caf0457ef1e081eed177ade5e727dd7aa3f41bdd)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj
2021-10-29 10:10:22 -07:00
committed by Richard Purdie
parent 887fa42d44
commit 671aa4424a
2 changed files with 35 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
From 06321f1a2aa89b8e028946e793344657eaad0165 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 28 Oct 2021 22:28:45 -0700
Subject: [PATCH] utils: Conside musl when wrapping qsort_r
musl now has implemented qsort_r, the signature however matches glibc
and not BSD, current check makes it such that it falls into BSD case
when building for musl, which clearly is wrong, therefore instead of
just checking for glibc check for linux to decide which qsort_r
signature to use. This covers both glibc and musl
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/util.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/util.c b/src/util.c
index 72426e09..8f29bc5a 100644
--- a/src/util.c
+++ b/src/util.c
@@ -159,7 +159,7 @@ solv_setcloexec(int fd, int state)
see also: http://sources.redhat.com/ml/libc-alpha/2008-12/msg00003.html
*/
-#if (defined(__GLIBC__) || defined(__NEWLIB__)) && (defined(HAVE_QSORT_R) || defined(HAVE___QSORT_R))
+#if (defined(__linux__) || defined(__NEWLIB__)) && (defined(HAVE_QSORT_R) || defined(HAVE___QSORT_R))
void
solv_sort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *compard)
--
2.33.1

View File

@@ -9,6 +9,7 @@ LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
DEPENDS = "expat zlib"
SRC_URI = "git://github.com/openSUSE/libsolv.git;branch=master \
file://0001-utils-Conside-musl-when-wrapping-qsort_r.patch \
"
SRCREV = "f618e6aae1d44be633b2ab91d4fd4f4f974f4d40"