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 }
