r873: converted samba4 to use real 64 bit integers instead of
[kamenim/samba.git] / source4 / torture / raw / write.c
index 117b3225308b3511f2b498f74a721e8473538fd3..18c992b8c633435ab5b80aaa010dc91fc828564f 100644 (file)
@@ -103,18 +103,18 @@ static BOOL test_write(struct cli_state *cli, TALLOC_CTX *mem_ctx)
 
        buf = talloc_zero(mem_ctx, maxsize);
 
-       if (cli_deltree(cli, BASEDIR) == -1 ||
-           !cli_mkdir(cli, BASEDIR)) {
-               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli));
+       if (cli_deltree(cli->tree, BASEDIR) == -1 ||
+           NT_STATUS_IS_ERR(cli_mkdir(cli->tree, BASEDIR))) {
+               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli->tree));
                return False;
        }
 
        printf("Testing RAW_WRITE_WRITE\n");
        io.generic.level = RAW_WRITE_WRITE;
        
-       fnum = cli_open(cli, fname, O_RDWR|O_CREAT, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
        if (fnum == -1) {
-               printf("Failed to create %s - %s\n", fname, cli_errstr(cli));
+               printf("Failed to create %s - %s\n", fname, cli_errstr(cli->tree));
                ret = False;
                goto done;
        }
@@ -140,7 +140,7 @@ static BOOL test_write(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_VALUE(io.write.out.nwritten, io.write.in.count);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 13) != 13) {
+       if (cli_read(cli->tree, fnum, buf, 0, 13) != 13) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -159,7 +159,7 @@ static BOOL test_write(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_VALUE(io.write.out.nwritten, 4000);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, 0, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -187,10 +187,10 @@ static BOOL test_write(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OK);
        CHECK_VALUE(io.write.out.nwritten, 4000);
-       CHECK_ALL_INFO(io.write.in.count + (SMB_BIG_UINT)io.write.in.offset, size);
+       CHECK_ALL_INFO(io.write.in.count + (uint64_t)io.write.in.offset, size);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, io.write.in.offset, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, io.write.in.offset, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -198,8 +198,9 @@ static BOOL test_write(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_BUFFER(buf, seed, 4000);
 
 done:
+       cli_close(cli->tree, fnum);
        smb_raw_exit(cli->session);
-       cli_deltree(cli, BASEDIR);
+       cli_deltree(cli->tree, BASEDIR);
        return ret;
 }
 
@@ -212,7 +213,7 @@ static BOOL test_writex(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        union smb_write io;
        NTSTATUS status;
        BOOL ret = True;
-       int fnum;
+       int fnum, i;
        char *buf;
        const int maxsize = 90000;
        const char *fname = BASEDIR "\\test.txt";
@@ -221,18 +222,18 @@ static BOOL test_writex(struct cli_state *cli, TALLOC_CTX *mem_ctx)
 
        buf = talloc_zero(mem_ctx, maxsize);
 
-       if (cli_deltree(cli, BASEDIR) == -1 ||
-           !cli_mkdir(cli, BASEDIR)) {
-               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli));
+       if (cli_deltree(cli->tree, BASEDIR) == -1 ||
+           NT_STATUS_IS_ERR(cli_mkdir(cli->tree, BASEDIR))) {
+               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli->tree));
                return False;
        }
 
        printf("Testing RAW_WRITE_WRITEX\n");
        io.generic.level = RAW_WRITE_WRITEX;
        
