summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2019-11-15 19:25:54 +1300
committerDouglas Bagnall <dbagnall@samba.org>2019-11-17 22:28:41 +0000
commit816869ecea06b0b936e3ead4074bb754ee8650ca (patch)
tree3fa7aec06e74e01407b0f21cc601b613d7c51315
parentb3bdb17a35380237f7b46cc2b453b6b6b7c7a4f8 (diff)
downloadsamba-816869ecea06b0b936e3ead4074bb754ee8650ca.tar.gz
ndrdump: Use human-readable strings for NDR decode errors
These make much more sense than the NTSTATUS values they can be forced to map to. Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
-rw-r--r--librpc/tools/ndrdump.c34
-rw-r--r--python/samba/tests/blackbox/ndrdump.py4
-rw-r--r--source4/librpc/tests/dns-decode_dns_name_packet-hex.txt2
3 files changed, 16 insertions, 24 deletions
diff --git a/librpc/tools/ndrdump.c b/librpc/tools/ndrdump.c
index 4f812eeda7a..2db6be3366b 100644
--- a/librpc/tools/ndrdump.c
+++ b/librpc/tools/ndrdump.c
@@ -193,7 +193,6 @@ static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
struct ndr_print *ndr_print,
const struct ndr_interface_call_pipes *pipes)
{
- NTSTATUS status;
enum ndr_err_code ndr_err;
uint32_t i;
@@ -221,12 +220,12 @@ static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
ndr_pull->current_mem_ctx = c;
ndr_err = pipes->pipes[i].ndr_pull(ndr_pull, NDR_SCALARS, c);
ndr_pull->current_mem_ctx = saved_mem_ctx;
- status = ndr_map_error2ntstatus(ndr_err);
- printf("pull returned %s\n", nt_errstr(status));
- if (!NT_STATUS_IS_OK(status)) {
+ printf("pull returned %s\n",
+ ndr_map_error2string(ndr_err));
+ if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
talloc_free(c);
- return status;
+ return ndr_map_error2ntstatus(ndr_err);
}
pipes->pipes[i].ndr_print(ndr_print, n, c);
talloc_free(c);
@@ -467,8 +466,8 @@ static void ndr_print_dummy(struct ndr_print *ndr, const char *format, ...)
}
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
- status = ndr_map_error2ntstatus(ndr_err);
- printf("pull for context file returned %s\n", nt_errstr(status));
+ printf("pull for context file returned %s\n",
+ ndr_map_error2string(ndr_err));
exit(1);
}
memcpy(v_st, st, f->struct_size);
@@ -513,10 +512,9 @@ static void ndr_print_dummy(struct ndr_print *ndr, const char *format, ...)
ndr_print->depth = 1;
ndr_err = ndr_pop_dcerpc_sec_verification_trailer(ndr_pull, mem_ctx, &sec_vt);
- status = ndr_map_error2ntstatus(ndr_err);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
printf("ndr_pop_dcerpc_sec_verification_trailer returned %s\n",
- nt_errstr(status));
+ ndr_map_error2string(ndr_err));
}
if (sec_vt != NULL && sec_vt->count.count > 0) {
@@ -543,11 +541,10 @@ static void ndr_print_dummy(struct ndr_print *ndr, const char *format, ...)
}
ndr_err = f->ndr_pull(ndr_pull, flags, st);
- status = ndr_map_error2ntstatus(ndr_err);
-
- printf("pull returned %s\n", nt_errstr(status));
+ printf("pull returned %s\n",
+ ndr_map_error2string(ndr_err));
- if (stop_on_parse_failure && !NT_STATUS_IS_OK(status)) {
+ if (stop_on_parse_failure && !NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
printf("not printing because --stop-on-parse-failure\n");
exit(1);
}
@@ -572,11 +569,6 @@ static void ndr_print_dummy(struct ndr_print *ndr, const char *format, ...)
f->ndr_print(ndr_print, format, flags, st);
- if (!NT_STATUS_IS_OK(status)) {
- printf("dump FAILED\n");
- exit(1);
- }
-
if (flags & NDR_IN) {
status = ndrdump_pull_and_print_pipes(format,
ndr_pull,
@@ -631,8 +623,8 @@ static void ndr_print_dummy(struct ndr_print *ndr, const char *format, ...)
ndr_v_pull->flags |= LIBNDR_FLAG_REF_ALLOC;
ndr_err = f->ndr_pull(ndr_v_pull, flags, v_st);
- status = ndr_map_error2ntstatus(ndr_err);
- printf("pull returned %s\n", nt_errstr(status));
+ printf("pull returned %s\n",
+ ndr_map_error2string(ndr_err));
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
printf("validate pull FAILED\n");
exit(1);
diff --git a/python/samba/tests/blackbox/ndrdump.py b/python/samba/tests/blackbox/ndrdump.py
index 8ec138bacb3..4e638c920d8 100644
--- a/python/samba/tests/blackbox/ndrdump.py
+++ b/python/samba/tests/blackbox/ndrdump.py
@@ -77,7 +77,7 @@ class NdrDumpTests(BlackboxTestCase):
def test_ndrdump_with_binary_struct_name(self):
# Prefix of the expected unparsed PAC data (without times, as
# these vary by host)
- expected = '''pull returned NT_STATUS_OK
+ expected = '''pull returned Success
PAC_DATA: struct PAC_DATA
num_buffers : 0x00000005 (5)
version : 0x00000000 (0)
@@ -96,7 +96,7 @@ class NdrDumpTests(BlackboxTestCase):
self.assertTrue(actual.endswith(b"dump OK\n"))
def test_ndrdump_with_binary_struct_number(self):
- expected = '''pull returned NT_STATUS_OK
+ expected = '''pull returned Success
0 : 33323130-3534-3736-3839-616263646566
dump OK
'''
diff --git a/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt b/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt
index a973c28d5b9..02e95c0bd20 100644
--- a/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt
+++ b/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt
@@ -1,4 +1,4 @@
-pull returned NT_STATUS_OK
+pull returned Success
dns_name_packet: struct dns_name_packet
id : 0xecef (60655)
operation : 0x2800 (10240)