summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>1998-03-22 01:31:50 +0000
committerAndrew Tridgell <tridge@samba.org>1998-03-22 01:31:50 +0000
commit93b3c5813638d37f53717ec42feff408b8765e23 (patch)
tree01922742a79260410fb9cc8c26296efe8908d87d
parentbee4067bd4771ee7883ab6365e91df86a1230618 (diff)
downloadsamba-93b3c5813638d37f53717ec42feff408b8765e23.tar.gz
samba-93b3c5813638d37f53717ec42feff408b8765e23.tar.bz2
samba-93b3c5813638d37f53717ec42feff408b8765e23.zip
- 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)
-rw-r--r--source3/locking/shmem.c6
-rw-r--r--source3/locking/shmem_sysv.c9
-rw-r--r--source3/utils/status.c2
3 files changed, 16 insertions, 1 deletions
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();
diff --git a/source3/utils/status.c b/source3/utils/status.c
index f99fe9e561..40bafbe0c2 100644
--- a/source3/utils/status.c
+++ b/source3/utils/status.c
@@ -120,7 +120,7 @@ static void print_share_mode(share_mode_entry *e, char *fname)
charset_initialise();
DEBUGLEVEL = 0;
- dbf = fopen("/dev/null","w");
+ dbf = stderr;
if (getuid() != geteuid()) {
printf("smbstatus should not be run setuid\n");