diff options
Diffstat (limited to 'source4/torture/rap')
-rw-r--r-- | source4/torture/rap/rap.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/source4/torture/rap/rap.c b/source4/torture/rap/rap.c index 0080a80951..ec2a351ddf 100644 --- a/source4/torture/rap/rap.c +++ b/source4/torture/rap/rap.c @@ -2,6 +2,7 @@ Unix SMB/CIFS implementation. test suite for various RAP operations Copyright (C) Volker Lendecke 2004 + Copyright (C) Tim Potter 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 @@ -183,8 +184,10 @@ static NTSTATUS rap_cli_do_call(struct smbcli_state *cli, TALLOC_CTX *mem_ctx, trans.in.trans_name = "\\PIPE\\LANMAN"; NDR_CHECK(ndr_push_uint16(params, call->callno)); - NDR_CHECK(ndr_push_string(params, NDR_SCALARS, call->paramdesc)); - NDR_CHECK(ndr_push_string(params, NDR_SCALARS, call->datadesc)); + if (call->paramdesc) + NDR_CHECK(ndr_push_string(params, NDR_SCALARS, call->paramdesc)); + if (call->datadesc) + NDR_CHECK(ndr_push_string(params, NDR_SCALARS, call->datadesc)); param_blob = ndr_push_blob(call->ndr_push_param); NDR_CHECK(ndr_push_bytes(params, param_blob.data, @@ -445,3 +448,28 @@ BOOL torture_raw_rap(void) talloc_destroy(mem_ctx); return ret; } + +BOOL torture_rap_scan(void) +{ + struct smbcli_state *cli; + uint16 callno; + + if (!torture_open_connection(&cli)) { + return False; + } + + for (callno = 0; callno < 0xffff; callno++) { + struct rap_call *call = new_rap_cli_call(callno); + NTSTATUS result; + + result = rap_cli_do_call(cli, cli, call); + + if (NT_STATUS_EQUAL(result, NT_STATUS_INVALID_PARAMETER)) + printf("callno %d is RAP call\n", callno); + + destroy_rap_call(call); + } + + torture_close_connection(cli); + return True; +} |