[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Tue Sep 13 06:53:04 MDT 2011
The branch, master has been updated
via 924b2d5 s3:torture: use CLI_BUFFER_SIZE instead of cli->max_xmit
via a4548ef s3:libsmb: make use of cli_state_available_size() in cli_smbwrite()
via 96fc0d6 s3:libsmb: make use of cli_state_available_size() in cli_write_max_bufsize()
via c887e37 s3:libsmb: make use of cli_state_available_size() in cli_read_max_bufsize()
via a15fd83 s3:libsmb: make use of cli_state_available_size() in cli_list_old_send()
via 76c1164 s3:libsmb: make use of cli_state_available_size() in cli_sesssetup_blob_send()
via afda15a s3:libsmb: make use of cli_state_available_size() in cli_trans_format()
via 2a5f8da s3:libsmb: add cli_state_available_size()
via 5848249 s3:clitar: remove unused/not existing extern variables
from e63d0c5 s3: Fix Coverity ID 2613 -- UNINIT
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 924b2d5b7fdfc562765ffe7181ffb479bb05ae84
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 13:12:09 2011 +0200
s3:torture: use CLI_BUFFER_SIZE instead of cli->max_xmit
The max_data parameter of trans2/nttrans calls are not bound
to cli->max_xmit. Even with cli->max_xmit, which means the max
size of the whole SMB pdu, we would get fragmented trans2/nttrans
replies. That's why we can also use our maximum, which is CLI_BUFFER_SIZE.
metze
Autobuild-User: Stefan Metzmacher <metze at samba.org>
Autobuild-Date: Tue Sep 13 14:52:35 CEST 2011 on sn-devel-104
commit a4548efe675881ce745368f1e8dc7649a2bba8e2
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 13:10:33 2011 +0200
s3:libsmb: make use of cli_state_available_size() in cli_smbwrite()
metze
commit 96fc0d601899b7c1647cc771f14fcef0b480b26a
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 11:39:07 2011 +0200
s3:libsmb: make use of cli_state_available_size() in cli_write_max_bufsize()
metze
commit c887e37275378ddaf772309738bc2cd92d5e2819
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 11:38:21 2011 +0200
s3:libsmb: make use of cli_state_available_size() in cli_read_max_bufsize()
metze
commit a15fd8376770a1e2191e561c93a93887f94fe347
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 11:37:20 2011 +0200
s3:libsmb: make use of cli_state_available_size() in cli_list_old_send()
metze
commit 76c1164406fa642fccdda0e4643a2ff4afdaedb4
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 11:35:53 2011 +0200
s3:libsmb: make use of cli_state_available_size() in cli_sesssetup_blob_send()
metze
commit afda15aa868856a727d860d04b7c7c1277484fe1
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 11:34:33 2011 +0200
s3:libsmb: make use of cli_state_available_size() in cli_trans_format()
metze
commit 2a5f8daa3e2563166413af75e53c8c2b90d22d8c
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 11:23:49 2011 +0200
s3:libsmb: add cli_state_available_size()
metze
commit 58482494fd58cd364ee80ce77fe75b7deccb26b4
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Sep 13 08:44:17 2011 +0200
s3:clitar: remove unused/not existing extern variables
metze
-----------------------------------------------------------------------
Summary of changes:
source3/client/clitar.c | 3 ---
source3/libsmb/cliconnect.c | 14 ++++++++------
source3/libsmb/clientgen.c | 13 +++++++++++++
source3/libsmb/clilist.c | 4 +++-
source3/libsmb/clireadwrite.c | 7 ++++---
source3/libsmb/clitrans.c | 9 +++++----
source3/libsmb/proto.h | 1 +
source3/torture/torture.c | 2 +-
8 files changed, 35 insertions(+), 18 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index cc642c3..5943926 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -105,9 +105,6 @@ static bool must_free_cliplist = False;
extern char *cmd_ptr;
extern bool lowercase;
-extern uint16 cnum;
-extern bool readbraw_supported;
-extern int max_xmit;
extern int get_total_time_ms;
extern int get_total_size;
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index e0d2419..f47336b 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -1198,6 +1198,7 @@ static struct tevent_req *cli_sesssetup_blob_send(TALLOC_CTX *mem_ctx,
{
struct tevent_req *req, *subreq;
struct cli_sesssetup_blob_state *state;
+ uint32_t usable_space;
req = tevent_req_create(mem_ctx, &state,
struct cli_sesssetup_blob_state);
@@ -1208,16 +1209,17 @@ static struct tevent_req *cli_sesssetup_blob_send(TALLOC_CTX *mem_ctx,
state->blob = blob;
state->cli = cli;
- if (cli->max_xmit < BASE_SESSSETUP_BLOB_PACKET_SIZE + 1) {
+ usable_space = cli_state_available_size(cli,
+ BASE_SESSSETUP_BLOB_PACKET_SIZE);
+
+ if (usable_space == 0) {
DEBUG(1, ("cli_session_setup_blob: cli->max_xmit too small "
- "(was %u, need minimum %u)\n",
- (unsigned int)cli->max_xmit,
- BASE_SESSSETUP_BLOB_PACKET_SIZE));
+ "(not possible to send %u bytes)\n",
+ BASE_SESSSETUP_BLOB_PACKET_SIZE + 1));
tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
return tevent_req_post(req, ev);
}
- state->max_blob_size =
- MIN(cli->max_xmit - BASE_SESSSETUP_BLOB_PACKET_SIZE, 0xFFFF);
+ state->max_blob_size = MIN(usable_space, 0xFFFF);
if (!cli_sesssetup_blob_next(state, &subreq)) {
tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index f274dc0..21ecab8 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -501,6 +501,19 @@ uint32_t cli_state_capabilities(struct cli_state *cli)
return cli->capabilities;
}
+uint32_t cli_state_available_size(struct cli_state *cli, uint32_t ofs)
+{
+ uint32_t ret = cli->max_xmit;
+
+ if (ofs >= ret) {
+ return 0;
+ }
+
+ ret -= ofs;
+
+ return ret;
+}
+
struct cli_echo_state {
uint16_t vwv[1];
DATA_BLOB data;
diff --git a/source3/libsmb/clilist.c b/source3/libsmb/clilist.c
index ac10795..521afc9 100644
--- a/source3/libsmb/clilist.c
+++ b/source3/libsmb/clilist.c
@@ -298,6 +298,7 @@ static struct tevent_req *cli_list_old_send(TALLOC_CTX *mem_ctx,
struct cli_list_old_state *state;
uint8_t *bytes;
static const uint16_t zero = 0;
+ uint32_t usable_space;
req = tevent_req_create(mem_ctx, &state, struct cli_list_old_state);
if (req == NULL) {
@@ -311,7 +312,8 @@ static struct tevent_req *cli_list_old_send(TALLOC_CTX *mem_ctx,
if (tevent_req_nomem(state->mask, req)) {
return tevent_req_post(req, ev);
}
- state->num_asked = (cli->max_xmit - 100) / DIR_STRUCT_SIZE;
+ usable_space = cli_state_available_size(cli, 100);
+ state->num_asked = usable_space / DIR_STRUCT_SIZE;
SSVAL(state->vwv + 0, 0, state->num_asked);
SSVAL(state->vwv + 1, 0, state->attribute);
diff --git a/source3/libsmb/clireadwrite.c b/source3/libsmb/clireadwrite.c
index 2fe41b4..a6f79fb 100644
--- a/source3/libsmb/clireadwrite.c
+++ b/source3/libsmb/clireadwrite.c
@@ -46,7 +46,7 @@ static size_t cli_read_max_bufsize(struct cli_state *cli)
data_offset += wct * sizeof(uint16_t);
data_offset += 1; /* pad */
- useable_space = cli->max_xmit - data_offset;
+ useable_space = cli_state_available_size(cli, data_offset);
return useable_space;
}
@@ -81,7 +81,7 @@ static size_t cli_write_max_bufsize(struct cli_state *cli,
data_offset += wct * sizeof(uint16_t);
data_offset += 1; /* pad */
- useable_space = cli->max_xmit - data_offset;
+ useable_space = cli_state_available_size(cli, data_offset);
return useable_space;
}
@@ -732,7 +732,8 @@ NTSTATUS cli_smbwrite(struct cli_state *cli, uint16_t fnum, char *buf,
bytes[0] = 1;
do {
- size_t size = MIN(size1, cli->max_xmit - 48);
+ uint32_t usable_space = cli_state_available_size(cli, 48);
+ size_t size = MIN(size1, usable_space);
struct tevent_req *req;
uint16_t vwv[5];
uint16_t *ret_vwv;
diff --git a/source3/libsmb/clitrans.c b/source3/libsmb/clitrans.c
index dd8063b..91157b6 100644
--- a/source3/libsmb/clitrans.c
+++ b/source3/libsmb/clitrans.c
@@ -184,6 +184,7 @@ static NTSTATUS cli_trans_pull_blob(TALLOC_CTX *mem_ctx,
static void cli_trans_format(struct cli_trans_state *state, uint8_t *pwct,
int *piov_count)
{
+ struct cli_state *cli = state->cli;
uint8_t wct = 0;
struct iovec *iov = state->iov;
uint8_t *pad = state->pad;
@@ -242,7 +243,7 @@ static void cli_trans_format(struct cli_trans_state *state, uint8_t *pwct,
}
param_offset += wct * sizeof(uint16_t);
- useable_space = state->cli->max_xmit - param_offset;
+ useable_space = cli_state_available_size(cli, param_offset);
param_pad = param_offset % 4;
if (param_pad > 0) {
@@ -252,7 +253,7 @@ static void cli_trans_format(struct cli_trans_state *state, uint8_t *pwct,
iov += 1;
param_offset += param_pad;
}
- useable_space = state->cli->max_xmit - param_offset;
+ useable_space = cli_state_available_size(cli, param_offset);
if (state->param_sent < state->num_param) {
this_param = MIN(state->num_param - state->param_sent,
@@ -263,7 +264,7 @@ static void cli_trans_format(struct cli_trans_state *state, uint8_t *pwct,
}
data_offset = param_offset + this_param;
- useable_space = state->cli->max_xmit - data_offset;
+ useable_space = cli_state_available_size(cli, data_offset);
data_pad = data_offset % 4;
if (data_pad > 0) {
@@ -273,7 +274,7 @@ static void cli_trans_format(struct cli_trans_state *state, uint8_t *pwct,
iov += 1;
data_offset += data_pad;
}
- useable_space = state->cli->max_xmit - data_offset;
+ useable_space = cli_state_available_size(cli, data_offset);
if (state->data_sent < state->num_data) {
this_data = MIN(state->num_data - state->data_sent,
diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h
index 83da457..c618fda 100644
--- a/source3/libsmb/proto.h
+++ b/source3/libsmb/proto.h
@@ -180,6 +180,7 @@ uint16_t cli_state_set_uid(struct cli_state *cli, uint16_t uid);
bool cli_set_case_sensitive(struct cli_state *cli, bool case_sensitive);
enum protocol_types cli_state_protocol(struct cli_state *cli);
uint32_t cli_state_capabilities(struct cli_state *cli);
+uint32_t cli_state_available_size(struct cli_state *cli, uint32_t ofs);
struct tevent_req *cli_echo_send(TALLOC_CTX *mem_ctx, struct event_context *ev,
struct cli_state *cli, uint16_t num_echos,
DATA_BLOB data);
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 0cba5c7..d791684 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -3436,7 +3436,7 @@ static NTSTATUS new_trans(struct cli_state *pcli, int fnum, int level)
NTSTATUS status;
status = cli_qfileinfo(talloc_tos(), pcli, fnum, level, 0,
- pcli->max_xmit, NULL, &buf, &len);
+ CLI_BUFFER_SIZE, NULL, &buf, &len);
if (!NT_STATUS_IS_OK(status)) {
printf("ERROR: qfileinfo (%d) failed (%s)\n", level,
nt_errstr(status));
--
Samba Shared Repository
More information about the samba-cvs
mailing list