From 93b3c5813638d37f53717ec42feff408b8765e23 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 22 Mar 1998 01:31:50 +0000 Subject: - added a check for broken RH5 include files. With the standard RH5 includes (ie. unpatched RH5) Samba gets file corruption because of the incorrect definition of the shmid_ds structure. Updating your RH5 installation of glibc-devel fixes this. - don't try to fcntl_lock() a read-only fd in shmem.c - allow level 0 debug messages to get through in smbstatus (This used to be commit 45553771f90087a12db0153524146d42155d1d3f) --- source3/locking/shmem.c | 6 ++++++ source3/locking/shmem_sysv.c | 9 +++++++++ 2 files changed, 15 insertions(+) (limited to 'source3/locking') diff --git a/source3/locking/shmem.c b/source3/locking/shmem.c index 63d7ebd3d4..9f24076171 100644 --- a/source3/locking/shmem.c +++ b/source3/locking/shmem.c @@ -656,6 +656,9 @@ static BOOL smb_shm_lock_hash_entry( unsigned int entry) return False; } + if (read_only) + return True; + /* Do an exclusive wait lock on the 4 byte region mapping into this entry */ if (fcntl_lock(smb_shm_fd, F_SETLKW, start, sizeof(int), F_WRLCK) == False) { @@ -679,6 +682,9 @@ static BOOL smb_shm_unlock_hash_entry( unsigned int entry ) DEBUG(0,("ERROR smb_shm_unlock_hash_entry : bad smb_shm_fd (%d)\n",smb_shm_fd)); return False; } + + if (read_only) + return True; /* Do a wait lock on the 4 byte region mapping into this entry */ if (fcntl_lock(smb_shm_fd, F_SETLKW, start, sizeof(int), F_UNLCK) == False) diff --git a/source3/locking/shmem_sysv.c b/source3/locking/shmem_sysv.c index e415c2ebc5..b9d4594947 100644 --- a/source3/locking/shmem_sysv.c +++ b/source3/locking/shmem_sysv.c @@ -542,6 +542,15 @@ struct shmem_ops *sysv_shm_open(int ronly) int i; int pid; + + +#ifdef LINUX + if (sizeof(shm_ds) == 52) { + DEBUG(0,("WARNING: You probably have a broken set of glibc2 include files - disabling sysv shared memory\n")); + return NULL; + } +#endif + read_only = ronly; shm_size = lp_shmem_size(); -- cgit