summaryrefslogtreecommitdiffstats
path: root/source/locking/locking.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2004-06-02 23:19:36 +0000
committerJeremy Allison <jra@samba.org>2004-06-02 23:19:36 +0000
commit587d5196762d4cfc9937734d74aed613f8b2e39c (patch)
tree7cf914f693f235b65cda89de9580e006494f68d2 /source/locking/locking.c
parent73d4f2ad4945a56985e90f1c9eab5dbf48805f9d (diff)
downloadsamba-587d5196762d4cfc9937734d74aed613f8b2e39c.tar.gz
samba-587d5196762d4cfc9937734d74aed613f8b2e39c.tar.xz
samba-587d5196762d4cfc9937734d74aed613f8b2e39c.zip
r984: Ensure memmove & memcpy aren't called with len == 0.
Jeremy.
Diffstat (limited to 'source/locking/locking.c')
-rw-r--r--source/locking/locking.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/source/locking/locking.c b/source/locking/locking.c
index 42036cc70cf..2a27d7d4cdc 100644
--- a/source/locking/locking.c
+++ b/source/locking/locking.c
@@ -454,8 +454,10 @@ int get_share_modes(connection_struct *conn,
i++;
} else {
DEBUG(10,("get_share_modes: deleted %s\n", share_mode_str(i, entry_p) ));
- memcpy( &shares[i], &shares[i+1],
- sizeof(share_mode_entry) * (num_share_modes - i - 1));
+ if (num_share_modes - i - 1 > 0) {
+ memcpy( &shares[i], &shares[i+1],
+ sizeof(share_mode_entry) * (num_share_modes - i - 1));
+ }
num_share_modes--;
del_count++;
}
@@ -575,8 +577,10 @@ ssize_t del_share_entry( SMB_DEV_T dev, SMB_INO_T inode,
if (ppse)
*ppse = memdup(&shares[i], sizeof(*shares));
data->u.num_share_mode_entries--;
- memmove(&shares[i], &shares[i+1],
- dbuf.dsize - (sizeof(*data) + (i+1)*sizeof(*shares)));
+ if ((dbuf.dsize - (sizeof(*data) + (i+1)*sizeof(*shares))) > 0) {
+ memmove(&shares[i], &shares[i+1],
+ dbuf.dsize - (sizeof(*data) + (i+1)*sizeof(*shares)));
+ }
del_count++;
DEBUG(10,("del_share_entry: deleting entry %d\n", i ));