summaryrefslogtreecommitdiff
path: root/source3/rpc_server/srv_samr_nt.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-09-25 21:26:16 +0000
committerJeremy Allison <jra@samba.org>2003-09-25 21:26:16 +0000
commitd3b9384308e4b5130c9455b853edc4702d7af303 (patch)
tree026331069404a2dfd74d5d1443cf416d9ccaaa09 /source3/rpc_server/srv_samr_nt.c
parent6c623b55bd023d9b2afa6ac3d69d814475a493e4 (diff)
downloadsamba-d3b9384308e4b5130c9455b853edc4702d7af303.tar.gz
samba-d3b9384308e4b5130c9455b853edc4702d7af303.tar.bz2
samba-d3b9384308e4b5130c9455b853edc4702d7af303.zip
Fix for #480. Change the interface for init_unistr2 to not take a length
but a flags field. We were assuming that 2*strlen(mb_string) == length of ucs2-le string. This is not the case. Count it after conversion. Jeremy. (This used to be commit f82c273a42f930c7152cfab84394781744815e0e)
Diffstat (limited to 'source3/rpc_server/srv_samr_nt.c')
-rw-r--r--source3/rpc_server/srv_samr_nt.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index 828e07c1ad..71e5bc7d70 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -719,7 +719,7 @@ static NTSTATUS make_user_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UN
for (i = 0; i < num_entries; i++) {
pwd = &disp_user_info[i+start_idx];
temp_name = pdb_get_username(pwd);
- init_unistr2(&uni_temp_name, temp_name, strlen(temp_name)+1);
+ init_unistr2(&uni_temp_name, temp_name, UNI_STR_TERMINATE);
user_sid = pdb_get_user_sid(pwd);
if (!sid_peek_check_rid(domain_sid, user_sid, &user_rid)) {
@@ -731,7 +731,7 @@ static NTSTATUS make_user_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UN
return NT_STATUS_UNSUCCESSFUL;
}
- init_sam_entry(&sam[i], uni_temp_name.uni_str_len, user_rid);
+ init_sam_entry(&sam[i], &uni_temp_name, user_rid);
copy_unistr2(&uni_name[i], &uni_temp_name);
}
@@ -865,10 +865,8 @@ static void make_group_sam_entry_list(TALLOC_CTX *ctx, SAM_ENTRY **sam_pp, UNIST
/*
* JRA. I think this should include the null. TNG does not.
*/
- int len = strlen(grp[i].name)+1;
-
- init_sam_entry(&sam[i], len, grp[i].rid);
- init_unistr2(&uni_name[i], grp[i].name, len);
+ init_unistr2(&uni_name[i], grp[i].name, UNI_STR_TERMINATE);
+ init_sam_entry(&sam[i], &uni_name[i], grp[i].rid);
}
*sam_pp = sam;
@@ -1580,10 +1578,9 @@ static BOOL make_samr_lookup_rids(TALLOC_CTX *ctx, uint32 num_names, fstring nam
}
for (i = 0; i < num_names; i++) {
- int len = names[i] != NULL ? strlen(names[i]) : 0;
- DEBUG(10, ("names[%d]:%s\n", i, names[i]));
- init_uni_hdr(&hdr_name[i], len);
- init_unistr2(&uni_name[i], names[i], len);
+ DEBUG(10, ("names[%d]:%s\n", i, names[i] ? names[i] : ""));
+ init_unistr2(&uni_name[i], names[i], UNI_FLAGS_NONE);
+ init_uni_hdr(&hdr_name[i], &uni_name[i]);
}
*pp_uni_name = uni_name;
@@ -2570,10 +2567,8 @@ static BOOL make_enum_domains(TALLOC_CTX *ctx, SAM_ENTRY **pp_sam,
return False;
for (i = 0; i < num_sam_entries; i++) {
- int len = doms[i] != NULL ? strlen(doms[i]) : 0;
-
- init_sam_entry(&sam[i], len, 0);
- init_unistr2(&uni_name[i], doms[i], len);
+ init_unistr2(&uni_name[i], doms[i], UNI_FLAGS_NONE);
+ init_sam_entry(&sam[i], &uni_name[i], 0);
}
*pp_sam = sam;