From fee56ea90040a020cfe1938a3678effa00b772d4 Mon Sep 17 00:00:00 2001
From: Andrew Tridgell <tridge@samba.org>
Date: Mon, 4 Jul 2005 05:05:28 +0000
Subject: r8117: fixed a bunch more dos error code handing.

The biggest change was fixing the RAW-CONTEXT test. It was forcing
capabilities to zero in an attempt to not negotiated extended
security, but as a side effect it was forcing negotiation of dos error
codes. This confused the hell out of the test code!

Also fixed a bunch of places incorrectly using NT_STATUS_V() instead
of NT_STATUS_EQUAL() and several places that had the wrong dos status
codes
(This used to be commit 0b22744f40804a0d6dc94bfc40ec09306f584f7e)
---
 source4/torture/basic/attr.c    |  6 +++---
 source4/torture/basic/delete.c  |  4 ++--
 source4/torture/basic/locking.c | 12 ++++++------
 source4/torture/basic/scanner.c | 20 ++++++++++----------
 source4/torture/raw/context.c   | 10 +++++-----
 source4/torture/raw/eas.c       |  3 +--
 source4/torture/raw/lock.c      |  6 +++---
 source4/torture/torture.c       |  8 ++++----
 8 files changed, 34 insertions(+), 35 deletions(-)

(limited to 'source4')

