s4:smb_server/smb: SMBreadX can return STATUS_BUFFER_OVERFLOW
authorStefan Metzmacher <metze@samba.org>
Wed, 28 Apr 2010 10:27:09 +0000 (12:27 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 28 Apr 2010 13:46:01 +0000 (15:46 +0200)
metze

source4/smb_server/smb/reply.c

index 7d33a37b4d13b7fee1c18ee3cbbc56135faf766f..ff270944e2b1b963e15a2ddb81c65a06cafd4f2f 100644 (file)
@@ -811,7 +811,7 @@ static void reply_read_and_X_send(struct ntvfs_request *ntvfs)
        struct smbsrv_request *req;
        union smb_read *io;
 
-       SMBSRV_CHECK_ASYNC_STATUS(io, union smb_read);
+       SMBSRV_CHECK_ASYNC_STATUS_ERR(io, union smb_read);
 
        /* readx reply packets can be over-sized */
        req->control_flags |= SMBSRV_REQ_CONTROL_LARGE;
@@ -834,6 +834,10 @@ static void reply_read_and_X_send(struct ntvfs_request *ntvfs)
        SSVAL(req->out.vwv, VWV(7), (io->readx.out.nread>>16));
        SMBSRV_VWV_RESERVED(8, 4);
 
+       if (!NT_STATUS_IS_OK(req->ntvfs->async_states->status)) {
+               smbsrv_setup_error(req, req->ntvfs->async_states->status);
+       }
+
        smbsrv_chain_reply(req);
 }