diff options
author | Volker Lendecke <vl@samba.org> | 2008-11-01 16:24:42 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-11-01 19:41:07 +0100 |
commit | 7f9d6f80efbc211977b13ece80fff6adbea929ac (patch) | |
tree | 1660eb379144ff05ebb8d65b369cdf80b5bf5d45 /source3/smbd/process.c | |
parent | 8637716b4b7b75a289e22141c5761c4850da3f5d (diff) | |
download | samba-7f9d6f80efbc211977b13ece80fff6adbea929ac.tar.gz samba-7f9d6f80efbc211977b13ece80fff6adbea929ac.tar.bz2 samba-7f9d6f80efbc211977b13ece80fff6adbea929ac.zip |
Add a "buflen" struct member to smb_request
This removes some explicit inbuf references and also removes a pointless check
in reply_echo. The buflen can never be more than 64k, this is just a 16 bit
value.
Diffstat (limited to 'source3/smbd/process.c')
-rw-r--r-- | source3/smbd/process.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 4d415b2d27..8e1add3fb1 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -375,6 +375,7 @@ void init_smb_request(struct smb_request *req, req->vuid = SVAL(inbuf, smb_uid); req->tid = SVAL(inbuf, smb_tid); req->wct = CVAL(inbuf, smb_wct); + req->buflen = smb_buflen(inbuf); req->unread_bytes = unread_bytes; req->encrypted = encrypted; req->conn = conn_find(req->tid); @@ -388,10 +389,10 @@ void init_smb_request(struct smb_request *req, exit_server_cleanly("Invalid SMB request"); } /* Ensure bcc is correct. */ - if (((uint8 *)smb_buf(inbuf)) + smb_buflen(inbuf) > inbuf + req_size) { + if (((uint8 *)smb_buf(inbuf)) + req->buflen > inbuf + req_size) { DEBUG(0,("init_smb_request: invalid bcc number %u " "(wct = %u, size %u)\n", - (unsigned int)smb_buflen(inbuf), + (unsigned int)req->buflen, (unsigned int)req->wct, (unsigned int)req_size)); exit_server_cleanly("Invalid SMB request"); |