From fd96929ec1fa27e0affd4c4e9ba307c4ee30b978 Mon Sep 17 00:00:00 2001 From: Matthew Chapman Date: Fri, 12 Feb 1999 00:16:09 +0000 Subject: 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) --- source3/rpc_server/srv_lsa.c | 4 ++-- source3/rpc_server/srv_netlog.c | 14 ++++++-------- source3/rpc_server/srv_pipe.c | 12 +++++++++--- source3/rpc_server/srv_reg.c | 2 +- source3/rpc_server/srv_samr.c | 12 ++++++------ source3/rpc_server/srv_svcctl.c | 4 ++-- 6 files changed, 26 insertions(+), 22 deletions(-) (limited to 'source3/rpc_server') 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) { -- cgit