Fix bug #9724 - is_encrypted_packet() function incorrectly used inside server.
authorJeremy Allison <jra@samba.org>
Fri, 15 Mar 2013 22:05:31 +0000 (15:05 -0700)
committerStefan Metzmacher <metze@samba.org>
Sat, 16 Mar 2013 11:44:44 +0000 (12:44 +0100)
The is_encrypted_packet() function should only be used on the raw received data
to determine if a packet came in encrypted. Once we're inside the SMB1
processing code in smbd/reply.c we should be looking at the
smb1request->encrypted field to determine if a packet was really encrypted or
not.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Sat Mar 16 12:44:44 CET 2013 on sn-devel-104

source3/smbd/reply.c

index 64c4fdbe5929b8a38e3fdb89ef60d46a4502d8f8..2c31f159171bef255c5a3fd074222429d3f3cfc2 100644 (file)
@@ -3294,8 +3294,7 @@ void reply_readbraw(struct smb_request *req)
 
        START_PROFILE(SMBreadbraw);
 
-       if (srv_is_signing_active(sconn) ||
-           is_encrypted_packet(sconn, req->inbuf)) {
+       if (srv_is_signing_active(sconn) || req->encrypted) {
                exit_server_cleanly("reply_readbraw: SMB signing/sealing is active - "
                        "raw reads/writes are disallowed.");
        }
@@ -3698,7 +3697,7 @@ static void send_file_readX(connection_struct *conn, struct smb_request *req,
         */
 
        if (!req_is_in_chain(req) &&
-           !is_encrypted_packet(req->sconn, req->inbuf) &&
+           !req->encrypted &&
            (fsp->base_fsp == NULL) &&
            (fsp->wcp == NULL) &&
            lp_use_sendfile(SNUM(conn), req->sconn->smb1.signing_state) ) {