From ffaa923385cf90fb3256cae5cb6885eced94e36c Mon Sep 17 00:00:00 2001 From: Jean-François Micouleau Date: Thu, 22 Feb 2001 16:09:18 +0000 Subject: off by one lenght name in samr_querydispinfo and show also the gecos field. J.F. --- source/rpc_parse/parse_samr.c | 9 +++------ source/rpc_server/srv_samr_nt.c | 8 +++++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c index 56f1c0c5576..c3551c50b5a 100644 --- a/source/rpc_parse/parse_samr.c +++ b/source/rpc_parse/parse_samr.c @@ -1446,12 +1446,9 @@ void init_sam_dispinfo_1(SAM_DISPINFO_1 * sam, uint32 *num_entries, len_sam_name, len_sam_full, len_sam_desc, pass[i].user_rid, pass[i].acb_info); - copy_unistr2(&sam->str[i].uni_acct_name, - &pass[i].uni_user_name); - copy_unistr2(&sam->str[i].uni_full_name, - &pass[i].uni_full_name); - copy_unistr2(&sam->str[i].uni_acct_desc, - &pass[i].uni_acct_desc); + copy_unistr2(&sam->str[i].uni_acct_name, &pass[i].uni_user_name); + copy_unistr2(&sam->str[i].uni_full_name, &pass[i].uni_full_name); + copy_unistr2(&sam->str[i].uni_acct_desc, &pass[i].uni_acct_desc); dsize += sizeof(SAM_ENTRY1); dsize += len_sam_name + len_sam_full + len_sam_desc; diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c index 99ee1a98a60..80b12f34fa0 100644 --- a/source/rpc_server/srv_samr_nt.c +++ b/source/rpc_server/srv_samr_nt.c @@ -126,6 +126,7 @@ static BOOL jf_get_sampwd_entries(SAM_USER_INFO_21 *pw_buf, int start_idx, while (((pwd = getsam21pwent(vp)) != NULL) && (*num_entries) < max_num_entries) { int user_name_len; + int full_name_len; if (acb_mask != 0 && !(pwd->acct_ctrl & acb_mask)) continue; @@ -138,9 +139,14 @@ static BOOL jf_get_sampwd_entries(SAM_USER_INFO_21 *pw_buf, int start_idx, continue; } - user_name_len = strlen(pwd->smb_name)+1; + user_name_len = strlen(pwd->smb_name); init_unistr2(&pw_buf[(*num_entries)].uni_user_name, pwd->smb_name, user_name_len); init_uni_hdr(&pw_buf[(*num_entries)].hdr_user_name, user_name_len); + + full_name_len = strlen(pwd->full_name); + init_unistr2(&pw_buf[(*num_entries)].uni_full_name, pwd->full_name, full_name_len); + init_uni_hdr(&pw_buf[(*num_entries)].hdr_full_name, full_name_len); + pw_buf[(*num_entries)].user_rid = pwd->user_rid; memset((char *)pw_buf[(*num_entries)].nt_pwd, '\0', 16); -- cgit