-       fnum = cli_open(cli, fname, O_RDWR|O_CREAT, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
        if (fnum == -1) {
-               printf("Failed to create %s - %s\n", fname, cli_errstr(cli));
+               printf("Failed to create %s - %s\n", fname, cli_errstr(cli->tree));
                ret = False;
                goto done;
        }
@@ -259,7 +260,7 @@ static BOOL test_writex(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_VALUE(io.writex.out.nwritten, io.writex.in.count);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 13) != 13) {
+       if (cli_read(cli->tree, fnum, buf, 0, 13) != 13) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -278,7 +279,7 @@ static BOOL test_writex(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_VALUE(io.writex.out.nwritten, 4000);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, 0, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -311,7 +312,7 @@ static BOOL test_writex(struct cli_state *cli, TALLOC_CTX *mem_ctx)
 
        printf("Trying locked region\n");
        cli->session->pid++;
-       if (!cli_lock(cli, fnum, 3, 1, 0, WRITE_LOCK)) {
+       if (NT_STATUS_IS_ERR(cli_lock(cli->tree, fnum, 3, 1, 0, WRITE_LOCK))) {
                printf("Failed to lock file at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -336,41 +337,44 @@ static BOOL test_writex(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OK);
        CHECK_VALUE(io.writex.out.nwritten, 4000);
-       CHECK_ALL_INFO(io.writex.in.count + (SMB_BIG_UINT)io.writex.in.offset, size);
+       CHECK_ALL_INFO(io.writex.in.count + (uint64_t)io.writex.in.offset, size);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, io.writex.in.offset, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, io.writex.in.offset, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
        }
        CHECK_BUFFER(buf, seed, 4000);
 
-       printf("Trying 2^43 offset\n");
-       setup_buffer(buf, seed+1, maxsize);
-       io.writex.in.fnum = fnum;
-       io.writex.in.count = 4000;
-       io.writex.in.offset = ((SMB_BIG_UINT)1) << 43;
-       io.writex.in.data = buf;
-       status = smb_raw_write(cli->tree, &io);
-       CHECK_STATUS(status, NT_STATUS_OK);
-       CHECK_VALUE(io.writex.out.nwritten, 4000);
-       CHECK_ALL_INFO(io.writex.in.count + (SMB_BIG_UINT)io.writex.in.offset, size);
-
-       memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, io.writex.in.offset, 4000) != 4000) {
-               printf("read failed at %d\n", __LINE__);
-               ret = False;
-               goto done;
+       for (i=33;i<64;i++) {
+               printf("Trying 2^%d offset\n", i);
+               setup_buffer(buf, seed+1, maxsize);
+               io.writex.in.fnum = fnum;
+               io.writex.in.count = 4000;
+               io.writex.in.offset = ((uint64_t)1) << i;
+               io.writex.in.data = buf;
+               status = smb_raw_write(cli->tree, &io);
+               CHECK_STATUS(status, NT_STATUS_OK);
+               CHECK_VALUE(io.writex.out.nwritten, 4000);
+               CHECK_ALL_INFO(io.writex.in.count + (uint64_t)io.writex.in.offset, size);
+
+               memset(buf, 0, maxsize);
+               if (cli_read(cli->tree, fnum, buf, io.writex.in.offset, 4000) != 4000) {
+                       printf("read failed at %d\n", __LINE__);
+                       ret = False;
+                       goto done;
+               }
+               CHECK_BUFFER(buf, seed+1, 4000);
        }
-       CHECK_BUFFER(buf, seed+1, 4000);
 
 
        setup_buffer(buf, seed, maxsize);
 
 done:
+       cli_close(cli->tree, fnum);
        smb_raw_exit(cli->session);
-       cli_deltree(cli, BASEDIR);
+       cli_deltree(cli->tree, BASEDIR);
        return ret;
 }
 
@@ -392,18 +396,18 @@ static BOOL test_writeunlock(struct cli_state *cli, TALLOC_CTX *mem_ctx)
 
        buf = talloc_zero(mem_ctx, maxsize);
 
-       if (cli_deltree(cli, BASEDIR) == -1 ||
-           !cli_mkdir(cli, BASEDIR)) {
-               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli));
+       if (cli_deltree(cli->tree, BASEDIR) == -1 ||
+           NT_STATUS_IS_ERR(cli_mkdir(cli->tree, BASEDIR))) {
+               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli->tree));
                return False;
        }
 
        printf("Testing RAW_WRITE_WRITEUNLOCK\n");
        io.generic.level = RAW_WRITE_WRITEUNLOCK;
        
