r23643: Fix the build farm tests. We were incorrectly passing the
authorJim McDonough <jmcd@samba.org>
Thu, 28 Jun 2007 18:08:04 +0000 (18:08 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:53:30 +0000 (14:53 -0500)
RPC-SAMBA3-GETUSERNAME tests before the previous password expiration
fixes, because if you create a user and only set the password
administratrively, the "last set time" should not get updated.  Needed
to add some more of the fields_present flags to do this.
(This used to be commit ce5637de22c19551c0ce5147658ceae33b976ef1)

source4/librpc/idl/samr.idl
source4/torture/rpc/samba3rpc.c

index d731b3d9d1983d79ce796329f144f09e281c9dd0..a9eee3d28ad3f409cef45092c836988070465526 100644 (file)
@@ -684,23 +684,36 @@ import "misc.idl", "lsa.idl", "security.idl";
 
        /* this defines the bits used for fields_present in info21 */
        typedef [bitmap32bit] bitmap {
-               SAMR_FIELD_ACCOUNT_NAME   = 0x00000001,
-               SAMR_FIELD_FULL_NAME      = 0x00000002,
-               SAMR_FIELD_PRIMARY_GID    = 0x00000008,
-               SAMR_FIELD_DESCRIPTION    = 0x00000010,
-               SAMR_FIELD_COMMENT        = 0x00000020,
-               SAMR_FIELD_HOME_DIRECTORY = 0x00000040,
-               SAMR_FIELD_HOME_DRIVE     = 0x00000080,
-               SAMR_FIELD_LOGON_SCRIPT   = 0x00000100,
-               SAMR_FIELD_PROFILE_PATH   = 0x00000200,
-               SAMR_FIELD_WORKSTATIONS   = 0x00000400,
-               SAMR_FIELD_LOGON_HOURS    = 0x00002000,
-               SAMR_FIELD_ACCT_FLAGS     = 0x00100000,
-               SAMR_FIELD_PARAMETERS     = 0x00200000,
-               SAMR_FIELD_COUNTRY_CODE   = 0x00400000,
-               SAMR_FIELD_CODE_PAGE      = 0x00800000,
-               SAMR_FIELD_PASSWORD       = 0x01000000, /* either of these */
-               SAMR_FIELD_PASSWORD2      = 0x02000000  /* two bits seems to work */
+               SAMR_FIELD_ACCOUNT_NAME     = 0x00000001,
+               SAMR_FIELD_FULL_NAME        = 0x00000002,
+               SAMR_FIELD_RID              = 0x00000004,
+               SAMR_FIELD_PRIMARY_GID      = 0x00000008,
+               SAMR_FIELD_DESCRIPTION      = 0x00000010,
+               SAMR_FIELD_COMMENT          = 0x00000020,
+               SAMR_FIELD_HOME_DIRECTORY   = 0x00000040,
+               SAMR_FIELD_HOME_DRIVE       = 0x00000080,
+               SAMR_FIELD_LOGON_SCRIPT     = 0x00000100,
+               SAMR_FIELD_PROFILE_PATH     = 0x00000200,
+               SAMR_FIELD_WORKSTATIONS     = 0x00000400,
+               SAMR_FIELD_LAST_LOGON       = 0x00000800,
+               SAMR_FIELD_LAST_LOGOFF      = 0x00001000,
+               SAMR_FIELD_LOGON_HOURS      = 0x00002000,
+               SAMR_FIELD_BAD_PWD_COUNT    = 0x00004000,
+               SAMR_FIELD_NUM_LOGONS       = 0x00008000,
+               SAMR_FIELD_ALLOW_PWD_CHANGE = 0x00010000,
+               SAMR_FIELD_FORCE_PWD_CHANGE = 0x00020000,
+               SAMR_FIELD_LAST_PWD_CHANGE  = 0x00040000,
+               SAMR_FIELD_ACCT_EXPIRY      = 0x00080000,
+               SAMR_FIELD_ACCT_FLAGS       = 0x00100000,
+               SAMR_FIELD_PARAMETERS       = 0x00200000,
+               SAMR_FIELD_COUNTRY_CODE     = 0x00400000,
+               SAMR_FIELD_CODE_PAGE        = 0x00800000,
+               SAMR_FIELD_PASSWORD         = 0x01000000, /* either of these */
+               SAMR_FIELD_PASSWORD2        = 0x02000000, /* two bits seems to work */
+               SAMR_FIELD_PRIVATE_DATA     = 0x04000000,
+               SAMR_FIELD_EXPIRED_FLAG     = 0x08000000,
+               SAMR_FIELD_SEC_DESC         = 0x10000000,
+               SAMR_FIELD_OWF_PWD          = 0x20000000
        } samr_FieldsPresent;
 
        typedef struct {
index d5a00557cf5df6ca0d5e0d12dc23520bf1c666d5..78fec79b24cf55f3c1f2bea22380a06819a95723 100644 (file)
@@ -536,24 +536,29 @@ static BOOL create_user(TALLOC_CTX *mem_ctx, struct smbcli_state *cli,
                union samr_UserInfo u_info;
                DATA_BLOB session_key;
 
-               encode_pw_buffer(u_info.info24.password.data, password,
+
+               ZERO_STRUCT(u_info);
+               encode_pw_buffer(u_info.info23.password.data, password,
                                 STR_UNICODE);
-               u_info.info24.pw_len =  strlen_m(password)*2;
 
                status = dcerpc_fetch_session_key(samr_pipe, &session_key);
                if (!NT_STATUS_IS_OK(status)) {
                        d_printf("dcerpc_fetch_session_key failed\n");
                        goto done;
                }
-               arcfour_crypt_blob(u_info.info24.password.data, 516,
+               arcfour_crypt_blob(u_info.info23.password.data, 516,
                                   &session_key);
+               u_info.info23.info.password_expired = 0;
+               u_info.info23.info.fields_present = SAMR_FIELD_PASSWORD | 
+                                                   SAMR_FIELD_PASSWORD2 |
+                                                   SAMR_FIELD_EXPIRED_FLAG;
                sui2.in.user_handle = wks_handle;
                sui2.in.info = &u_info;
-               sui2.in.level = 24;
+               sui2.in.level = 23;
 
                status = dcerpc_samr_SetUserInfo2(samr_pipe, tmp_ctx, &sui2);
                if (!NT_STATUS_IS_OK(status)) {
-                       d_printf("samr_SetUserInfo(24) failed: %s\n",
+                       d_printf("samr_SetUserInfo(23) failed: %s\n",
                                 nt_errstr(status));
                        goto done;
                }