aboutsummaryrefslogtreecommitdiffstats
path: root/main/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2017-01-02 15:32:02 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2017-01-02 15:32:49 +0000
commitf6a385f8b07c6b6c16fc026dffa0b29d097b785d (patch)
treec75c172975f5a36407386c4e6575f5d15792e4a6 /main/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
parentfdccff09e3ed4ded732b2d22d5d571642ad268bc (diff)
downloadaports-f6a385f8b07c6b6c16fc026dffa0b29d097b785d.tar.bz2
aports-f6a385f8b07c6b6c16fc026dffa0b29d097b785d.tar.xz
main/open-vm-tools: upgrade to 10.1.0 and enable -dbg
Diffstat (limited to 'main/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch')
-rw-r--r--main/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch147
1 files changed, 147 insertions, 0 deletions
diff --git a/main/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch b/main/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
new file mode 100644
index 0000000000..361997bdeb
--- /dev/null
+++ b/main/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
@@ -0,0 +1,147 @@
+From 85f7be6e79602976a2bf002e04f8abc6dffff7c9 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 18 Nov 2015 10:05:07 +0000
+Subject: [PATCH 07/14] Use configure to test for feature instead of platform
+
+Test for various functions instead of trying to keep track of what
+platform and what version of the given platform has support for what.
+
+This should make it easier to port to currently unknown platforms and
+will solve the issue if a platform add support for a missing feature in
+the future.
+
+The features we test for are:
+- getifaddrs
+- getauxval
+- issetugid
+- __secure_getenv
+
+This is needed for musl libc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/configure.ac | 4 ++++
+ open-vm-tools/lib/misc/idLinux.c | 30 ++++++++++++++----------------
+ open-vm-tools/lib/nicInfo/nicInfoPosix.c | 8 ++++++--
+ 3 files changed, 24 insertions(+), 18 deletions(-)
+
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 419540d7..b9f89115 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -798,6 +798,7 @@ AC_CHECK_FUNCS(
+
+ AC_CHECK_FUNCS([ecvt])
+ AC_CHECK_FUNCS([fcvt])
++AC_CHECK_FUNCS([getifaddrs getauxval issetugid __secure_getenv])
+
+ AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])
+
+@@ -1063,10 +1064,13 @@ AC_PATH_PROG(
+ ###
+
+ AC_CHECK_HEADERS([crypt.h])
++AC_CHECK_HEADERS([ifaddrs.h])
+ AC_CHECK_HEADERS([inttypes.h])
+ AC_CHECK_HEADERS([stdint.h])
+ AC_CHECK_HEADERS([stdlib.h])
+ AC_CHECK_HEADERS([wchar.h])
++AC_CHECK_HEADERS([net/if.h])
++AC_CHECK_HEADERS([sys/auxv.h])
+ AC_CHECK_HEADERS([sys/inttypes.h])
+ AC_CHECK_HEADERS([sys/io.h])
+ AC_CHECK_HEADERS([sys/param.h]) # Required to make the sys/user.h check work correctly on FreeBSD
+diff --git a/open-vm-tools/lib/misc/idLinux.c b/open-vm-tools/lib/misc/idLinux.c
+index fae31bf4..44c78f44 100644
+--- a/open-vm-tools/lib/misc/idLinux.c
++++ b/open-vm-tools/lib/misc/idLinux.c
+@@ -27,12 +27,9 @@
+ #include <sys/syscall.h>
+ #include <string.h>
+ #include <unistd.h>
+-#ifdef __linux__
+-#if defined(__GLIBC__) && \
+- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
++#ifdef HAVE_SYS_AUXV_H
+ #include <sys/auxv.h>
+ #endif
+-#endif
+ #ifdef __APPLE__
+ #include <sys/socket.h>
+ #include <TargetConditionals.h>
+@@ -997,31 +994,32 @@ Id_EndSuperUser(uid_t uid) // IN:
+ static Bool
+ IdIsSetUGid(void)
+ {
+-#if defined(__ANDROID__)
+- /* Android does not have a secure_getenv, so be conservative. */
+- return TRUE;
+-#else
+ /*
+ * We use __secure_getenv, which returns NULL if the binary is
+- * setuid or setgid. Alternatives include,
++ * setuid or setgid, when issetugid or getauxval(AT_SECURE) is not
++ * available. Alternatives include,
+ *
+- * a) getauxval(AT_SECURE); not available until glibc 2.16.
+- * b) __libc_enable_secure; may not be exported.
++ * a) issetugid(); not (yet?) available in glibc.
++ * b) getauxval(AT_SECURE); not available until glibc 2.16.
++ * c) __libc_enable_secure; may not be exported.
+ *
+- * Use (a) when we are based on glibc 2.16, or newer.
++ * Use (b) when we are based on glibc 2.16, or newer.
+ */
+
+-#if defined(__GLIBC__) && \
+- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
++#if HAVE_ISSETUGID
++ return issetugid();
++#elif HAVE_GETAUXVAL
+ return getauxval(AT_SECURE) != 0;
+-#else
++#elif HAVE___SECURE_GETENV
+ static const char envName[] = "VMW_SETUGID_TEST";
+
+ if (setenv(envName, "1", TRUE) == -1) {
+ return TRUE; /* Conservative */
+ }
+ return __secure_getenv(envName) == NULL;
+-#endif
++#else
++ /* Android does not have a secure_getenv, so be conservative. */
++ return TRUE;
+ #endif
+ }
+ #endif
+diff --git a/open-vm-tools/lib/nicInfo/nicInfoPosix.c b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
+index c5f7917a..637224d7 100644
+--- a/open-vm-tools/lib/nicInfo/nicInfoPosix.c
++++ b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
+@@ -34,9 +34,13 @@
+ #include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <errno.h>
+-#if defined(__FreeBSD__) || defined(__APPLE__)
++#if HAVE_SYS_SYSCTL_H
+ # include <sys/sysctl.h>
++#endif
++#if HAVE_IFADDRS_H
+ # include <ifaddrs.h>
++#endif
++#if HAVE_NET_IF_H
+ # include <net/if.h>
+ #endif
+ #ifndef NO_DNET
+@@ -348,7 +352,7 @@ GuestInfoGetNicInfo(NicInfoV3 *nicInfo) // OUT
+ *
+ ******************************************************************************
+ */
+-#if defined(__FreeBSD__) || defined(__APPLE__) || defined(USERWORLD)
++#if defined(NO_DNET) && defined(HAVE_GETIFADDRS)
+
+ char *
+ GuestInfoGetPrimaryIP(void)
+--
+2.11.0
+