summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorMatthew Chapman <matty@samba.org>1999-02-12 00:16:09 +0000
committerMatthew Chapman <matty@samba.org>1999-02-12 00:16:09 +0000
commitfd96929ec1fa27e0affd4c4e9ba307c4ee30b978 (patch)
tree6bfb5226bc58be39aaf7cfb954dcb472ea256a11 /source3/rpc_server
parentf38bfc7d9aa07c4e21448aa846956bd89a259a65 (diff)
downloadsamba-fd96929ec1fa27e0affd4c4e9ba307c4ee30b978.tar.gz
samba-fd96929ec1fa27e0affd4c4e9ba307c4ee30b978.tar.bz2
samba-fd96929ec1fa27e0affd4c4e9ba307c4ee30b978.zip
UNICODE cleanup (see lib/util_unistr.c).
No more ugly static library buffers and all functions take a destination string length (especially unistrcpy was rather dangerous; we were only saved by the fact that datagrams are limited in size). (This used to be commit a1d39af1ce1d451b811dbd7c2ba391214851b87e)
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/srv_lsa.c4
-rw-r--r--source3/rpc_server/srv_netlog.c14
-rw-r--r--source3/rpc_server/srv_pipe.c12
-rw-r--r--source3/rpc_server/srv_reg.c2
-rw-r--r--source3/rpc_server/srv_samr.c12
-rw-r--r--source3/rpc_server/srv_svcctl.c4
6 files changed, 26 insertions, 22 deletions
diff --git a/source3/rpc_server/srv_lsa.c b/source3/rpc_server/srv_lsa.c
index 4db97f6d4c..fbbeb4233e 100644
--- a/source3/rpc_server/srv_lsa.c
+++ b/source3/rpc_server/srv_lsa.c
@@ -156,7 +156,7 @@ static int make_dom_ref(DOM_R_REF *ref, char *dom_name, DOM_SID *dom_sid)
for (num = 0; num < ref->num_ref_doms_1; num++)
{
fstring domname;
- fstrcpy(domname, unistr2_to_str(&ref->ref_dom[num].uni_dom_name));
+ unistr2_to_ascii(domname, &ref->ref_dom[num].uni_dom_name, sizeof(domname));
if (strequal(domname, dom_name))
{
return num;
@@ -217,7 +217,7 @@ static void make_lsa_rid2s(DOM_R_REF *ref,
char *dom_name = NULL;
uint8 sid_name_use = SID_NAME_UNKNOWN;
- fstrcpy(find_name, unistr2_to_str(&name[i]));
+ unistr2_to_ascii(find_name, &name[i], sizeof(find_name));
dom_name = strdup(find_name);
if (map_domain_name_to_sid(&sid, &dom_name))
diff --git a/source3/rpc_server/srv_netlog.c b/source3/rpc_server/srv_netlog.c
index 33eb889ff2..f34aa502ed 100644
--- a/source3/rpc_server/srv_netlog.c
+++ b/source3/rpc_server/srv_netlog.c
@@ -288,7 +288,7 @@ static void api_net_req_chal( uint16 vuid,
/* grab the challenge... */
net_io_q_req_chal("", &q_r, data, 0);
- fstrcpy(mach_acct, unistr2_to_str(&q_r.uni_logon_clnt));
+ unistr2_to_ascii(mach_acct, &q_r.uni_logon_clnt, sizeof(mach_acct));
fstrcpy(mach_name, mach_acct);
strlower(mach_name);
@@ -399,7 +399,8 @@ static void api_net_srv_pwset( uint16 vuid,
DEBUG(5,("api_net_srv_pwset: %d\n", __LINE__));
- fstrcpy(mach_acct, unistr2_to_str(&q_a.clnt_id.login.uni_acct_name));
+ unistr2_to_ascii(mach_acct, &q_a.clnt_id.login.uni_acct_name,
+ sizeof(mach_acct));
DEBUG(3,("Server Password Set Wksta:[%s]\n", mach_acct));
@@ -672,12 +673,9 @@ static void api_net_sam_logon( uint16 vuid,
if (status == 0)
{
- fstrcpy(nt_username, unistr2_to_str(uni_samlogon_user));
-#if 0
- slprintf(nt_username, sizeof(nt_username), "%s\\%s",
- unistr2_to_str(uni_domain),
- unistr2_to_str(uni_samlogon_user));
-#endif
+ unistr2_to_ascii(nt_username, uni_samlogon_user,
+ sizeof(nt_username));
+
DEBUG(3,("User:[%s]\n", nt_username));
become_root(True);
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c
index 5908fe06b5..07e16c7e5d 100644
--- a/source3/rpc_server/srv_pipe.c
+++ b/source3/rpc_server/srv_pipe.c
@@ -225,9 +225,15 @@ static BOOL api_pipe_ntlmssp_verify(pipes_struct *p)
if (IS_BITS_SET_ALL(p->ntlmssp_chal.neg_flags, NTLMSSP_NEGOTIATE_UNICODE))
{
- fstrcpy(p->user_name, unistrn2(p->ntlmssp_resp.user , p->ntlmssp_resp.hdr_usr .str_str_len/2));
- fstrcpy(p->domain , unistrn2(p->ntlmssp_resp.domain, p->ntlmssp_resp.hdr_domain.str_str_len/2));
- fstrcpy(p->wks , unistrn2(p->ntlmssp_resp.wks , p->ntlmssp_resp.hdr_wks .str_str_len/2));
+ unibuf_to_ascii(p->user_name, p->ntlmssp_resp.user,
+ MIN(p->ntlmssp_resp.hdr_usr .str_str_len/2,
+ sizeof(p->user_name)));
+ unibuf_to_ascii(p->domain , p->ntlmssp_resp.domain,
+ MIN(p->ntlmssp_resp.hdr_domain.str_str_len/2,
+ sizeof(p->domain )));
+ unibuf_to_ascii(p->wks , p->ntlmssp_resp.wks,
+ MIN(p->ntlmssp_resp.hdr_wks .str_str_len/2,
+ sizeof(p->wks )));
}
else
{
diff --git a/source3/rpc_server/srv_reg.c b/source3/rpc_server/srv_reg.c
index f98133626d..52fff8716c 100644
--- a/source3/rpc_server/srv_reg.c
+++ b/source3/rpc_server/srv_reg.c
@@ -136,7 +136,7 @@ static void reg_reply_open_entry(REG_Q_OPEN_ENTRY *q_u,
status = 0xC000000 | NT_STATUS_TOO_MANY_SECRETS; /* ha ha very droll */
}
- fstrcpy(name, unistr2_to_str(&q_u->uni_name));
+ unistr2_to_ascii(name, &q_u->uni_name, sizeof(name));
if (status == 0x0)
{
diff --git a/source3/rpc_server/srv_samr.c b/source3/rpc_server/srv_samr.c
index ec3fa289a7..7f2b62212e 100644
--- a/source3/rpc_server/srv_samr.c
+++ b/source3/rpc_server/srv_samr.c
@@ -1440,7 +1440,7 @@ static void samr_reply_lookup_names(SAMR_Q_LOOKUP_NAMES *q_u,
{
DOM_SID sid;
fstring name;
- fstrcpy(name, unistr2_to_str(&q_u->uni_name[i]));
+ unistr2_to_ascii(name, &q_u->uni_name[i], sizeof(name));
status = lookup_name(name, &sid, &(type[i]));
if (status == 0x0)
@@ -1489,8 +1489,8 @@ static void samr_reply_chgpasswd_user(SAMR_Q_CHGPASSWD_USER *q_u,
fstring user_name;
fstring wks;
- fstrcpy(user_name, unistr2_to_str(&q_u->uni_user_name));
- fstrcpy(wks , unistr2_to_str(&q_u->uni_dest_host));
+ unistr2_to_ascii(user_name, &q_u->uni_user_name, sizeof(user_name));
+ unistr2_to_ascii(wks, &q_u->uni_dest_host, sizeof(wks));
DEBUG(5,("samr_chgpasswd_user: user: %s wks: %s\n", user_name, wks));
@@ -2024,7 +2024,7 @@ static void samr_reply_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS *q_u,
if (status == 0x0)
{
- fstrcpy(grp.name, unistr2_to_str(&q_u->uni_acct_desc));
+ unistr2_to_ascii(grp.name, &q_u->uni_acct_desc, sizeof(grp.name));
fstrcpy(grp.comment, "");
grp.rid = 0xffffffff;
@@ -2135,7 +2135,7 @@ static void samr_reply_create_dom_group(SAMR_Q_CREATE_DOM_GROUP *q_u,
if (status == 0x0)
{
- fstrcpy(grp.name, unistr2_to_str(&q_u->uni_acct_desc));
+ unistr2_to_ascii(grp.name, &q_u->uni_acct_desc, sizeof(grp.name));
fstrcpy(grp.comment, "");
grp.rid = 0xffffffff;
grp.attr = 0x07;
@@ -2302,7 +2302,7 @@ static void api_samr_unknown_32( uint16 vuid, prs_struct *data, prs_struct *rdat
reply if the account already exists...
*/
- fstrcpy(mach_acct, unistr2_to_str(&q_u.uni_mach_acct));
+ unistr2_to_ascii(mach_acct, &q_u.uni_mach_acct, sizeof(mach_acct));
become_root(True);
sam_pass = getsam21pwntnam(mach_acct);
diff --git a/source3/rpc_server/srv_svcctl.c b/source3/rpc_server/srv_svcctl.c
index 6a39b246d0..cf6ab5a0e1 100644
--- a/source3/rpc_server/srv_svcctl.c
+++ b/source3/rpc_server/srv_svcctl.c
@@ -93,7 +93,7 @@ static void svc_reply_open_service(SVC_Q_OPEN_SERVICE *q_u,
status = 0xC000000 | NT_STATUS_TOO_MANY_SECRETS; /* ha ha very droll */
}
- fstrcpy(name, unistr2_to_str(&q_u->uni_svc_name));
+ unistr2_to_ascii(name, &q_u->uni_svc_name, sizeof(name));
if (status == 0x0)
{
@@ -143,7 +143,7 @@ static void svc_reply_open_sc_man(SVC_Q_OPEN_SC_MAN *q_u,
status = 0xC000000 | NT_STATUS_TOO_MANY_SECRETS; /* ha ha very droll */
}
- fstrcpy(name, unistr2_to_str(&q_u->uni_srv_name));
+ unistr2_to_ascii(name, &q_u->uni_srv_name, sizeof(name));
if (status == 0x0)
{