summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2011-06-24 08:54:02 +0200
committerStefan Metzmacher <metze@samba.org>2011-06-24 11:25:36 +0200
commit2bb325ad913c1cff88faab55102cef75d14c04a6 (patch)
tree14497dc33cf69b7e85d3cfb5aa08247f98af5138 /source3/smbd
parent511cb20d40221cac577a5910420b59f17b915b00 (diff)
downloadsamba-2bb325ad913c1cff88faab55102cef75d14c04a6.tar.gz
s3:smb2_ioctl/FSCTL_PIPE_TRANSCEIVE: generate STATUS_BUFFER_OVERFLOW if needed (bug #8260)
This should fix DCERPC responses with fragments larger than 1024 bytes. metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Fri Jun 24 11:25:36 CEST 2011 on sn-devel-104
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/smb2_ioctl.c5
-rw-r--r--source3/smbd/smb2_read.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/source3/smbd/smb2_ioctl.c b/source3/smbd/smb2_ioctl.c
index bce02b0a3a8..abb1905ba09 100644
--- a/source3/smbd/smb2_ioctl.c
+++ b/source3/smbd/smb2_ioctl.c
@@ -590,6 +590,11 @@ static void smbd_smb2_ioctl_pipe_read_done(struct tevent_req *subreq)
state->out_output.length = nread;
+ if (is_data_outstanding) {
+ tevent_req_nterror(req, STATUS_BUFFER_OVERFLOW);
+ return;
+ }
+
tevent_req_done(req);
}
diff --git a/source3/smbd/smb2_read.c b/source3/smbd/smb2_read.c
index 6e686ef2738..996f8d46aec 100644
--- a/source3/smbd/smb2_read.c
+++ b/source3/smbd/smb2_read.c
@@ -575,6 +575,11 @@ static void smbd_smb2_read_pipe_done(struct tevent_req *subreq)
state->out_data.length = nread;
state->out_remaining = 0;
+ /*
+ * TODO: add STATUS_BUFFER_OVERFLOW handling, once we also
+ * handle it in SMB1 pipe_read_andx_done().
+ */
+
tevent_req_done(req);
}