svn commit: samba r11695 - in branches/SAMBA_4_0/source/torture: . smb2

tridge at samba.org tridge at samba.org
Sat Nov 12 02:37:51 GMT 2005


Author: tridge
Date: 2005-11-12 02:37:51 +0000 (Sat, 12 Nov 2005)
New Revision: 11695

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11695

Log:

added SMB2-SCAN torture test for scanning for active SMB2 opcodes


Added:
   branches/SAMBA_4_0/source/torture/smb2/scan.c
Modified:
   branches/SAMBA_4_0/source/torture/smb2/config.mk
   branches/SAMBA_4_0/source/torture/smb2/connect.c
   branches/SAMBA_4_0/source/torture/torture.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/smb2/config.mk
===================================================================
--- branches/SAMBA_4_0/source/torture/smb2/config.mk	2005-11-12 02:16:19 UTC (rev 11694)
+++ branches/SAMBA_4_0/source/torture/smb2/config.mk	2005-11-12 02:37:51 UTC (rev 11695)
@@ -3,7 +3,8 @@
 # Start SUBSYSTEM TORTURE_SMB2
 [SUBSYSTEM::TORTURE_SMB2]
 ADD_OBJ_FILES = \
-		connect.o
+		connect.o \
+		scan.o
 REQUIRED_SUBSYSTEMS = \
 		LIBCLI_SMB2
 # End SUBSYSTEM TORTURE_SMB2

Modified: branches/SAMBA_4_0/source/torture/smb2/connect.c
===================================================================
--- branches/SAMBA_4_0/source/torture/smb2/connect.c	2005-11-12 02:16:19 UTC (rev 11694)
+++ branches/SAMBA_4_0/source/torture/smb2/connect.c	2005-11-12 02:37:51 UTC (rev 11695)
@@ -24,21 +24,9 @@
 #include "libcli/raw/libcliraw.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
-#include "librpc/gen_ndr/ndr_security.h"
 #include "lib/cmdline/popt_common.h"
 #include "lib/events/events.h"
 
-#define BASEDIR "\\testsmb2"
-
-#define CHECK_STATUS(status, correct) do { \
-	if (!NT_STATUS_EQUAL(status, correct)) { \
-		printf("(%s) Incorrect status %s - should be %s\n", \
-		       __location__, nt_errstr(status), nt_errstr(correct)); \
-		ret = False; \
-		goto done; \
-	}} while (0)
-
-
 /*
   send a close
 */
@@ -141,8 +129,8 @@
 		return False;
 	}
 
-	h1        = torture_smb2_create(tree, "test9.dat");
-	h2        = torture_smb2_create(tree, "test9.dat");
+	h1 = torture_smb2_create(tree, "test9.dat");
+	h2 = torture_smb2_create(tree, "test9.dat");
 	torture_smb2_close(tree, h1);
 	torture_smb2_close(tree, h2);
 

Added: branches/SAMBA_4_0/source/torture/smb2/scan.c
===================================================================
--- branches/SAMBA_4_0/source/torture/smb2/scan.c	2005-11-12 02:16:19 UTC (rev 11694)
+++ branches/SAMBA_4_0/source/torture/smb2/scan.c	2005-11-12 02:37:51 UTC (rev 11695)
@@ -0,0 +1,76 @@
+/* 
+   Unix SMB/CIFS implementation.
+
+   SMB2 opcode scanner
+
+   Copyright (C) Andrew Tridgell 2005
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+#include "libcli/raw/libcliraw.h"
+#include "libcli/smb2/smb2.h"
+#include "libcli/smb2/smb2_calls.h"
+#include "lib/cmdline/popt_common.h"
+#include "lib/events/events.h"
+
+
+/* 
+   scan for valid SMB2 opcodes
+*/
+BOOL torture_smb2_scan(void)
+{
+	TALLOC_CTX *mem_ctx = talloc_new(NULL);
+	struct smb2_tree *tree;
+	const char *host = lp_parm_string(-1, "torture", "host");
+	const char *share = lp_parm_string(-1, "torture", "share");
+	struct cli_credentials *credentials = cmdline_credentials;
+	NTSTATUS status;
+	int opcode;
+	struct smb2_request *req;
+
+	status = smb2_connect(mem_ctx, host, share, credentials, &tree, 
+			      event_context_find(mem_ctx));
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("Connection failed - %s\n", nt_errstr(status));
+		return False;
+	}
+
+	tree->session->transport->options.timeout = 3;
+
+	for (opcode=0;opcode<1000;opcode++) {
+		req = smb2_request_init_tree(tree, opcode, 2);
+		SSVAL(req->out.body, 0, 0);
+		smb2_transport_send(req);
+		if (!smb2_request_receive(req)) {
+			talloc_free(tree);
+			status = smb2_connect(mem_ctx, host, share, credentials, &tree, 
+					      event_context_find(mem_ctx));
+			if (!NT_STATUS_IS_OK(status)) {
+				printf("Connection failed - %s\n", nt_errstr(status));
+				return False;
+			}
+			tree->session->transport->options.timeout = 3;
+		} else {
+			status = smb2_request_destroy(req);
+			printf("active opcode %4d gave status %s\n", opcode, nt_errstr(status));
+		}
+	}
+
+	talloc_free(mem_ctx);
+
+	return True;
+}

Modified: branches/SAMBA_4_0/source/torture/torture.c
===================================================================
--- branches/SAMBA_4_0/source/torture/torture.c	2005-11-12 02:16:19 UTC (rev 11694)
+++ branches/SAMBA_4_0/source/torture/torture.c	2005-11-12 02:37:51 UTC (rev 11695)
@@ -2253,6 +2253,7 @@
 
 	/* SMB2 tests */
 	{"SMB2-CONNECT", torture_smb2_connect, 0},
+	{"SMB2-SCAN", torture_smb2_scan, 0},
 
 	/* protocol scanners */
 	{"SCAN-TRANS2", torture_trans2_scan, 0},



More information about the samba-cvs mailing list