Add torture tester to ensure we don't regress the ulogoff bug.
authorJeremy Allison <jra@samba.org>
Thu, 16 Apr 2009 23:21:31 +0000 (16:21 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 16 Apr 2009 23:22:37 +0000 (16:22 -0700)
Jeremy.

source3/torture/torture.c

index 804e77251638238937bf4451e95562695a2a64c6..33358307ae1924472dbd27077b29179584d06ab4 100644 (file)
@@ -5199,6 +5199,50 @@ static bool run_cli_echo(int dummy)
        return NT_STATUS_IS_OK(status);
 }
 
+static bool run_uid_regression_test(int dummy)
+{
+       static struct cli_state *cli;
+       int16_t old_vuid;
+       bool correct = True;
+
+       printf("starting uid regression test\n");
+
+       if (!torture_open_connection(&cli, 0)) {
+               return False;
+       }
+
+       cli_sockopt(cli, sockops);
+
+       /* Ok - now save then logoff our current user. */
+       old_vuid = cli->vuid;
+
+       if (!cli_ulogoff(cli)) {
+               d_printf("(%s) cli_ulogoff failed: %s\n",
+                       __location__, cli_errstr(cli));
+               correct = false;
+               goto out;
+       }
+
+       cli->vuid = old_vuid;
+
+       /* Try an operation. */
+       if (!cli_mkdir(cli, "\\uid_reg_test")) {
+               /* We expect bad uid. */
+               if (!check_error(__LINE__, cli, ERRSRV, ERRbaduid,
+                               NT_STATUS_NO_SUCH_USER)) {
+                       return False;
+               }
+               goto out;
+       }
+
+       cli_rmdir(cli, "\\uid_reg_test");
+
+  out:
+
+       torture_close_connection(cli);
+       return correct;
+}
+
 static bool run_local_substitute(int dummy)
 {
        bool ok = true;
@@ -5778,6 +5822,7 @@ static struct {
        {"RW3",  run_readwritelarge, 0},
        {"OPEN", run_opentest, 0},
        {"POSIX", run_simple_posix_open_test, 0},
+       { "UID-REGRESSION-TEST", run_uid_regression_test, 0},
 #if 1
        {"OPENATTR", run_openattrtest, 0},
 #endif