r13170: Remove some dependencies on -1 implying the size of pstring
[ira/wip.git] / source / torture / basic / scanner.c
index f4ebd5dacdb0f385400a4d886405cdedfab1e6ae..92de78e7afc536a06d8f8920225181dfbf9aeda1 100644 (file)
 */
 
 #include "includes.h"
+#include "torture/torture.h"
+#include "libcli/libcli.h"
+#include "libcli/raw/libcliraw.h"
+#include "system/filesys.h"
+#include "pstring.h"
 
 #define VERBOSE 0
 #define OP_MIN 0
@@ -29,11 +34,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
@@ -47,7 +52,7 @@ check for existance of a trans2 call
 ****************************************************************************/
 static NTSTATUS try_trans2(struct smbcli_state *cli, 
                           int op,
-                          char *param, char *data,
+                          uint8_t *param, uint8_t *data,
                           int param_len, int data_len,
                           int *rparam_len, int *rdata_len)
 {
@@ -58,8 +63,8 @@ static NTSTATUS try_trans2(struct smbcli_state *cli,
 
        mem_ctx = talloc_init("try_trans2");
 
-       t2.in.max_param = 1024;
-       t2.in.max_data = 0x8000;
+       t2.in.max_param = 64;
+       t2.in.max_data = smb_raw_max_trans_data(cli->tree, 64);
        t2.in.max_setup = 10;
        t2.in.flags = 0;
        t2.in.timeout = 0;
@@ -75,7 +80,7 @@ static NTSTATUS try_trans2(struct smbcli_state *cli,
        *rparam_len = t2.out.params.length;
        *rdata_len = t2.out.data.length;
 
-       talloc_destroy(mem_ctx);
+       talloc_free(mem_ctx);
        
        return status;
 }
@@ -84,7 +89,7 @@ static NTSTATUS try_trans2(struct smbcli_state *cli,
 static NTSTATUS try_trans2_len(struct smbcli_state *cli, 
                             const char *format,
                             int op, int level,
-                            char *param, char *data,
+                            uint8_t *param, uint8_t *data,
                             int param_len, int *data_len,
                             int *rparam_len, int *rdata_len)
 {
@@ -122,7 +127,7 @@ static BOOL trans2_op_exists(struct smbcli_state *cli, int op)
        int data_len = 0;
        int param_len = 0;
        int rparam_len, rdata_len;
-       pstring param, data;
+       uint8_t param[1024], data[1024];
        NTSTATUS status1, status2;
 
        memset(data, 0, sizeof(data));
@@ -157,7 +162,7 @@ static BOOL scan_trans2(struct smbcli_state *cli, int op, int level,
        int data_len = 0;
        int param_len = 0;
        int rparam_len, rdata_len;
-       pstring param, data;
+       uint8_t param[1024], data[1024];
        NTSTATUS status;
 
        memset(data, 0, sizeof(data));
@@ -236,7 +241,7 @@ static BOOL scan_trans2(struct smbcli_state *cli, int op, int level,
 }
 
 
-BOOL torture_trans2_scan(int dummy)
+BOOL torture_trans2_scan(void)
 {
        static struct smbcli_state *cli;
        int op, level;
@@ -254,16 +259,18 @@ BOOL torture_trans2_scan(int dummy)
                printf("file open failed - %s\n", smbcli_errstr(cli->tree));
        }
        dnum = smbcli_nt_create_full(cli->tree, "\\", 
-                                 0, GENERIC_RIGHTS_FILE_READ, FILE_ATTRIBUTE_NORMAL,
-                                 NTCREATEX_SHARE_ACCESS_READ | NTCREATEX_SHARE_ACCESS_WRITE, 
-                                 NTCREATEX_DISP_OPEN, 
-                                 NTCREATEX_OPTIONS_DIRECTORY, 0);
+                                    0, 
+                                    SEC_RIGHTS_FILE_READ, 
+                                    FILE_ATTRIBUTE_NORMAL,
+                                    NTCREATEX_SHARE_ACCESS_READ | NTCREATEX_SHARE_ACCESS_WRITE, 
+                                    NTCREATEX_DISP_OPEN, 
+                                    NTCREATEX_OPTIONS_DIRECTORY, 0);
        if (dnum == -1) {
                printf("directory open failed - %s\n", smbcli_errstr(cli->tree));
        }
        qfnum = smbcli_nt_create_full(cli->tree, "\\$Extend\\$Quota:$Q:$INDEX_ALLOCATION", 
                                   NTCREATEX_FLAGS_EXTENDED, 
-                                  SEC_RIGHTS_MAXIMUM_ALLOWED, 
+                                  SEC_FLAG_MAXIMUM_ALLOWED, 
                                   0,
                                   NTCREATEX_SHARE_ACCESS_READ|NTCREATEX_SHARE_ACCESS_WRITE, 
                                   NTCREATEX_DISP_OPEN, 
@@ -305,11 +312,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
@@ -323,7 +330,7 @@ check for existence of a nttrans call
 ****************************************************************************/
 static NTSTATUS try_nttrans(struct smbcli_state *cli, 
                            int op,
-                           char *param, char *data,
+                           uint8_t *param, uint8_t *data,
                            int param_len, int data_len,
                            int *rparam_len, int *rdata_len)
 {
@@ -339,8 +346,8 @@ static NTSTATUS try_nttrans(struct smbcli_state *cli,
        ntdata_blob.length = data_len;
        ntdata_blob.data = data;
 
-       parms.in.max_param = 1024;
-       parms.in.max_data = 1024;
+       parms.in.max_param = 64;
+       parms.in.max_data = smb_raw_max_trans_data(cli->tree, 64);
        parms.in.max_setup = 0;
        parms.in.setup_count = 0;
        parms.in.function = op;
@@ -351,13 +358,13 @@ static NTSTATUS try_nttrans(struct smbcli_state *cli,
        
        if (NT_STATUS_IS_ERR(status)) {
                DEBUG(1,("Failed to send NT_TRANS\n"));
-               talloc_destroy(mem_ctx);
+               talloc_free(mem_ctx);
                return status;
        }
        *rparam_len = parms.out.params.length;
        *rdata_len = parms.out.data.length;
 
-       talloc_destroy(mem_ctx);
+       talloc_free(mem_ctx);
 
        return status;
 }
@@ -366,7 +373,7 @@ static NTSTATUS try_nttrans(struct smbcli_state *cli,
 static NTSTATUS try_nttrans_len(struct smbcli_state *cli, 
                             const char *format,
                             int op, int level,
-                            char *param, char *data,
+                            uint8_t *param, uint8_t *data,
                             int param_len, int *data_len,
                             int *rparam_len, int *rdata_len)
 {
@@ -404,7 +411,7 @@ static BOOL scan_nttrans(struct smbcli_state *cli, int op, int level,
        int data_len = 0;
        int param_len = 0;
        int rparam_len, rdata_len;
-       pstring param, data;
+       uint8_t param[1024], data[1024];
        NTSTATUS status;
 
        memset(data, 0, sizeof(data));
@@ -441,7 +448,7 @@ static BOOL scan_nttrans(struct smbcli_state *cli, int op, int level,
        SSVAL(param, 0, level);
        SSVAL(param, 2, 0);
        SSVAL(param, 4, 0);
-       param_len += push_string(&param[6], fname, -1, STR_TERMINATE | STR_UNICODE);
+       param_len += push_string(&param[6], fname, sizeof(pstring), STR_TERMINATE | STR_UNICODE);
 
        status = try_nttrans_len(cli, "fname", op, level, param, data, param_len, &data_len, 
                                &rparam_len, &rdata_len);
@@ -452,7 +459,7 @@ static BOOL scan_nttrans(struct smbcli_state *cli, int op, int level,
        SSVAL(param, 0, level);
        SSVAL(param, 2, 0);
        SSVAL(param, 4, 0);
-       param_len += push_string(&param[6], "\\newfile.dat", -1, STR_TERMINATE | STR_UNICODE);
+       param_len += push_string(&param[6], "\\newfile.dat", sizeof(pstring), STR_TERMINATE | STR_UNICODE);
 
        status = try_nttrans_len(cli, "newfile", op, level, param, data, param_len, &data_len, 
                                &rparam_len, &rdata_len);
@@ -464,7 +471,7 @@ static BOOL scan_nttrans(struct smbcli_state *cli, int op, int level,
        smbcli_mkdir(cli->tree, "\\testdir");
        param_len = 2;
        SSVAL(param, 0, level);
-       param_len += push_string(&param[2], "\\testdir", -1, STR_TERMINATE | STR_UNICODE);
+       param_len += push_string(&param[2], "\\testdir", sizeof(pstring), STR_TERMINATE | STR_UNICODE);
 
        status = try_nttrans_len(cli, "dfs", op, level, param, data, param_len, &data_len, 
                                &rparam_len, &rdata_len);
@@ -475,7 +482,7 @@ static BOOL scan_nttrans(struct smbcli_state *cli, int op, int level,
 }
 
 
-BOOL torture_nttrans_scan(int dummy)
+BOOL torture_nttrans_scan(void)
 {
        static struct smbcli_state *cli;
        int op, level;
@@ -515,7 +522,7 @@ BOOL torture_nttrans_scan(int dummy)
 
 
 /* scan for valid base SMB requests */
-BOOL torture_smb_scan(int dummy)
+BOOL torture_smb_scan(void)
 {
        static struct smbcli_state *cli;
        int op;