r4973: Add a RAP scanner to smbtorture. win2k has call numbers 0-215 although
authorTim Potter <tpot@samba.org>
Tue, 25 Jan 2005 01:21:59 +0000 (01:21 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:09:10 +0000 (13:09 -0500)
the cifs tr lists 250-318 also.
(This used to be commit 37b4d1a676f341bc32a2a5a49fdfe2667636ccef)

source4/torture/rap/rap.c
source4/torture/torture.c

index 0080a80951e69db2c72237a29dd924cab8120d9f..ec2a351ddf24caa720f7683007fe67123d0ea6db 100644 (file)
@@ -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;
+}
index 638150e91bc3deedba4d82aa963357763d89763b..e41e1835371ad77a0b18f2cd6cf89edb83c5b862 100644 (file)
@@ -2380,6 +2380,7 @@ static struct {
        {"SCAN-CASETABLE", torture_casetable, 0},
        {"SCAN-PIPE_NUMBER", run_pipe_number, 0},
        {"SCAN-IOCTL",  torture_ioctl_test, 0},
+       {"SCAN-RAP",  torture_rap_scan, 0},
 
        /* rpc testers */
         {"RPC-LSA", torture_rpc_lsa, 0},