Tests for bug #8972 - Add permission checks to run_simple_posix_open_test().
authorJeremy Allison <jra@samba.org>
Tue, 5 Jun 2012 03:45:34 +0000 (20:45 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 5 Jun 2012 06:20:03 +0000 (08:20 +0200)
This requires a share with :

create mask = 0777
force create mode = 0
directory mask = 0777
force directory mode = 0

set so we don't mess with requested permissions.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Tue Jun  5 08:20:03 CEST 2012 on sn-devel-104

source3/torture/torture.c

index 1fc80fe6a4976e1b1b9f56530fe1e3d9c69a1fc3..08294e6ab7f2425df0e4128152e759c846690fc9 100644 (file)
@@ -5402,6 +5402,13 @@ static bool run_simple_posix_open_test(int dummy)
                goto out;
        }
 
+       /* Ensure st_mode == 0600 */
+       if ((sbuf.st_ex_mode & 07777) != 0600) {
+               printf("posix_open - bad permissions 0%o != 0600\n",
+                               (unsigned int)(sbuf.st_ex_mode & 07777));
+               goto out;
+       }
+
        /* Test ftruncate - set file size back to zero. */
        status = cli_ftruncate(cli1, fnum1, 0);
        if (!NT_STATUS_IS_OK(status)) {
@@ -5632,6 +5639,26 @@ static bool run_simple_posix_open_test(int dummy)
                goto out;
        }
 
+       /* Check directory opens with a specific permission. */
+       status = cli_posix_mkdir(cli1, dname, 0700);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("POSIX mkdir of %s failed (%s)\n", dname, nt_errstr(status));
+               goto out;
+       }
+
+       /* Ensure st_mode == 0700 */
+       status = cli_posix_stat(cli1, dname, &sbuf);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("stat failed (%s)\n", nt_errstr(status));
+               goto out;
+       }
+
+       if ((sbuf.st_ex_mode & 07777) != 0700) {
+               printf("posix_mkdir - bad permissions 0%o != 0700\n",
+                               (unsigned int)(sbuf.st_ex_mode & 07777));
+               goto out;
+       }
+
        printf("Simple POSIX open test passed\n");
        correct = true;