diff options
author | James Peach <jpeach@samba.org> | 2005-09-08 01:05:16 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:03:33 -0500 |
commit | ac01fda2b97b416467866ea9303a22de778f02e6 (patch) | |
tree | d5d388bfaa7701828ce6d608b6e5d7a132cda53a | |
parent | 378ebea94609aaf004317b1a9b42304a8718714b (diff) | |
download | samba-ac01fda2b97b416467866ea9303a22de778f02e6.tar.gz samba-ac01fda2b97b416467866ea9303a22de778f02e6.tar.bz2 samba-ac01fda2b97b416467866ea9303a22de778f02e6.zip |
r10068: Use prctl(PR_SET_DUMPABLE) to make sure we can always leave a good
looking corpse on Linux.
(This used to be commit 7c97a1bcc34892d7bf697b9421ba8caf4061d9b5)
-rw-r--r-- | source3/configure.in | 11 | ||||
-rw-r--r-- | source3/smbd/server.c | 12 |
2 files changed, 22 insertions, 1 deletions
diff --git a/source3/configure.in b/source3/configure.in index 5ebb3c1e14..fd439e423f 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -733,7 +733,7 @@ AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h) AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h alloca.h) AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h) -AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h) +AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h) AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h) AC_CHECK_HEADERS(sys/un.h) AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h) @@ -1160,6 +1160,15 @@ AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readd AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64) AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64) AC_CHECK_FUNCS(open64 _open64 __open64 creat64) +AC_CHECK_FUNCS(prctl) + +AC_TRY_COMPILE([ +#ifdef HAVE_SYS_PRCTL_H +#include <sys/prctl.h> +#endif +], +[int i; i = prtcl(0); ], +AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[]) # # diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 4217d821f4..a10968749d 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -22,6 +22,10 @@ #include "includes.h" +#ifdef HAVE_SYS_PRCTL_H +#include <sys/prctl.h> +#endif + static int am_parent = 1; /* the last message the was processed */ @@ -915,6 +919,14 @@ void build_options(BOOL screen); * everything after this point is run after the fork() */ +#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE) + /* On Linux we lose the ability to dump core when we change our user + * ID. We know how to dump core safely, so let's make sure we have our + * dumpable flag set. + */ + prctl(PR_SET_DUMPABLE, 1); +#endif + /* Initialise the password backed before the global_sam_sid to ensure that we fetch from ldap before we make a domain sid up */ |