The branch, master has been updated
       via  2148d86 Fix bug #9196 - defer_open is triggered multiple times on 
the same request.
      from  d846199 s4-rpc_server: use netlogon_creds_encrypt_samlogon().

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2148d86c7a2facd6e128b753aef98722843af3e1
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Dec 14 08:39:26 2012 -0800

    Fix bug #9196 - defer_open is triggered multiple times on the same request.
    
    get_deferred_open_message_state_smb2() is buggy in that it is checking
    the wrong things to determine if an open is in the deferred state.
    
    It checks if (smb2req->async_te == NULL) which is incorrect,
    as we're not always async in a deferred open - remove this.
    
    It should check instead state->open_was_deferred as this
    is explicity set to 'true' when an open is going deferred,
    so add this check.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <me...@samba.org>
    Autobuild-Date(master): Tue Dec 18 14:19:13 CET 2012 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/smb2_create.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
index 812d9db..21f2549 100644
--- a/source3/smbd/smb2_create.c
+++ b/source3/smbd/smb2_create.c
@@ -1133,9 +1133,6 @@ bool get_deferred_open_message_state_smb2(struct 
smbd_smb2_request *smb2req,
        if (!smb2req) {
                return false;
        }
-       if (smb2req->async_te == NULL) {
-               return false;
-       }
        req = smb2req->subreq;
        if (!req) {
                return false;
@@ -1144,6 +1141,9 @@ bool get_deferred_open_message_state_smb2(struct 
smbd_smb2_request *smb2req,
        if (!state) {
                return false;
        }
+       if (!state->open_was_deferred) {
+               return false;
+       }
        if (p_request_time) {
                *p_request_time = state->request_time;
        }


-- 
Samba Shared Repository

Reply via email to