Commit proper v3-4-test backport patch.

Guenther
This commit is contained in:
Guenther Deschner 2009-08-21 16:49:56 +00:00
parent a72750731c
commit 6567f971a7

View File

@ -1,31 +1,34 @@
commit 33d27797d3ae9ab3ff7e1aa940941cc450f5ad1d
commit ef891070288cd13aff7c730de7c1baf54dddb90f
Author: Jeremy Allison <jra@samba.org>
AuthorDate: Wed Aug 19 15:33:08 2009 -0700
Commit: Jeremy Allison <jra@samba.org>
CommitDate: Wed Aug 19 15:33:08 2009 -0700
AuthorDate: Fri Aug 21 12:44:54 2009 +0200
Commit: Karolin Seeger <kseeger@samba.org>
CommitDate: Fri Aug 21 12:46:47 2009 +0200
Fix Red Hat bugzilla bug : https://bugzilla.redhat.com/show_bug.cgi?id=516165
nautilus fails to copy files from an SMB share. This is a show-stopper
for 3.4.1 (I'll open a Samba.org bug). Although gnome-vfs is doing
*incredibly* stupid things by asking for a read size of 65535 - this
translates on the wire to a 65534 byte read followed by a 1 byte
read. Please send this back to the gnome developers that they
will ge horrid on the wire performance for this.
for 3.4.1. Although gnome-vfs is doing *incredibly* stupid things by asking
for a read size of 65535 - this translates on the wire to a 65534 byte read
followed by a 1 byte read. Please send this back to the gnome developers that
they will ge horrid on the wire performance for this.
Jeremy.
Fixes bug #6649.
Fixed in master with commit 33d27797d3ae9ab3ff7e1aa940941cc450f5ad1d.
---
source3/libsmb/clireadwrite.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/source3/libsmb/clireadwrite.c b/source3/libsmb/clireadwrite.c
index d38de19..0d1f9e5 100644
index f2f447b..b1064ba 100644
--- a/source3/libsmb/clireadwrite.c
+++ b/source3/libsmb/clireadwrite.c
@@ -200,7 +200,7 @@ static void cli_read_andx_done(struct tevent_req *subreq)
state->buf = (uint8_t *)smb_base(inbuf) + SVAL(vwv+6, 0);
@@ -185,7 +185,7 @@ NTSTATUS cli_read_andx_recv(struct async_req *req, ssize_t *received,
buf = (uint8_t *)smb_base(cli_req->inbuf) + SVAL(vwv+6, 0);
if (trans_oob(smb_len(inbuf), SVAL(vwv+6, 0), state->received)
- || (state->buf < bytes)) {
+ || (state->received && (state->buf < bytes))) {
if (trans_oob(smb_len(cli_req->inbuf), SVAL(vwv+6, 0), size)
- || (buf < bytes)) {
+ || (size && (buf < bytes))) {
DEBUG(5, ("server returned invalid read&x data offset\n"));
tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
return;
return NT_STATUS_INVALID_NETWORK_RESPONSE;
}