diff --git a/source4/torture/basic/attr.c b/source4/torture/basic/attr.c
index 07a36ea950..daa0f98d60 100644
--- a/source4/torture/basic/attr.c
+++ b/source4/torture/basic/attr.c
@@ -130,15 +130,15 @@ BOOL torture_openattrtest(void)
 			if (fnum1 == -1) {
 				for (l = 0; l < ARRAY_SIZE(attr_results); l++) {
 					if (attr_results[l].num == k) {
-						printf("[%d] trunc open 0x%x -> 0x%x of %s failed - should have succeeded !(0x%x:%s)\n",
+						printf("[%d] trunc open 0x%x -> 0x%x of %s failed - should have succeeded !(%s)\n",
 								k, open_attrs_table[i],
 								open_attrs_table[j],
-								fname, NT_STATUS_V(smbcli_nt_error(cli1->tree)), smbcli_errstr(cli1->tree));
+								fname, smbcli_errstr(cli1->tree));
 						correct = False;
 						CHECK_MAX_FAILURES(error_exit);
 					}
 				}
-				if (NT_STATUS_V(smbcli_nt_error(cli1->tree)) != NT_STATUS_V(NT_STATUS_ACCESS_DENIED)) {
+				if (!NT_STATUS_EQUAL(smbcli_nt_error(cli1->tree), NT_STATUS_ACCESS_DENIED)) {
 					printf("[%d] trunc open 0x%x -> 0x%x failed with wrong error code %s\n",
 							k, open_attrs_table[i], open_attrs_table[j],
 							smbcli_errstr(cli1->tree));
diff --git a/source4/torture/basic/delete.c b/source4/torture/basic/delete.c
index f3aef08ce1..7ddd39c1cb 100644
--- a/source4/torture/basic/delete.c
+++ b/source4/torture/basic/delete.c
@@ -550,7 +550,7 @@ BOOL torture_test_delete(void)
 
 	status = smbcli_nt_delete_on_close(cli1->tree, fnum1, True);
 
-	if (NT_STATUS_V(status) != NT_STATUS_V(NT_STATUS_CANNOT_DELETE)) {
+	if (!NT_STATUS_EQUAL(status, NT_STATUS_CANNOT_DELETE)) {
 		printf("(%s) setting delete_on_close should fail with NT_STATUS_CANNOT_DELETE. Got %s instead)\n", 
 		       __location__, smbcli_errstr(cli1->tree));
 		correct = False;
@@ -585,7 +585,7 @@ BOOL torture_test_delete(void)
 		goto fail;
 	} else {
 		status = smbcli_nt_error(cli1->tree);
-		if (NT_STATUS_V(status) != NT_STATUS_V(NT_STATUS_CANNOT_DELETE)) {
+		if (!NT_STATUS_EQUAL(status, NT_STATUS_CANNOT_DELETE)) {
 			printf("(%s) setting delete_on_close on open should fail with NT_STATUS_CANNOT_DELETE. Got %s instead)\n", 
 			       __location__, smbcli_errstr(cli1->tree));
 			correct = False;
diff --git a/source4/torture/basic/locking.c b/source4/torture/basic/locking.c
index c3feaae2eb..3f395f3907 100644
--- a/source4/torture/basic/locking.c
+++ b/source4/torture/basic/locking.c
@@ -281,7 +281,7 @@ BOOL torture_locktest2(void)
 		correct = False;
 	} else {
 		if (!check_error(__location__, cli, 
-				 ERRDOS, ERRlock, 
+				 ERRDOS, ERRnotlocked, 
 				 NT_STATUS_RANGE_NOT_LOCKED)) return False;
 	}
 
@@ -290,7 +290,7 @@ BOOL torture_locktest2(void)
 		correct = False;
 	} else {
 		if (!check_error(__location__, cli, 
-				 ERRDOS, ERRlock, 
+				 ERRDOS, ERRnotlocked, 
 				 NT_STATUS_RANGE_NOT_LOCKED)) return False;
 	}
 
@@ -851,7 +851,7 @@ BOOL torture_locktest7(void)
 
 	if (smbcli_write(cli1->tree, fnum1, 0, buf, 130, 4) != 4) {
 		printf("pid1 unable to write to the range 130:4, error was %s\n", smbcli_errstr(cli1->tree));
-		if (NT_STATUS_V(smbcli_nt_error(cli1->tree)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
+		if (!NT_STATUS_EQUAL(smbcli_nt_error(cli1->tree), NT_STATUS_FILE_LOCK_CONFLICT)) {
 			printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT) (%s)\n", 
 			       __location__);
 			goto fail;
@@ -872,7 +872,7 @@ BOOL torture_locktest7(void)
 
 	if (smbcli_write(cli1->tree, fnum1, 0, buf, 130, 4) != 4) {
 		printf("pid2 unable to write to the range 130:4, error was %s\n", smbcli_errstr(cli1->tree));
-		if (NT_STATUS_V(smbcli_nt_error(cli1->tree)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
+		if (!NT_STATUS_EQUAL(smbcli_nt_error(cli1->tree), NT_STATUS_FILE_LOCK_CONFLICT)) {
 			printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT) (%s)\n",
 			       __location__);
 			goto fail;
@@ -915,7 +915,7 @@ BOOL torture_locktest7(void)
 	if (smbcli_read(cli1->tree, fnum1, buf, 130, 4) != 4) {
 		printf("pid2 unable to read the range 130:4, error was %s\n", 
 		       smbcli_errstr(cli1->tree));
-		if (NT_STATUS_V(smbcli_nt_error(cli1->tree)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
+		if (!NT_STATUS_EQUAL(smbcli_nt_error(cli1->tree), NT_STATUS_FILE_LOCK_CONFLICT)) {
 			printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT) (%s)\n",
 			       __location__);
 			goto fail;
@@ -929,7 +929,7 @@ BOOL torture_locktest7(void)
 	if (smbcli_write(cli1->tree, fnum1, 0, buf, 130, 4) != 4) {
 		printf("pid2 unable to write to the range 130:4, error was %s\n", 
 		       smbcli_errstr(cli1->tree));
-		if (NT_STATUS_V(smbcli_nt_error(cli1->tree)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
+		if (!NT_STATUS_EQUAL(smbcli_nt_error(cli1->tree), NT_STATUS_FILE_LOCK_CONFLICT)) {
 			printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT) (%s)\n",
 			       __location__);
 			goto fail;
diff --git a/source4/torture/basic/scanner.c b/source4/torture/basic/scanner.c
index df9234feca..06dff7e72c 100644
--- a/source4/torture/basic/scanner.c
+++ b/source4/torture/basic/scanner.c
@@ -33,11 +33,11 @@ look for a partial hit
 ****************************************************************************/
 static void trans2_check_hit(const char *format, int op, int level, NTSTATUS status)
 {
-	if (NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_INVALID_LEVEL) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_NOT_IMPLEMENTED) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_NOT_SUPPORTED) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_UNSUCCESSFUL) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_INVALID_INFO_CLASS)) {
+	if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_LEVEL) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_NOT_IMPLEMENTED) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_NOT_SUPPORTED) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_INVALID_INFO_CLASS)) {
 		return;
 	}
 #if VERBOSE
@@ -311,11 +311,11 @@ look for a partial hit
 ****************************************************************************/
 static void nttrans_check_hit(const char *format, int op, int level, NTSTATUS status)
 {
-	if (NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_INVALID_LEVEL) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_NOT_IMPLEMENTED) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_NOT_SUPPORTED) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_UNSUCCESSFUL) ||
-	    NT_STATUS_V(status) == NT_STATUS_V(NT_STATUS_INVALID_INFO_CLASS)) {
+	if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_LEVEL) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_NOT_IMPLEMENTED) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_NOT_SUPPORTED) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL) ||
+	    NT_STATUS_EQUAL(status, NT_STATUS_INVALID_INFO_CLASS)) {
 		return;
 	}
 #if VERBOSE
diff --git a/source4/torture/raw/context.c b/source4/torture/raw/context.c
index 830814f69c..5a5c78b5f2 100644
--- a/source4/torture/raw/context.c
+++ b/source4/torture/raw/context.c
@@ -31,7 +31,7 @@
 	if (!NT_STATUS_EQUAL(status, correct)) { \
 		printf("(%s) Incorrect status %s - should be %s\n", \
 		       __location__, nt_errstr(status), nt_errstr(correct)); \
-		ret = False; \
+		ret = False; exit(1); \
 		goto done; \
 	}} while (0)
 
