summaryrefslogtreecommitdiff
path: root/net-libs/gsoap/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-10-20 09:50:23 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-10-20 09:50:23 +0100
commit547caa904733bc2a3ac112415990a114ecbe8824 (patch)
treeb8976d40b28d2cb015e3c07254aee99fe0ad655a /net-libs/gsoap/files
parent9346d46d1a9e0399ca3a4d3eb40689d0daa58ebc (diff)
gentoo auto-resync : 20:10:2023 - 09:50:23
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");