diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/smbwrapper/realcalls.h | 13 | ||||
-rw-r--r-- | source3/utils/ntlm_auth.c | 6 |
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); } |