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