diff options
author | Jeremy Allison <jra@samba.org> | 2017-05-16 16:12:19 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2017-05-18 03:01:40 +0200 |
commit | b691f6d32f79ef8427f567612243dd51ea8d5584 (patch) | |
tree | 14545ffd2701ec503c0aef70ec4dd922421f8f5a | |
parent | 6f8f99917f896e7d631b80fedd09863acc85b1c5 (diff) | |
download | samba-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
-rw-r--r-- | source3/librpc/idl/open_files.idl | 2 | ||||
-rw-r--r-- | source3/locking/share_mode_lock.c | 4 |
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++) { |