Fix bug #9724 - is_encrypted_packet() function incorrectly used inside server.
authorJeremy Allison <jra@samba.org>
Fri, 15 Mar 2013 22:13:24 +0000 (15:13 -0700)
committerKarolin Seeger <kseeger@samba.org>
Thu, 21 Mar 2013 08:45:09 +0000 (09:45 +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>
source3/smbd/reply.c

index a708fd83dd2d99a157ab75f234f032a2470fc8d0..ffe128aede9c8245e749a2ddf68ca7ca2e15ff8f 100644 (file)
@@ -3136,8 +3136,7 @@ void reply_readbraw(struct smb_request *req)
 
        START_PROFILE(SMBreadbraw);
 
-       if (srv_is_signing_active(sconn) ||
-           is_encrypted_packet(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.");
        }
@@ -3561,7 +3560,7 @@ static void send_file_readX(connection_struct *conn, struct smb_request *req,
         */
 
        if (!req_is_in_chain(req) &&
-           !is_encrypted_packet(req->inbuf) && (fsp->base_fsp == NULL) &&
+           !req->encrypted && (fsp->base_fsp == NULL) &&
            (fsp->wcp == NULL) &&
            lp_use_sendfile(SNUM(conn), req->sconn->smb1.signing_state) ) {
                uint8 headerbuf[smb_size + 12 * 2];
@@ -3765,8 +3764,7 @@ void reply_read_and_X(struct smb_request *req)
                                return;
                        }
                        /* We currently don't do this on signed or sealed data. */
-                       if (srv_is_signing_active(req->sconn) ||
-                           is_encrypted_packet(req->inbuf)) {
+                       if (srv_is_signing_active(req->sconn) || req->encrypted) {
                                reply_nterror(req, NT_STATUS_NOT_SUPPORTED);
                                END_PROFILE(SMBreadX);
                                return;