summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtienne Guesnet <etienne.guesnet.external@atos.net>2020-09-11 15:58:49 +0200
committerDaniel Black <daniel@mariadb.org>2020-12-16 08:07:04 +1100
commit77d7de8d47bf1aa9808cc7e67270dfc9c22ca7bd (patch)
tree6cb5f4775975fa7a9562d60601c45b1f3cd459d6
parent2f5d372444cff53914cfcd118e92a91f575cec35 (diff)
downloadmariadb-git-77d7de8d47bf1aa9808cc7e67270dfc9c22ca7bd.tar.gz
Support of AIX for auth_socket plugin
-rw-r--r--plugin/auth_socket/CMakeLists.txt14
-rw-r--r--plugin/auth_socket/auth_socket.c6
2 files changed, 20 insertions, 0 deletions
diff --git a/plugin/auth_socket/CMakeLists.txt b/plugin/auth_socket/CMakeLists.txt
index 6f3d571ea43..a3f42d416a7 100644
--- a/plugin/auth_socket/CMakeLists.txt
+++ b/plugin/auth_socket/CMakeLists.txt
@@ -83,6 +83,19 @@ IF (HAVE_GETPEERUCRED AND HAVE_GETPWUID_POSIX_FINAL)
SET(ok 1)
ELSE()
+# AIX also!
+CHECK_CXX_SOURCE_COMPILES(
+"#include <sys/socket.h>
+int main() {
+ struct peercred_struct cred;
+ getsockopt(0, SOL_SOCKET, SO_PEERID, &cred, 0);
+ }" HAVE_PEERCRED_STRUCT)
+
+IF (HAVE_PEERCRED_STRUCT)
+ ADD_DEFINITIONS(-DHAVE_PEERCRED_STRUCT)
+ SET(ok 1)
+ELSE()
+
# Who else? Anyone?
# C'mon, show your creativity, be different! ifdef's are fun, aren't they?
@@ -90,6 +103,7 @@ ENDIF()
ENDIF()
ENDIF()
ENDIF()
+ENDIF()
IF(ok)
MYSQL_ADD_PLUGIN(auth_socket auth_socket.c DEFAULT)
diff --git a/plugin/auth_socket/auth_socket.c b/plugin/auth_socket/auth_socket.c
index b10679a5cc2..c20defed872 100644
--- a/plugin/auth_socket/auth_socket.c
+++ b/plugin/auth_socket/auth_socket.c
@@ -50,6 +50,12 @@
#elif defined HAVE_GETPEERUCRED
#include <ucred.h>
+#elif defined HAVE_PEERCRED_STRUCT
+#define level SOL_SOCKET
+#define SO_PEERCRED SO_PEERID
+#define uid euid
+#define ucred peercred_struct
+
#else
#error impossible
#endif