summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/rpc_samr.h1
-rw-r--r--source3/rpc_parse/parse_samr.c10
2 files changed, 10 insertions, 1 deletions
diff --git a/source3/include/rpc_samr.h b/source3/include/rpc_samr.h
index d996170200..223299cfc5 100644
--- a/source3/include/rpc_samr.h
+++ b/source3/include/rpc_samr.h
@@ -217,6 +217,7 @@ typedef struct sam_user_info_23
typedef struct sam_user_info_24
{
uint8 pass[516];
+ uint16 passlen;
} SAM_USER_INFO_24;
diff --git a/source3/rpc_parse/parse_samr.c b/source3/rpc_parse/parse_samr.c
index 56ed41128d..3695a83c67 100644
--- a/source3/rpc_parse/parse_samr.c
+++ b/source3/rpc_parse/parse_samr.c
@@ -5002,6 +5002,7 @@ void init_sam_user_info24(SAM_USER_INFO_24 * usr,
{
DEBUG(10, ("init_sam_user_info24: passlen: %d\n", passlen));
memcpy(usr->pass, newpass, sizeof(usr->pass));
+ usr->passlen = passlen;
}
/*******************************************************************
@@ -5020,7 +5021,14 @@ static BOOL sam_io_user_info24(char *desc, SAM_USER_INFO_24 * usr,
if(!prs_align(ps))
return False;
- if(!prs_uint8s(False, "password", ps, depth, usr->pass, sizeof(usr->pass)))
+ if(!prs_uint8s(False, "password", ps, depth, usr->pass,
+ sizeof(usr->pass)))
+ return False;
+
+ if (!prs_uint16("passlen", ps, depth, &usr->passlen))
+ return False;
+
+ if(!prs_align(ps))
return False;
return True;