summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrahmajit Das <brahmajit.xyz@gmail.com>2023-09-13 05:46:59 +0000
committerJoonas Niilola <juippis@gentoo.org>2023-10-20 10:25:50 +0300
commit776672faf2298ee0d943293d75289d86b0c05d31 (patch)
treeb8184d799d982fdb287d83e3e931837bb3722c3e /net-libs/gsoap/files
parentmedia-gfx/gnofract4d: enable py3.12 (diff)
downloadgentoo-776672faf2298ee0d943293d75289d86b0c05d31.tar.gz
gentoo-776672faf2298ee0d943293d75289d86b0c05d31.tar.bz2
gentoo-776672faf2298ee0d943293d75289d86b0c05d31.zip
net-libs/gsoap: Fix incompatible integer to pointer conversion
Closes: https://bugs.gentoo.org/897870 Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com> Closes: https://github.com/gentoo/gentoo/pull/32741 Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'net-libs/gsoap/files')
-rw-r--r--net-libs/gsoap/files/gsoap-2.8.130-musl-strerror_r.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/net-libs/gsoap/files/gsoap-2.8.130-musl-strerror_r.patch b/net-libs/gsoap/files/gsoap-2.8.130-musl-strerror_r.patch
new file mode 100644
index 000000000000..01a7f82b2348
--- /dev/null
+++ b/net-libs/gsoap/files/gsoap-2.8.130-musl-strerror_r.patch
@@ -0,0 +1,59 @@
+Bug: https://bugs.gentoo.org/897870
+From: Brahmajit Das <brahmajit.xyz@gmail.com>
+Date: Tue, 12 Sep 2023 17:32:42 +0000
+Subject: [PATCH] Fix incompatible integer to pointer conversion on musl
+
+musl libc only supports XSI-compliant version of strerror_r. Hence we
+need to check if __GLIBC__ is defined or not.
+
+Also it's incorrectly assumed to use a differnt version of gethostbyname_r than
+that's available with glibc or musl libc. Without the extra !defined(__GLIBC__)
+the condition goes straight to the following section of the code
+```
+#elif defined(HAVE_GETHOSTBYNAME_R)
+ hostent = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &soap->errnum);
+#elif defined(VXWORKS)
+```
+Which is not the correct implementation of gethostbyname_r present.
+
+Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com>
+--- a/gsoap/stdsoap2.c
++++ b/gsoap/stdsoap2.c
+@@ -23145,7 +23145,7 @@ soap_strerror(struct soap *soap)
+ {
+ #ifndef WIN32
+ # ifdef HAVE_STRERROR_R
+-# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)))
++# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))) || !defined(__GLIBC__)
+ err = strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* XSI-compliant */
+ if (err != 0)
+ soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "unknown error");
+--- a/gsoap/stdsoap2.cpp
++++ b/gsoap/stdsoap2.cpp
+@@ -5457,7 +5457,7 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent,
+ {
+ #if (defined(_AIX43) || defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R)
+ struct hostent_data ht_data;
+-#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R)
++#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) || !defined(__GLIBC__)
+ int r;
+ char *tmpbuf = soap->tmpbuf;
+ size_t tmplen = sizeof(soap->tmpbuf);
+@@ -5490,7 +5490,7 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent,
+ hostent = NULL;
+ soap->errnum = h_errno;
+ }
+-#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && !defined(SUN_OS) && !defined(__QNX__) && !defined(QNX) && defined(HAVE_GETHOSTBYNAME_R)
++#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) || !defined(__GLIBC__) && !defined(SUN_OS) && !defined(__QNX__) && !defined(QNX) && defined(HAVE_GETHOSTBYNAME_R)
+ while ((r = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &hostent, &soap->errnum)) < 0)
+ {
+ if (tmpbuf != soap->tmpbuf)
+@@ -23145,7 +23145,7 @@ soap_strerror(struct soap *soap)
+ {
+ #ifndef WIN32
+ # ifdef HAVE_STRERROR_R
+-# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)))
++# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))) || !defined(__GLIBC__)
+ err = strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* XSI-compliant */
+ if (err != 0)
+ soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "unknown error");