@@ -129,21 +129,21 @@ static BOOL test_session(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
 
 		session3->vuid = session->vuid;
 		setup.in.sesskey = cli->transport->negotiate.sesskey;
-		setup.in.capabilities = 0; /* force a non extended security login (should fail) */
+		setup.in.capabilities &= ~CAP_EXTENDED_SECURITY; /* force a non extended security login (should fail) */
 		setup.in.workgroup = lp_workgroup();
 	
 		setup.in.credentials = cmdline_credentials;
 	
 
 		status = smb_composite_sesssetup(session3, &setup);
-		CHECK_STATUS(status, NT_STATUS_ACCESS_DENIED);
+		CHECK_STATUS(status, NT_STATUS_LOGON_FAILURE);
 
 		printf("create a fouth anonymous security context on the same transport, without extended security\n");
 		session4 = smbcli_session_init(cli->transport, mem_ctx, False);
 
 		session4->vuid = session->vuid;
 		setup.in.sesskey = cli->transport->negotiate.sesskey;
-		setup.in.capabilities = 0; /* force a non extended security login (should fail) */
+		setup.in.capabilities &= ~CAP_EXTENDED_SECURITY; /* force a non extended security login (should fail) */
 		setup.in.workgroup = lp_workgroup();
 		
 		anon_creds = cli_credentials_init(mem_ctx);
@@ -202,7 +202,7 @@ static BOOL test_session(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
 
 	printf("the new vuid should not now be accessible\n");
 	status = smb_raw_write(tree, &wr);
-	CHECK_STATUS(status, NT_STATUS_DOS(ERRSRV, ERRbaduid));
+	CHECK_STATUS(status, NT_STATUS_INVALID_HANDLE);
 
 	printf("second logoff for the new vuid should fail\n");
 	status = smb_raw_ulogoff(session);
diff --git a/source4/torture/raw/eas.c b/source4/torture/raw/eas.c
index 1fec54b38a..14f00599d9 100644
--- a/source4/torture/raw/eas.c
+++ b/source4/torture/raw/eas.c
@@ -194,9 +194,8 @@ static int test_one_eamax(struct smbcli_state *cli, const int fnum,
 		} else {
 			if (eadebug) {
 				printf ("[%s] EA size %d failed!    "
-					"(high=%d low=%d) [0x%08x %s]\n", 
+					"(high=%d low=%d) [%s]\n", 
 					eaname, i, high, low, 
-					NT_STATUS_V(status), 
 					nt_errstr(status));
 			}
 			high = i;
diff --git a/source4/torture/raw/lock.c b/source4/torture/raw/lock.c
index 88bf6ccaff..b2874351ec 100644
--- a/source4/torture/raw/lock.c
+++ b/source4/torture/raw/lock.c
@@ -496,14 +496,14 @@ static BOOL test_async(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
 	io.lockx.in.timeout = 0;
 	io.lockx.in.mode = LOCKING_ANDX_CANCEL_LOCK;
 	status = smb_raw_lock(cli->tree, &io);
-	CHECK_STATUS(status, NT_STATUS_UNSUCCESSFUL);
+	CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRcancelviolation));
 
 	/* cancel with the wrong bits set */
 	lock[0].offset = 100;
 	io.lockx.in.timeout = 0;
 	io.lockx.in.mode = LOCKING_ANDX_CANCEL_LOCK;
 	status = smb_raw_lock(cli->tree, &io);
-	CHECK_STATUS(status, NT_STATUS_UNSUCCESSFUL);
+	CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRcancelviolation));
 
 	/* cancel the right range */
 	lock[0].offset = 100;
@@ -640,7 +640,7 @@ static BOOL test_changetype(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
 	/* windows server don't seem to support this */
 	io.lockx.in.mode = LOCKING_ANDX_CHANGE_LOCKTYPE;
 	status = smb_raw_lock(cli->tree, &io);
-	CHECK_STATUS(status, NT_STATUS_UNSUCCESSFUL);
+	CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS, ERRnoatomiclocks));
 
 	if (smbcli_write(cli->tree, fnum, 0, &c, 100, 1) == 1) {
 		printf("allowed write after lock change (%s)\n", __location__);
diff --git a/source4/torture/torture.c b/source4/torture/torture.c
index 157233d43d..d7dbbc43cf 100644
--- a/source4/torture/torture.c
+++ b/source4/torture/torture.c
@@ -193,10 +193,10 @@ BOOL check_error(const char *location, struct smbcli_state *c,
 		class = NT_STATUS_DOS_CLASS(status);
 		num = NT_STATUS_DOS_CODE(status);
                 if (eclass != class || ecode != num) {
-                        printf("unexpected error code class=%d code=%d\n", 
-                               (int)class, (int)num);
-                        printf(" expected %d/%d %s (at %s)\n", 
-                               (int)eclass, (int)ecode, nt_errstr(nterr), location);
+                        printf("unexpected error code %s\n", nt_errstr(status));
+                        printf(" expected %s or %s (at %s)\n", 
+			       nt_errstr(NT_STATUS_DOS(eclass, ecode)), 
+                               nt_errstr(nterr), location);
                         return False;
                 }
         } else {
-- 
cgit