s3:smbd: disallow readbraw and writebraw if the echo handler is active
authorStefan Metzmacher <metze@samba.org>
Mon, 22 Mar 2010 08:11:05 +0000 (09:11 +0100)
committerMichael Adam <obnox@samba.org>
Fri, 26 Mar 2010 11:43:06 +0000 (12:43 +0100)
metze
(cherry picked from commit d663b4c6c03450366375eb0951209bc374835935)

source3/smbd/reply.c

index 5a960873bc3dceb7e52a86a79445ac0459c772dc..a898d5a42a1b728c15b6bcf4ccc01cdb137df87c 100644 (file)
@@ -2940,6 +2940,14 @@ void reply_readbraw(struct smb_request *req)
                return;
        }
 
+       if (smbd_server_conn->smb1.echo_handler.trusted_fde) {
+               DEBUG(2,("SMBreadbraw rejected with NOT_SUPPORTED because of"
+                        "'fork echo handler = yes'\n"));
+               reply_readbraw_error();
+               END_PROFILE(SMBreadbraw);
+               return;
+       }
+
        /*
         * Special check if an oplock break has been issued
         * and the readraw request croses on the wire, we must
@@ -3640,6 +3648,15 @@ void reply_writebraw(struct smb_request *req)
                return;
        }
 
+       if (smbd_server_conn->smb1.echo_handler.trusted_fde) {
+               DEBUG(2,("SMBwritebraw rejected with NOT_SUPPORTED because of"
+                        "'fork echo handler = yes'\n"));
+               reply_nterror(req, NT_STATUS_NOT_SUPPORTED);
+               error_to_writebrawerr(req);
+               END_PROFILE(SMBwritebraw);
+               return;
+       }
+
        fsp = file_fsp(req, SVAL(req->vwv+0, 0));
        if (!check_fsp(conn, req, fsp)) {
                error_to_writebrawerr(req);