[SCM] Samba Shared Repository - branch master updated
Volker Lendecke
vlendec at samba.org
Sat Sep 27 04:45:06 MDT 2014
The branch, master has been updated
via e3a796f s3:torture: in LOCAL-MESSAGING-FDPASS2, close fds after passing them
via a4edec4 s3:unix_msg: fix a tab<->space mixup in unix_msg_recv()
via d7d70c0 smbd:smb2: improve smbd_smb2_protocol_dialect_match(), removing code duplication
from 043585f WHATSNEW: Update WHATSNEW for new default winbind implementation
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit e3a796f3eb9adfe2f68e9b8522fb59923fc47c21
Author: Michael Adam <obnox at samba.org>
Date: Wed Sep 24 19:11:27 2014 +0200
s3:torture: in LOCAL-MESSAGING-FDPASS2, close fds after passing them
Signed-off-by: Michael Adam <obnox at samba.org>
Reviewed-by: Volker Lendecke <vl at samba.org>
Autobuild-User(master): Volker Lendecke <vl at samba.org>
Autobuild-Date(master): Sat Sep 27 12:44:55 CEST 2014 on sn-devel-104
commit a4edec4e8d64f410cd0dd21752d3c27d0915c906
Author: Michael Adam <obnox at samba.org>
Date: Thu Sep 25 19:56:52 2014 +0200
s3:unix_msg: fix a tab<->space mixup in unix_msg_recv()
Signed-off-by: Michael Adam <obnox at samba.org>
Reviewed-by: Volker Lendecke <vl at samba.org>
commit d7d70c0d3c2efaa65318b1f91512746a71846341
Author: Michael Adam <obnox at samba.org>
Date: Fri Sep 26 06:31:58 2014 +0200
smbd:smb2: improve smbd_smb2_protocol_dialect_match(), removing code duplication
Signed-off-by: Michael Adam <obnox at samba.org>
Reviewed-by: Volker Lendecke <vl at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/lib/unix_msg/unix_msg.c | 2 +-
source3/smbd/smb2_negprot.c | 98 +++++++--------------------
source3/torture/test_messaging_fd_passing.c | 3 +
3 files changed, 29 insertions(+), 74 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/lib/unix_msg/unix_msg.c b/source3/lib/unix_msg/unix_msg.c
index 28ea514..01554a2 100644
--- a/source3/lib/unix_msg/unix_msg.c
+++ b/source3/lib/unix_msg/unix_msg.c
@@ -994,7 +994,7 @@ static void unix_msg_recv(struct unix_dgram_ctx *dgram_ctx,
buflen -= sizeof(cookie);
if (cookie == 0) {
- ctx->recv_callback(ctx, buf, buflen, fds, num_fds, ctx->private_data);
+ ctx->recv_callback(ctx, buf, buflen, fds, num_fds, ctx->private_data);
return;
}
diff --git a/source3/smbd/smb2_negprot.c b/source3/smbd/smb2_negprot.c
index 6524658..d40a17f 100644
--- a/source3/smbd/smb2_negprot.c
+++ b/source3/smbd/smb2_negprot.c
@@ -87,85 +87,37 @@ enum protocol_types smbd_smb2_protocol_dialect_match(const uint8_t *indyn,
const int dialect_count,
uint16_t *dialect)
{
- size_t c = 0;
- enum protocol_types protocol = PROTOCOL_NONE;
-
- for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
- if (lp_server_max_protocol() < PROTOCOL_SMB3_00) {
- break;
- }
- if (lp_server_min_protocol() > PROTOCOL_SMB3_00) {
- break;
- }
-
- *dialect = SVAL(indyn, c*2);
- if (*dialect == SMB3_DIALECT_REVISION_300) {
- protocol = PROTOCOL_SMB3_00;
- break;
- }
- }
-
- for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
- if (lp_server_max_protocol() < PROTOCOL_SMB2_24) {
- break;
- }
- if (lp_server_min_protocol() > PROTOCOL_SMB2_24) {
- break;
- }
-
- *dialect = SVAL(indyn, c*2);
- if (*dialect == SMB2_DIALECT_REVISION_224) {
- protocol = PROTOCOL_SMB2_24;
- break;
- }
- }
-
- for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
- if (lp_server_max_protocol() < PROTOCOL_SMB2_22) {
- break;
+ struct {
+ enum protocol_types proto;
+ uint16_t dialect;
+ } pd[] = {
+ { PROTOCOL_SMB3_00, SMB3_DIALECT_REVISION_300 },
+ { PROTOCOL_SMB2_24, SMB2_DIALECT_REVISION_224 },
+ { PROTOCOL_SMB2_22, SMB2_DIALECT_REVISION_222 },
+ { PROTOCOL_SMB2_10, SMB2_DIALECT_REVISION_210 },
+ { PROTOCOL_SMB2_02, SMB2_DIALECT_REVISION_202 },
+ };
+ size_t i;
+
+ for (i = 0; i < ARRAY_SIZE(pd); i ++) {
+ size_t c = 0;
+
+ if (lp_server_max_protocol() < pd[i].proto) {
+ continue;
}
- if (lp_server_min_protocol() > PROTOCOL_SMB2_22) {
- break;
- }
-
- *dialect = SVAL(indyn, c*2);
- if (*dialect == SMB2_DIALECT_REVISION_222) {
- protocol = PROTOCOL_SMB2_22;
- break;
- }
- }
-
- for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
- if (lp_server_max_protocol() < PROTOCOL_SMB2_10) {
- break;
- }
- if (lp_server_min_protocol() > PROTOCOL_SMB2_10) {
- break;
+ if (lp_server_min_protocol() > pd[i].proto) {
+ continue;
}
- *dialect = SVAL(indyn, c*2);
- if (*dialect == SMB2_DIALECT_REVISION_210) {
- protocol = PROTOCOL_SMB2_10;
- break;
- }
- }
-
- for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
- if (lp_server_max_protocol() < PROTOCOL_SMB2_02) {
- break;
- }
- if (lp_server_min_protocol() > PROTOCOL_SMB2_02) {
- break;
- }
-
- *dialect = SVAL(indyn, c*2);
- if (*dialect == SMB2_DIALECT_REVISION_202) {
- protocol = PROTOCOL_SMB2_02;
- break;
+ for (c = 0; c < dialect_count; c++) {
+ *dialect = SVAL(indyn, c*2);
+ if (*dialect == pd[i].dialect) {
+ return pd[i].proto;
+ }
}
}
- return protocol;
+ return PROTOCOL_NONE;
}
NTSTATUS smbd_smb2_request_process_negprot(struct smbd_smb2_request *req)
diff --git a/source3/torture/test_messaging_fd_passing.c b/source3/torture/test_messaging_fd_passing.c
index 1a296e4..5b3099e 100644
--- a/source3/torture/test_messaging_fd_passing.c
+++ b/source3/torture/test_messaging_fd_passing.c
@@ -255,6 +255,9 @@ static bool fdpass2_parent(pid_t child_pid, int ready_fd)
goto done;
}
+ close(up_pipe[0]);
+ close(down_pipe[1]);
+
bytes = write(up_pipe[1], &c1, 1);
if (bytes != 1) {
perror("parent: write to up pipe failed");
--
Samba Shared Repository
More information about the samba-cvs
mailing list