summaryrefslogtreecommitdiffstats
path: root/source4/smb_server
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2008-09-24 17:34:04 -0700
committerAndrew Tridgell <tridge@samba.org>2008-09-24 18:10:23 -0700
commit49c80cea0bc00a88336fc9bd4bb332a7a399afd5 (patch)
tree7a82a22796333da028efe674169f98b88cdb3b56 /source4/smb_server
parenta3536c4c06d9725b2e96b9a3ddc1ab14e47f472c (diff)
downloadsamba-49c80cea0bc00a88336fc9bd4bb332a7a399afd5.tar.gz
samba-49c80cea0bc00a88336fc9bd4bb332a7a399afd5.tar.xz
samba-49c80cea0bc00a88336fc9bd4bb332a7a399afd5.zip
cope with body_size zero in SMB2 receive
Diffstat (limited to 'source4/smb_server')
-rw-r--r--source4/smb_server/smb2/smb2_server.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/source4/smb_server/smb2/smb2_server.h b/source4/smb_server/smb2/smb2_server.h
index d45e0861af4..431add4ed91 100644
--- a/source4/smb_server/smb2/smb2_server.h
+++ b/source4/smb_server/smb2/smb2_server.h
@@ -75,7 +75,7 @@ struct smbsrv_request;
/* useful way of catching field size errors with file and line number */
#define SMB2SRV_CHECK_BODY_SIZE(req, size, dynamic) do { \
size_t is_size = req->in.body_size; \
- uint16_t field_size = SVAL(req->in.body, 0); \
+ uint16_t field_size; \
uint16_t want_size = ((dynamic)?(size)+1:(size)); \
if (is_size < (size)) { \
DEBUG(0,("%s: buffer too small 0x%x. Expected 0x%x\n", \
@@ -83,6 +83,7 @@ struct smbsrv_request;
smb2srv_send_error(req, NT_STATUS_INVALID_PARAMETER); \
return; \
}\
+ field_size = SVAL(req->in.body, 0); \
if (field_size != want_size) { \
DEBUG(0,("%s: unexpected fixed body size 0x%x. Expected 0x%x\n", \
__location__, (unsigned)field_size, (unsigned)want_size)); \