r8807: Modifying datetime field using struct timeval argument rather than
authorRafal Szczesniak <mimir@samba.org>
Wed, 27 Jul 2005 21:46:06 +0000 (21:46 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:30:06 +0000 (13:30 -0500)
text-based, after recent discussion with both Andrews :)

Basic test seems to work (at least it doesn't fail now).

rafal
(This used to be commit 1bc3162e9441aeae1d8c4b4f03b5b75eb848f4bf)

source4/libnet/composite.h
source4/libnet/userman.c
source4/torture/libnet/userman.c

index 6fc0886cb3f67503371be946e53a9c61b45c9366..256590bc5b74166cbd28be2f536afd53197bb896 100644 (file)
@@ -64,6 +64,7 @@ struct libnet_rpc_userdel {
 #define USERMOD_FIELD_DESCRIPTION     ( 0x00000010 )
 #define USERMOD_FIELD_LOGON_SCRIPT    ( 0x00000100 )
 #define USERMOD_FIELD_PROFILE_PATH    ( 0x00000200 )
+#define USERMOD_FIELD_ACCT_EXPIRY     ( 0x00004000 )
 
 struct libnet_rpc_usermod {
        struct {
@@ -78,6 +79,7 @@ struct libnet_rpc_usermod {
                        const char *description;
                        const char *logon_script;
                        const char *profile_path;
+                       struct timeval *acct_expiry;
                } change;
        } in;
 };
index a3c1eaf17aed373447be6aabc284b8efa2938a55..ef7f2658c46171910630f86851fc2984581f9afa 100644 (file)
@@ -549,6 +549,12 @@ static NTSTATUS usermod_open(struct composite_context *c,
                        i->info12.profile_path.string = s->change.profile_path;
 
                        s->change.fields ^= USERMOD_FIELD_PROFILE_PATH;
+
+               } else if (s->change.fields & USERMOD_FIELD_ACCT_EXPIRY) {
+                       level = 17;
+                       i->info17.acct_expiry = timeval_to_nttime(s->change.acct_expiry);
+
+                       s->change.fields ^= USERMOD_FIELD_ACCT_EXPIRY;
                }
        }
 
index 0441a99a54723cdc3079766cabc78a9e2592f248..063587feb259c9eee68f0858a235344f9189de48 100644 (file)
@@ -417,12 +417,15 @@ BOOL torture_usermod(void)
        BOOL ret = True;
        int i;
 
+       struct timeval expiry = { 12345, 67890 };
+
        struct usermod_change changes[] = {
-               { USERMOD_FIELD_ACCOUNT_NAME, "changed", NULL, NULL, NULL, NULL },
-               { USERMOD_FIELD_FULL_NAME,    NULL, "Testing full account name", NULL, NULL, NULL },
-               { USERMOD_FIELD_DESCRIPTION,  NULL, NULL, "Description of tested account", NULL, NULL },
-               { USERMOD_FIELD_LOGON_SCRIPT, NULL, NULL, NULL, "test_logon.cmd", NULL },
-               { USERMOD_FIELD_PROFILE_PATH, NULL, NULL, NULL, NULL, "\\\\TESTSRV\\profiles\\test" }
+               { USERMOD_FIELD_ACCOUNT_NAME, "changed", NULL, NULL, NULL, NULL, NULL },
+               { USERMOD_FIELD_FULL_NAME,    NULL, "Testing full account name", NULL, NULL, NULL, NULL },
+               { USERMOD_FIELD_DESCRIPTION,  NULL, NULL, "Description of tested account", NULL, NULL, NULL },
+               { USERMOD_FIELD_LOGON_SCRIPT, NULL, NULL, NULL, "test_logon.cmd", NULL, NULL },
+               { USERMOD_FIELD_PROFILE_PATH, NULL, NULL, NULL, NULL, "\\\\TESTSRV\\profiles\\test", NULL },
+               { USERMOD_FIELD_ACCT_EXPIRY,  NULL, NULL, NULL, NULL, NULL, &expiry }
        };
        
        mem_ctx = talloc_init("test_userdel");