samba: Fix configure tests to work with clang

Do not use nested functions ( main inside main )
Use global scope for __thread variables

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj 2019-09-05 21:46:18 -07:00
parent 391d795716
commit e7b382602a
3 changed files with 90 additions and 0 deletions

View File

@ -0,0 +1,30 @@
From 3a935c638605bfb392ca7780d22c08c1a0a71e71 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 5 Sep 2019 21:37:33 -0700
Subject: [PATCH 1/2] lib/replace/wscript: Avoid generating nested main
function
clang is not happy when it sees another main nested inside the main
function and fails the test for prctl syscall, therefore avoid adding
implicit main() here
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
lib/replace/wscript | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/replace/wscript b/lib/replace/wscript
index a7fd25d..d6767fc 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -137,6 +137,7 @@ def configure(conf):
}
''',
'HAVE_PRCTL',
+ addmain=False,
headers='sys/prctl.h',
msg='Checking for prctl syscall')
--
2.23.0

View File

@ -0,0 +1,58 @@
From c62a6f32ab965de2ec77a614f20f04568116835b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 5 Sep 2019 21:39:05 -0700
Subject: [PATCH 2/2] util_sec.c: Move __thread variable to global scope
Make clang happy otherwise it complains about variable scope
fixes
source3/./lib/util_sec.c:470:4: error: '__thread' variables must have global storage
} __thread cache;
^
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
source3/lib/util_sec.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/source3/lib/util_sec.c b/source3/lib/util_sec.c
index 9408269..7390318 100644
--- a/source3/lib/util_sec.c
+++ b/source3/lib/util_sec.c
@@ -444,6 +444,17 @@ void become_user_permanently(uid_t uid, gid_t gid)
assert_gid(gid, gid);
}
+#ifdef HAVE___THREAD
+ struct cache_t {
+ bool active;
+ uid_t uid;
+ gid_t gid;
+ size_t setlen;
+ uintptr_t gidset;
+ };
+
+static __thread struct cache_t cache;
+#endif
/**********************************************************
Function to set thread specific credentials. Leave
saved-set uid/gid alone.Must be thread-safe code.
@@ -461,14 +472,6 @@ int set_thread_credentials(uid_t uid,
* available.
*/
#ifdef HAVE___THREAD
- static struct {
- bool active;
- uid_t uid;
- gid_t gid;
- size_t setlen;
- uintptr_t gidset;
- } __thread cache;
-
if (cache.active &&
cache.uid == uid &&
cache.gid == gid &&
--
2.23.0

View File

@ -24,6 +24,8 @@ SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \
file://smb_conf-4.7.0.patch \
file://volatiles.03_samba \
file://0001-waf-add-support-of-cross_compile.patch \
file://0001-lib-replace-wscript-Avoid-generating-nested-main-fun.patch \
file://0002-util_sec.c-Move-__thread-variable-to-global-scope.patch \
"
SRC_URI_append_libc-musl = " \
file://samba-pam.patch \