summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Bokovoy <ab@samba.org>2004-05-06 14:38:31 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 10:51:26 -0500
commit5afd47147dc00247b403c5d7f00dc6d605435627 (patch)
treeb0c806676e152f851c6469eef7e2109d7627f66f
parent7cb9ca16f6678ce9687512fd3f7892122b4878fe (diff)
downloadsamba-5afd47147dc00247b403c5d7f00dc6d605435627.tar.gz
samba-5afd47147dc00247b403c5d7f00dc6d605435627.tar.bz2
samba-5afd47147dc00247b403c5d7f00dc6d605435627.zip
r516: On GNU/Linux distributions which allow to use both 2.4 and 2.6 kernels
there is SYS_utimes syscall defined at compile time in glibc-kernheaders but it is available on 2.6 kernels only. Therefore, we can't rely on syscall at compile time but have to check that behaviour during program execution. An easy workaround is to have replacement for utimes() implemented within our wrapper and do not rely on syscall at all. Thus, if REPLACE_UTIME is defined already (by packager), skip these syscall shortcuts. (This used to be commit e278e2e6e095b1c01eab307d55edf2cde48dcba2)
-rw-r--r--source3/smbwrapper/realcalls.h13
-rw-r--r--source3/utils/ntlm_auth.c6
2 files changed, 19 insertions, 0 deletions
diff --git a/source3/smbwrapper/realcalls.h b/source3/smbwrapper/realcalls.h
index 6c230dba05..bad89d598c 100644
--- a/source3/smbwrapper/realcalls.h
+++ b/source3/smbwrapper/realcalls.h
@@ -250,14 +250,27 @@
#define real_rmdir(fn) (syscall(SYS_rmdir, (fn)))
#define real_mkdir(fn, mode) (syscall(SYS_mkdir, (fn), (mode)))
+/*
+ * On GNU/Linux distributions which allow to use both 2.4 and 2.6 kernels
+ * there is SYS_utimes syscall defined at compile time in glibc-kernheaders but
+ * it is available on 2.6 kernels only. Therefore, we can't rely on syscall at
+ * compile time but have to check that behaviour during program execution. An easy
+ * workaround is to have replacement for utimes() implemented within our wrapper and
+ * do not rely on syscall at all. Thus, if REPLACE_UTIME is defined already (by packager),
+ * skip these syscall shortcuts.
+ */
+#ifndef REPLACE_UTIME
#ifdef SYS_utime
#define real_utime(fn, buf) (syscall(SYS_utime, (fn), (buf)))
#else
#define REPLACE_UTIME 1
#endif
+#endif
+#ifndef REPLACE_UTIMES
#ifdef SYS_utimes
#define real_utimes(fn, buf) (syscall(SYS_utimes, (fn), (buf)))
#else
#define REPLACE_UTIMES 1
#endif
+#endif
diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c
index f2fb7dcaaf..686fd6256b 100644
--- a/source3/utils/ntlm_auth.c
+++ b/source3/utils/ntlm_auth.c
@@ -1624,6 +1624,12 @@ static void squid_stream(enum stdio_helper_mode stdio_mode, stdio_helper_functio
/* initialize FDescs */
x_setbuf(x_stdout, NULL);
x_setbuf(x_stderr, NULL);
+ {
+ struct passwd *pass = getpwuid(getuid());
+ if (initgroups (pass->pw_name, pass->pw_gid)) {
+ DEBUG(0,("Unable to initgroups. Error was %s\n", strerror(errno) ));
+ }
+ }
while(1) {
manage_squid_request(stdio_mode, fn);
}