diff options
Diffstat (limited to 'source3/smbd/reply.c')
-rw-r--r-- | source3/smbd/reply.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 5d47e532cf..cf30c183fa 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -2882,17 +2882,9 @@ void reply_read_and_X(connection_struct *conn, struct smb_request *req) startpos = IVAL_TO_SMB_OFF_T(req->inbuf,smb_vwv3); smb_maxcnt = SVAL(req->inbuf,smb_vwv5); - if (!reply_prep_legacy(req, &inbuf, &outbuf, &length, &bufsize)) { - reply_nterror(req, NT_STATUS_NO_MEMORY); - END_PROFILE(SMBreadX); - return; - } - /* If it's an IPC, pass off the pipe handler. */ if (IS_IPC(conn)) { - reply_post_legacy( - req, - reply_pipe_read_and_X(inbuf,outbuf,length,bufsize)); + reply_pipe_read_and_X(req); END_PROFILE(SMBreadX); return; } @@ -2908,6 +2900,12 @@ void reply_read_and_X(connection_struct *conn, struct smb_request *req) return; } + if (!reply_prep_legacy(req, &inbuf, &outbuf, &length, &bufsize)) { + reply_nterror(req, NT_STATUS_NO_MEMORY); + END_PROFILE(SMBreadX); + return; + } + set_message(inbuf,outbuf,12,0,True); if (global_client_caps & CAP_LARGE_READX) { |