summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2017-05-16 16:12:19 -0700
committerJeremy Allison <jra@samba.org>2017-05-18 03:01:40 +0200
commitb691f6d32f79ef8427f567612243dd51ea8d5584 (patch)
tree14545ffd2701ec503c0aef70ec4dd922421f8f5a /source3
parent6f8f99917f896e7d631b80fedd09863acc85b1c5 (diff)
downloadsamba-b691f6d32f79ef8427f567612243dd51ea8d5584.tar.gz
s3: smbd: Fix open_files.idl to correctly ignore share_mode_lease *lease in share_mode_entry.
This is currently marked 'skip', which means it isn't stored in the db, but printed out in ndr dump. However, this pointer can be invalid if the lease_idx is set to 0xFFFFFFFF (invalid). This is fixed up inside parse_share_modes(), but not until after ndr_pull_share_mode_data() is called. If lease_idx == 0xFFFFFFFF then ndr_print_share_mode_lease() prints an invalid value and crashes. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12793 Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Alexander Bokovoy <ab@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Thu May 18 03:01:40 CEST 2017 on sn-devel-144
Diffstat (limited to 'source3')
-rw-r--r--source3/librpc/idl/open_files.idl2
-rw-r--r--source3/locking/share_mode_lock.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/source3/librpc/idl/open_files.idl b/source3/librpc/idl/open_files.idl
index 6f74340497b..1f85f245fca 100644
--- a/source3/librpc/idl/open_files.idl
+++ b/source3/librpc/idl/open_files.idl
@@ -62,7 +62,7 @@ interface open_files
* to store this share_mode_entry on disk.
*/
[skip] boolean8 stale;
- [skip] share_mode_lease *lease;
+ [ignore] share_mode_lease *lease;
} share_mode_entry;
typedef [public] struct {
diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c
index 0333b0d7965..cee00458079 100644
--- a/source3/locking/share_mode_lock.c
+++ b/source3/locking/share_mode_lock.c
@@ -324,8 +324,8 @@ static struct share_mode_data *parse_share_modes(TALLOC_CTX *mem_ctx,
}
/*
- * Initialize the values that are [skip] in the idl. The NDR code does
- * not initialize them.
+ * Initialize the values that are [skip] or [ignore]
+ * in the idl. The NDR code does not initialize them.
*/
for (i=0; i<d->num_share_modes; i++) {