[SCM] Samba Shared Repository - branch v3-2-stable updated -
release-3-2-0pre2-38-gac10927
Karolin Seeger
kseeger at samba.org
Sun Mar 9 07:54:35 GMT 2008
The branch, v3-2-stable has been updated
via ac10927ca6b480274b15a29962caa9b81b77185a (commit)
via 1767533ee0ea4d82632d873595cfe2aa4ea4c9b7 (commit)
via 1c888f1726bcbbf73eb0f039eb16264ebddea39f (commit)
via de3f3311631df2002cb19308d5249ddbb8a76e0b (commit)
via 6c0fbf8bf459bd5c38d9dd907a4211e69288920c (commit)
via 436d51a64f98ef1a79a82a7a4e3c3aad900f56ef (commit)
from 1acab453875c2189b685d766e404159b741ebca8 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-stable
- Log -----------------------------------------------------------------
commit ac10927ca6b480274b15a29962caa9b81b77185a
Author: Volker Lendecke <vl at samba.org>
Date: Sat Mar 8 22:29:35 2008 +0100
Print out the used seed in smbtorture
(cherry picked from commit 26d64d22d65938023a4e45c3893e7021e51f4d9c)
commit 1767533ee0ea4d82632d873595cfe2aa4ea4c9b7
Author: Volker Lendecke <vl at samba.org>
Date: Sat Mar 8 22:28:01 2008 +0100
Correctly calculate the max read size
(cherry picked from commit f556c9e162e2bc0d16710e994a00edc33a146cd5)
commit 1c888f1726bcbbf73eb0f039eb16264ebddea39f
Author: Volker Lendecke <vl at samba.org>
Date: Fri Mar 7 15:03:20 2008 +0100
Move inbuf handling to before the PDU handling
In an error case, correctly discard the offending PDU
(cherry picked from commit 0aa195b5d623e1f26f2a1b9e91323a5ddd3ff282)
commit de3f3311631df2002cb19308d5249ddbb8a76e0b
Author: Volker Lendecke <vl at samba.org>
Date: Sun Mar 2 09:43:19 2008 +0100
Pass specific packets to build_nmb and build_dgram
To me it was not clear what parts of struct packet_struct are actually used in
build_packet(). This makes it a bit more clear that only the specific parts are
used.
(cherry picked from commit eb8b6f2404e49d6a837935c5b411d78fb6ff23ef)
commit 6c0fbf8bf459bd5c38d9dd907a4211e69288920c
Author: Volker Lendecke <vl at samba.org>
Date: Sat Mar 1 19:54:17 2008 +0100
Fix some typos
(cherry picked from commit cfa1b838144800c0758969921b8904fd62e46c07)
commit 436d51a64f98ef1a79a82a7a4e3c3aad900f56ef
Author: Volker Lendecke <vl at samba.org>
Date: Sat Mar 1 10:22:04 2008 +0100
Build aio_fork by default
... only when --with-aio-support and we can pass file descriptors
(cherry picked from commit fdf4cd99ccb59e126391253d2091707bc8daee43)
-----------------------------------------------------------------------
Summary of changes:
source/configure.in | 7 +++
source/libsmb/async_smb.c | 117 +++++++++++++++++++++---------------------
source/libsmb/clireadwrite.c | 2 +-
source/libsmb/nmblib.c | 10 ++--
source/libsmb/unexpected.c | 4 +-
source/smbd/trans2.c | 2 +-
source/torture/torture.c | 9 ++-
7 files changed, 80 insertions(+), 71 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/configure.in b/source/configure.in
index f481a30..213e897 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -5313,6 +5313,13 @@ int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
AC_MSG_RESULT(no)
)
+if test x"$samba_cv_HAVE_AIO" = x"yes"; then
+ if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
+ x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
+ default_shared_modules="$default_shared_modules vfs_aio_fork"
+ fi
+fi
+
#################################################
# check for sendfile support
diff --git a/source/libsmb/async_smb.c b/source/libsmb/async_smb.c
index 21bcd5b..04c22a9 100644
--- a/source/libsmb/async_smb.c
+++ b/source/libsmb/async_smb.c
@@ -174,24 +174,72 @@ static void handle_incoming_pdu(struct cli_state *cli)
{
struct cli_request *req;
uint16_t mid;
- size_t raw_pdu_len, buf_len, pdu_len;
- size_t rest_len;
+ size_t raw_pdu_len, buf_len, pdu_len, rest_len;
+ char *pdu;
NTSTATUS status;
/*
* The encrypted PDU len might differ from the unencrypted one
*/
raw_pdu_len = smb_len(cli->evt_inbuf) + 4;
+ buf_len = talloc_get_size(cli->evt_inbuf);
+ rest_len = buf_len - raw_pdu_len;
+
+ if (buf_len == raw_pdu_len) {
+ /*
+ * Optimal case: Exactly one PDU was in the socket buffer
+ */
+ pdu = cli->evt_inbuf;
+ cli->evt_inbuf = NULL;
+ }
+ else {
+ DEBUG(11, ("buf_len = %d, raw_pdu_len = %d, splitting "
+ "buffer\n", (int)buf_len, (int)raw_pdu_len));
+
+ if (raw_pdu_len < rest_len) {
+ /*
+ * The PDU is shorter, talloc_memdup that one.
+ */
+ pdu = (char *)talloc_memdup(
+ cli, cli->evt_inbuf, raw_pdu_len);
+
+ memmove(cli->evt_inbuf, cli->evt_inbuf + raw_pdu_len,
+ buf_len - raw_pdu_len);
+
+ cli->evt_inbuf = TALLOC_REALLOC_ARRAY(
+ NULL, cli->evt_inbuf, char, rest_len);
+
+ if (pdu == NULL) {
+ status = NT_STATUS_NO_MEMORY;
+ goto invalidate_requests;
+ }
+ }
+ else {
+ /*
+ * The PDU is larger than the rest, talloc_memdup the
+ * rest
+ */
+ pdu = cli->evt_inbuf;
+
+ cli->evt_inbuf = (char *)talloc_memdup(
+ cli, pdu + raw_pdu_len, rest_len);
+
+ if (cli->evt_inbuf == NULL) {
+ status = NT_STATUS_NO_MEMORY;
+ goto invalidate_requests;
+ }
+ }
+
+ }
/*
* TODO: Handle oplock break requests
*/
- if (cli_encryption_on(cli) && CVAL(cli->evt_inbuf, 0) == 0) {
+ if (cli_encryption_on(cli) && CVAL(pdu, 0) == 0) {
uint16_t enc_ctx_num;
- status = get_enc_ctx_num((uint8_t *)cli->evt_inbuf,
- &enc_ctx_num);
+ status = get_enc_ctx_num((uint8_t *)pdu, &enc_ctx_num);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(10, ("get_enc_ctx_num returned %s\n",
nt_errstr(status)));
@@ -207,7 +255,7 @@ static void handle_incoming_pdu(struct cli_state *cli)
}
status = common_decrypt_buffer(cli->trans_enc_state,
- cli->evt_inbuf);
+ pdu);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(10, ("common_decrypt_buffer returned %s\n",
nt_errstr(status)));
@@ -215,13 +263,13 @@ static void handle_incoming_pdu(struct cli_state *cli)
}
}
- if (!cli_check_sign_mac(cli, cli->evt_inbuf)) {
+ if (!cli_check_sign_mac(cli, pdu)) {
DEBUG(10, ("cli_check_sign_mac failed\n"));
status = NT_STATUS_ACCESS_DENIED;
goto invalidate_requests;
}
- mid = SVAL(cli->evt_inbuf, smb_mid);
+ mid = SVAL(pdu, smb_mid);
DEBUG(10, ("handle_incoming_pdu: got mid %d\n", mid));
@@ -231,64 +279,17 @@ static void handle_incoming_pdu(struct cli_state *cli)
}
}
- buf_len = talloc_get_size(cli->evt_inbuf);
- pdu_len = smb_len(cli->evt_inbuf) + 4;
- rest_len = buf_len - raw_pdu_len;
+ pdu_len = smb_len(pdu) + 4;
if (req == NULL) {
DEBUG(3, ("Request for mid %d not found, dumping PDU\n", mid));
- memmove(cli->evt_inbuf, cli->evt_inbuf + raw_pdu_len,
- buf_len - raw_pdu_len);
-
- cli->evt_inbuf = TALLOC_REALLOC_ARRAY(NULL, cli->evt_inbuf,
- char, rest_len);
+ TALLOC_FREE(pdu);
return;
}
- if (buf_len == pdu_len) {
- /*
- * Optimal case: Exactly one PDU was in the socket buffer
- */
- req->inbuf = talloc_move(req, &cli->evt_inbuf);
- goto done;
- }
-
- DEBUG(11, ("buf_len = %d, pdu_len = %d, splitting buffer\n",
- (int)buf_len, (int)pdu_len));
-
- if (pdu_len < rest_len) {
- /*
- * The PDU is shorter, talloc_memdup that one.
- */
- req->inbuf = (char *)talloc_memdup(
- req, cli->evt_inbuf, pdu_len);
-
- memmove(cli->evt_inbuf,
- cli->evt_inbuf + raw_pdu_len,
- buf_len - raw_pdu_len);
-
- cli->evt_inbuf = TALLOC_REALLOC_ARRAY(
- NULL, cli->evt_inbuf, char, rest_len);
- }
- else {
- /*
- * The PDU is larger than the rest,
- * talloc_memdup the rest
- */
- req->inbuf = talloc_move(req, &cli->evt_inbuf);
-
- cli->evt_inbuf = (char *)talloc_memdup(
- cli, req->inbuf + raw_pdu_len,
- rest_len);
- }
-
- if ((req->inbuf == NULL) || (cli->evt_inbuf == NULL)) {
- status = NT_STATUS_NO_MEMORY;
- goto invalidate_requests;
- }
+ req->inbuf = talloc_move(req, &pdu);
- done:
async_req_done(req->async);
return;
diff --git a/source/libsmb/clireadwrite.c b/source/libsmb/clireadwrite.c
index c618509..9bd8170 100644
--- a/source/libsmb/clireadwrite.c
+++ b/source/libsmb/clireadwrite.c
@@ -24,7 +24,7 @@
****************************************************************************/
static size_t cli_read_max_bufsize(struct cli_state *cli)
{
- if (!client_is_signing_on(cli) && !cli_encryption_on(cli) == false
+ if (!client_is_signing_on(cli) && !cli_encryption_on(cli)
&& (cli->posix_capabilities & CIFS_UNIX_LARGE_READ_CAP)) {
return CLI_SAMBA_MAX_POSIX_LARGE_READX_SIZE;
}
diff --git a/source/libsmb/nmblib.c b/source/libsmb/nmblib.c
index 15a9a93..bfe5e7b 100644
--- a/source/libsmb/nmblib.c
+++ b/source/libsmb/nmblib.c
@@ -849,9 +849,8 @@ static bool send_udp(int fd,char *buf,int len,struct in_addr ip,int port)
If buf == NULL this is a length calculation.
******************************************************************/
-static int build_dgram(char *buf, size_t len, struct packet_struct *p)
+static int build_dgram(char *buf, size_t len, struct dgram_packet *dgram)
{
- struct dgram_packet *dgram = &p->packet.dgram;
unsigned char *ubuf = (unsigned char *)buf;
int offset=0;
@@ -926,9 +925,8 @@ bool nmb_name_equal(struct nmb_name *n1, struct nmb_name *n2)
If buf == NULL this is a length calculation.
******************************************************************/
-static int build_nmb(char *buf, size_t len, struct packet_struct *p)
+static int build_nmb(char *buf, size_t len, struct nmb_packet *nmb)
{
- struct nmb_packet *nmb = &p->packet.nmb;
unsigned char *ubuf = (unsigned char *)buf;
int offset=0;
@@ -1058,11 +1056,11 @@ int build_packet(char *buf, size_t buflen, struct packet_struct *p)
switch (p->packet_type) {
case NMB_PACKET:
- len = build_nmb(buf,buflen,p);
+ len = build_nmb(buf,buflen,&p->packet.nmb);
break;
case DGRAM_PACKET:
- len = build_dgram(buf,buflen,p);
+ len = build_dgram(buf,buflen,&p->packet.dgram);
break;
}
diff --git a/source/libsmb/unexpected.c b/source/libsmb/unexpected.c
index 5fbc33c..df4d211 100644
--- a/source/libsmb/unexpected.c
+++ b/source/libsmb/unexpected.c
@@ -22,7 +22,7 @@
static TDB_CONTEXT *tdbd = NULL;
-/* the key type used in the unexpeceted packet database */
+/* the key type used in the unexpected packet database */
struct unexpected_key {
enum packet_type packet_type;
time_t timestamp;
@@ -32,7 +32,7 @@ struct unexpected_key {
/****************************************************************************
All unexpected packets are passed in here, to be stored in a unexpected
packet database. This allows nmblookup and other tools to receive packets
- erroneoously sent to the wrong port by broken MS systems.
+ erroneously sent to the wrong port by broken MS systems.
**************************************************************************/
void unexpected_packet(struct packet_struct *p)
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index dc90884..008ffed 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -3189,7 +3189,7 @@ cap_low = 0x%x, cap_high = 0x%x\n",
}
DEBUG( 4,("call_trans2setfsinfo: "
- "request transport encrption.\n"));
+ "request transport encryption.\n"));
status = srv_request_encryption_setup(conn,
(unsigned char **)ppdata,
diff --git a/source/torture/torture.c b/source/torture/torture.c
index 8d67e51..d8add20 100644
--- a/source/torture/torture.c
+++ b/source/torture/torture.c
@@ -5502,6 +5502,7 @@ static void usage(void)
int gotpass = 0;
bool correct = True;
TALLOC_CTX *frame = talloc_stackframe();
+ int seed = time(NULL);
dbf = x_stdout;
@@ -5547,8 +5548,6 @@ static void usage(void)
argc--;
argv++;
- srandom(time(NULL));
-
fstrcpy(workgroup, lp_workgroup());
while ((opt = getopt(argc, argv, "p:hW:U:n:N:O:o:m:Ld:Aec:ks:b:")) != EOF) {
@@ -5557,7 +5556,7 @@ static void usage(void)
port_to_use = atoi(optarg);
break;
case 's':
- srandom(atoi(optarg));
+ seed = atoi(optarg);
break;
case 'W':
fstrcpy(workgroup,optarg);
@@ -5620,6 +5619,10 @@ static void usage(void)
}
}
+ d_printf("using seed %d\n", seed);
+
+ srandom(seed);
+
if(use_kerberos && !gotuser) gotpass = True;
while (!gotpass) {
--
Samba Shared Repository
More information about the samba-cvs
mailing list