-       fnum = cli_open(cli, fname, O_RDWR|O_CREAT, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
        if (fnum == -1) {
-               printf("Failed to create %s - %s\n", fname, cli_errstr(cli));
+               printf("Failed to create %s - %s\n", fname, cli_errstr(cli->tree));
                ret = False;
                goto done;
        }
@@ -426,7 +430,7 @@ static BOOL test_writeunlock(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        io.writeunlock.in.data = buf;
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED);
-       if (cli_read(cli, fnum, buf, 0, 13) != 13) {
+       if (cli_read(cli->tree, fnum, buf, 0, 13) != 13) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -435,14 +439,14 @@ static BOOL test_writeunlock(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_VALUE(IVAL(buf,0), 0);
 
        setup_buffer(buf, seed, maxsize);
-       cli_lock(cli, fnum, io.writeunlock.in.offset, io.writeunlock.in.count, 
+       cli_lock(cli->tree, fnum, io.writeunlock.in.offset, io.writeunlock.in.count, 
                 0, WRITE_LOCK);
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OK);
        CHECK_VALUE(io.writeunlock.out.nwritten, io.writeunlock.in.count);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 13) != 13) {
+       if (cli_read(cli->tree, fnum, buf, 0, 13) != 13) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -456,7 +460,7 @@ static BOOL test_writeunlock(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        io.writeunlock.in.count = 4000;
        io.writeunlock.in.offset = 0;
        io.writeunlock.in.data = buf;
-       cli_lock(cli, fnum, io.writeunlock.in.offset, io.writeunlock.in.count, 
+       cli_lock(cli->tree, fnum, io.writeunlock.in.offset, io.writeunlock.in.count, 
                 0, WRITE_LOCK);
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OK);
@@ -466,7 +470,7 @@ static BOOL test_writeunlock(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, 0, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -491,15 +495,15 @@ static BOOL test_writeunlock(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        io.writeunlock.in.count = 4000;
        io.writeunlock.in.offset = 0xFFFFFFFF - 2000;
        io.writeunlock.in.data = buf;
-       cli_lock(cli, fnum, io.writeunlock.in.offset, io.writeunlock.in.count, 
+       cli_lock(cli->tree, fnum, io.writeunlock.in.offset, io.writeunlock.in.count, 
                 0, WRITE_LOCK);
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OK);
        CHECK_VALUE(io.writeunlock.out.nwritten, 4000);
-       CHECK_ALL_INFO(io.writeunlock.in.count + (SMB_BIG_UINT)io.writeunlock.in.offset, size);
+       CHECK_ALL_INFO(io.writeunlock.in.count + (uint64_t)io.writeunlock.in.offset, size);
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, io.writeunlock.in.offset, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, io.writeunlock.in.offset, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -507,8 +511,9 @@ static BOOL test_writeunlock(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_BUFFER(buf, seed, 4000);
 
 done:
+       cli_close(cli->tree, fnum);
        smb_raw_exit(cli->session);
-       cli_deltree(cli, BASEDIR);
+       cli_deltree(cli->tree, BASEDIR);
        return ret;
 }
 
@@ -530,18 +535,18 @@ static BOOL test_writeclose(struct cli_state *cli, TALLOC_CTX *mem_ctx)
 
        buf = talloc_zero(mem_ctx, maxsize);
 
-       if (cli_deltree(cli, BASEDIR) == -1 ||
-           !cli_mkdir(cli, BASEDIR)) {
-               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli));
+       if (cli_deltree(cli->tree, BASEDIR) == -1 ||
+           NT_STATUS_IS_ERR(cli_mkdir(cli->tree, BASEDIR))) {
+               printf("Unable to setup %s - %s\n", BASEDIR, cli_errstr(cli->tree));
                return False;
        }
 
        printf("Testing RAW_WRITE_WRITECLOSE\n");
        io.generic.level = RAW_WRITE_WRITECLOSE;
        
-       fnum = cli_open(cli, fname, O_RDWR|O_CREAT, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
        if (fnum == -1) {
-               printf("Failed to create %s - %s\n", fname, cli_errstr(cli));
+               printf("Failed to create %s - %s\n", fname, cli_errstr(cli->tree));
                ret = False;
                goto done;
        }
@@ -572,10 +577,10 @@ static BOOL test_writeclose(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_INVALID_HANDLE);
 
-       fnum = cli_open(cli, fname, O_RDWR, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR, DENY_NONE);
        io.writeclose.in.fnum = fnum;
 
-       if (cli_read(cli, fnum, buf, 0, 13) != 13) {
+       if (cli_read(cli->tree, fnum, buf, 0, 13) != 13) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -588,11 +593,11 @@ static BOOL test_writeclose(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_STATUS(status, NT_STATUS_OK);
        CHECK_VALUE(io.writeclose.out.nwritten, io.writeclose.in.count);
 
-       fnum = cli_open(cli, fname, O_RDWR, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR, DENY_NONE);
        io.writeclose.in.fnum = fnum;
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 13) != 13) {
+       if (cli_read(cli->tree, fnum, buf, 0, 13) != 13) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -613,11 +618,11 @@ static BOOL test_writeclose(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_INVALID_HANDLE);
 
-       fnum = cli_open(cli, fname, O_RDWR, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR, DENY_NONE);
        io.writeclose.in.fnum = fnum;
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, 0, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, 0, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -645,13 +650,13 @@ static BOOL test_writeclose(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        status = smb_raw_write(cli->tree, &io);
        CHECK_STATUS(status, NT_STATUS_OK);
        CHECK_VALUE(io.writeclose.out.nwritten, 4000);
-       CHECK_ALL_INFO(io.writeclose.in.count + (SMB_BIG_UINT)io.writeclose.in.offset, size);
+       CHECK_ALL_INFO(io.writeclose.in.count + (uint64_t)io.writeclose.in.offset, size);
 
-       fnum = cli_open(cli, fname, O_RDWR, DENY_NONE);
+       fnum = cli_open(cli->tree, fname, O_RDWR, DENY_NONE);
        io.writeclose.in.fnum = fnum;
 
        memset(buf, 0, maxsize);
-       if (cli_read(cli, fnum, buf, io.writeclose.in.offset, 4000) != 4000) {
+       if (cli_read(cli->tree, fnum, buf, io.writeclose.in.offset, 4000) != 4000) {
                printf("read failed at %d\n", __LINE__);
                ret = False;
                goto done;
@@ -659,8 +664,9 @@ static BOOL test_writeclose(struct cli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_BUFFER(buf, seed, 4000);
 
 done:
+       cli_close(cli->tree, fnum);
        smb_raw_exit(cli->session);
-       cli_deltree(cli, BASEDIR);
+       cli_deltree(cli->tree, BASEDIR);
        return ret;
 }