summaryrefslogtreecommitdiff
path: root/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c')
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c b/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c
index 55f4e42364..6d858ab02d 100644
--- a/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c
+++ b/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c
@@ -45,7 +45,7 @@ static int samr_setup_user_info(WORD, struct samr_QueryUserInfo *,
union samr_user_info *);
static void samr_set_user_unknowns(struct samr_SetUserInfo23 *);
static void samr_set_user_logon_hours(struct samr_SetUserInfo *);
-static int samr_set_user_password(smb_auth_info_t *, BYTE *);
+static int samr_set_user_password(unsigned char *, BYTE *);
/*
* samr_lookup_domain
@@ -389,8 +389,9 @@ samr_get_user_pwinfo(mlsvc_handle_t *user_handle)
*/
/*ARGSUSED*/
DWORD
-samr_set_user_info(mlsvc_handle_t *user_handle, smb_auth_info_t *auth)
+samr_set_user_info(mlsvc_handle_t *user_handle)
{
+ unsigned char ssn_key[SMBAUTH_SESSION_KEY_SZ];
struct samr_SetUserInfo arg;
int opnum;
DWORD status = 0;
@@ -398,6 +399,9 @@ samr_set_user_info(mlsvc_handle_t *user_handle, smb_auth_info_t *auth)
if (ndr_is_null_handle(user_handle))
return (NT_STATUS_INVALID_PARAMETER);
+ if (ndr_rpc_get_ssnkey(user_handle, ssn_key, sizeof (ssn_key)))
+ return (NT_STATUS_INVALID_PARAMETER);
+
opnum = SAMR_OPNUM_SetUserInfo;
bzero(&arg, sizeof (struct samr_SetUserInfo));
(void) memcpy(&arg.user_handle, &user_handle->handle,
@@ -409,7 +413,7 @@ samr_set_user_info(mlsvc_handle_t *user_handle, smb_auth_info_t *auth)
samr_set_user_unknowns(&arg.info.ru.info23);
samr_set_user_logon_hours(&arg);
- if (samr_set_user_password(auth, arg.info.ru.info23.password) < 0)
+ if (samr_set_user_password(ssn_key, arg.info.ru.info23.password) < 0)
status = NT_STATUS_INTERNAL_ERROR;
if (ndr_rpc_call(user_handle, opnum, &arg) != 0) {
@@ -494,9 +498,8 @@ samr_set_user_logon_hours(struct samr_SetUserInfo *sui)
* key.
*/
static int
-samr_set_user_password(smb_auth_info_t *auth, BYTE *oem_password)
+samr_set_user_password(unsigned char *nt_key, BYTE *oem_password)
{
- unsigned char nt_key[SMBAUTH_SESSION_KEY_SZ];
char hostname[NETBIOS_NAME_SZ];
randomize((char *)oem_password, SAMR_SET_USER_DATA_SZ);
@@ -510,9 +513,6 @@ samr_set_user_password(smb_auth_info_t *auth, BYTE *oem_password)
(void) utf8_strlwr(hostname);
- if (smb_auth_gen_session_key(auth, nt_key) != SMBAUTH_SUCCESS)
- return (-1);
-
/*
* Generate the OEM password from the hostname and the user session
* key(nt_key).