summaryrefslogtreecommitdiff
path: root/source3/locking/posix.c
diff options
context:
space:
mode:
authorHerb Lewis <herb@samba.org>2000-05-10 00:05:27 +0000
committerHerb Lewis <herb@samba.org>2000-05-10 00:05:27 +0000
commite522de480891b9d72ba4cd2d4c8decb6909809a9 (patch)
tree9a188994f3a45f6a9fa37a987dac64637e87b534 /source3/locking/posix.c
parentf7089e3cbaa8429a5dd6f5ecf3f524291faa1881 (diff)
downloadsamba-e522de480891b9d72ba4cd2d4c8decb6909809a9.tar.gz
samba-e522de480891b9d72ba4cd2d4c8decb6909809a9.tar.bz2
samba-e522de480891b9d72ba4cd2d4c8decb6909809a9.zip
Using a structure for a tdb key can lead to insideous, hard
to find bugs. On 64 bit IRIX, structure packing means that a struct { SMB_DEV_T dev /* 4 bytes */ SMB_INO_T ino /* 8 bytes */ } has 4 bytes of padding between the two members. If you don't null the memory before using it as a tdb key, you randomly can't find keys depending on what is in the padding. This caused me immense pain and was hard to track down.... :-) Jeremy. (This used to be commit f2a5ba3f0939f59097f0ef6a25f1cf9b5574f157)
Diffstat (limited to 'source3/locking/posix.c')
-rw-r--r--source3/locking/posix.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/source3/locking/posix.c b/source3/locking/posix.c
index 0ab46f9ca4..d1edb1ef57 100644
--- a/source3/locking/posix.c
+++ b/source3/locking/posix.c
@@ -73,6 +73,8 @@ static TDB_DATA locking_key(SMB_DEV_T dev, SMB_INO_T inode)
{
static struct posix_lock_key key;
TDB_DATA kbuf;
+
+ memset(&key, '\0', sizeof(key));
key.device = dev;
key.inode = inode;
kbuf.dptr = (char *)&key;