commit:     5baa90941648c07aea30af35e2b5e2fd61d3ec40
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 11 23:35:13 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Nov 11 23:35:13 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5baa9094

sys-libs/musl: workaround getifaddrs bug w/ qemu-user vs musl BE

Bug: https://gitlab.com/qemu-project/qemu/-/issues/2485
Closes: https://bugs.gentoo.org/914256
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/musl-getifaddrs-qemu-workaround.patch    | 25 ++++++++++++++++++++++
 .../{musl-9999.ebuild => musl-1.2.5-r6.ebuild}     | 11 ++++++++++
 sys-libs/musl/musl-9999.ebuild                     |  4 ++++
 3 files changed, 40 insertions(+)

diff --git a/sys-libs/musl/files/musl-getifaddrs-qemu-workaround.patch 
b/sys-libs/musl/files/musl-getifaddrs-qemu-workaround.patch
new file mode 100644
index 000000000000..0ec6237202bf
--- /dev/null
+++ b/sys-libs/musl/files/musl-getifaddrs-qemu-workaround.patch
@@ -0,0 +1,25 @@
+https://www.openwall.com/lists/musl/2018/06/02/4
+https://gitlab.com/qemu-project/qemu/-/issues/2485
+https://bugs.gentoo.org/914256
+--- a/src/network/netlink.h
++++ b/src/network/netlink.h
+@@ -80,13 +80,17 @@ struct ifaddrmsg {
+ #define NLMSG_DATALEN(nlh)    ((nlh)->nlmsg_len-sizeof(struct nlmsghdr))
+ #define NLMSG_DATAEND(nlh)    ((char*)(nlh)+(nlh)->nlmsg_len)
+ #define NLMSG_NEXT(nlh)               (struct 
nlmsghdr*)((char*)(nlh)+NETLINK_ALIGN((nlh)->nlmsg_len))
+-#define NLMSG_OK(nlh,end)     ((char*)(end)-(char*)(nlh) >= sizeof(struct 
nlmsghdr))
++#define NLMSG_OK(nlh,len)     ((len) >= (int)sizeof(struct nlmsghdr) && \
++                               (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && 
\
++                               (nlh)->nlmsg_len <= (len))
+ 
+ #define RTA_DATA(rta)         ((void*)((char*)(rta)+sizeof(struct rtattr)))
+ #define RTA_DATALEN(rta)      ((rta)->rta_len-sizeof(struct rtattr))
+ #define RTA_DATAEND(rta)      ((char*)(rta)+(rta)->rta_len)
+ #define RTA_NEXT(rta)         (struct 
rtattr*)((char*)(rta)+NETLINK_ALIGN((rta)->rta_len))
+-#define RTA_OK(rta,end)               ((char*)(end)-(char*)(rta) >= 
sizeof(struct rtattr))
++#define RTA_OK(rta,len)               ((len) >= (int)sizeof(struct rtattr) && 
\
++                               (rta)->rta_len >= sizeof(struct rtattr) && \
++                               (rta)->rta_len <= (len))
+ 
+ #define NLMSG_RTA(nlh,len)    ((void*)((char*)(nlh)+sizeof(struct 
nlmsghdr)+NETLINK_ALIGN(len)))
+ #define NLMSG_RTAOK(rta,nlh)  RTA_OK(rta,NLMSG_DATAEND(nlh))

diff --git a/sys-libs/musl/musl-9999.ebuild b/sys-libs/musl/musl-1.2.5-r6.ebuild
similarity index 95%
copy from sys-libs/musl/musl-9999.ebuild
copy to sys-libs/musl/musl-1.2.5-r6.ebuild
index ff2e8d40a78d..62a388267bf5 100644
--- a/sys-libs/musl/musl-9999.ebuild
+++ b/sys-libs/musl/musl-1.2.5-r6.ebuild
@@ -50,6 +50,17 @@ else
        PDEPEND="!crypt? ( sys-libs/libxcrypt[system] )"
 fi
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.2.4-arm64-crti-alignment.patch
+       "${FILESDIR}"/${PN}-sched.h-reduce-namespace-conflicts.patch
+       "${FILESDIR}"/${PN}-iconv-out-of-bound-fix.patch
+       "${FILESDIR}"/${PN}-arm-crti-alignment.patch
+       "${FILESDIR}"/${PN}-ppc-clobber.patch
+       "${FILESDIR}"/${PN}-dns-union.patch
+       "${FILESDIR}"/${PN}-getauxval.patch
+       "${FILESDIR}"/${PN}-getifaddrs-qemu-workaround.patch
+)
+
 just_headers() {
        use headers-only && target_is_not_host
 }

diff --git a/sys-libs/musl/musl-9999.ebuild b/sys-libs/musl/musl-9999.ebuild
index ff2e8d40a78d..13b2a4f893dd 100644
--- a/sys-libs/musl/musl-9999.ebuild
+++ b/sys-libs/musl/musl-9999.ebuild
@@ -50,6 +50,10 @@ else
        PDEPEND="!crypt? ( sys-libs/libxcrypt[system] )"
 fi
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-getifaddrs-qemu-workaround.patch
+)
+
 just_headers() {
        use headers-only && target_is_not_host
 }

Reply via email to