diff options
Diffstat (limited to 'usr/src/lib')
43 files changed, 284 insertions, 213 deletions
diff --git a/usr/src/lib/libadutils/common/addisc.c b/usr/src/lib/libadutils/common/addisc.c index 7a9805bc68..b32f9d7694 100644 --- a/usr/src/lib/libadutils/common/addisc.c +++ b/usr/src/lib/libadutils/common/addisc.c @@ -672,7 +672,7 @@ srv_query(res_state state, const char *svc_name, const char *dname, char **rrname, uint32_t *ttl) { idmap_ad_disc_ds_t *srv; - idmap_ad_disc_ds_t *srv_res; + idmap_ad_disc_ds_t *srv_res = NULL; union { HEADER hdr; uchar_t buf[NS_MAXMSG]; @@ -748,6 +748,11 @@ srv_query(res_state state, const char *svc_name, const char *dname, /* 3. walk through the answer section */ srv_res = calloc(ancount + 1, sizeof (idmap_ad_disc_ds_t)); + if (srv_res == NULL) { + logger(LOG_ERR, "Out of memory"); + return (NULL); + } + *ttl = (uint32_t)-1; for (srv = srv_res, cnt = ancount; @@ -757,10 +762,15 @@ srv_query(res_state state, const char *svc_name, const char *dname, sizeof (namebuf)); if (len < 0) { logger(LOG_ERR, "DNS query invalid message format"); - return (NULL); + goto err; } - if (rrname != NULL && *rrname == NULL) + if (rrname != NULL && *rrname == NULL) { *rrname = strdup(namebuf); + if (*rrname == NULL) { + logger(LOG_ERR, "Out of memory"); + goto err; + } + } ptr += len; NS_GET16(type, ptr); NS_GET16(class, ptr); @@ -768,7 +778,7 @@ srv_query(res_state state, const char *svc_name, const char *dname, NS_GET16(size, ptr); if ((end = ptr + size) > eom) { logger(LOG_ERR, "DNS query invalid message format"); - return (NULL); + goto err; } if (type != T_SRV) { @@ -783,7 +793,7 @@ srv_query(res_state state, const char *svc_name, const char *dname, sizeof (srv->host)); if (len < 0) { logger(LOG_ERR, "DNS query invalid SRV record"); - return (NULL); + goto err; } if (rttl < *ttl) @@ -803,6 +813,14 @@ srv_query(res_state state, const char *svc_name, const char *dname, (int (*)(const void *, const void *))srvcmp); return (srv_res); + +err: + free(srv_res); + if (rrname != NULL) { + free(*rrname); + *rrname = NULL; + } + return (NULL); } @@ -1045,6 +1063,7 @@ ldap_lookup_domains_in_forest(LDAP **ld, idmap_ad_disc_ds_t *globalCatalogs) adutils_sid_t sid; char *sid_str; char *name; + char *dn; sid_ber = ldap_get_values_len(*ld, entry, "objectSid"); @@ -1062,7 +1081,9 @@ ldap_lookup_domains_in_forest(LDAP **ld, idmap_ad_disc_ds_t *globalCatalogs) strcpy(domains[ndomains].sid, sid_str); free(sid_str); - name = DN_to_DNS(ldap_get_dn(*ld, entry)); + dn = ldap_get_dn(*ld, entry); + name = DN_to_DNS(dn); + free(dn); if (name == NULL) goto err; diff --git a/usr/src/lib/libidmap/common/idmap_api.c b/usr/src/lib/libidmap/common/idmap_api.c index a6d773e195..b9c46ca2a8 100644 --- a/usr/src/lib/libidmap/common/idmap_api.c +++ b/usr/src/lib/libidmap/common/idmap_api.c @@ -2306,7 +2306,7 @@ idmap_info_cpy(idmap_info *to, idmap_info *from) /* * This routine is similar to idmap_info_cpy, but the strings * are moved from the "from" info to the "to" info. - * This routine is equivelent of: + * This routine is equivalent to: * * idmap_info_cpy(to,from); * idmap_info_free(from); diff --git a/usr/src/lib/libshare/smb/smb_share_doorclnt.c b/usr/src/lib/libshare/smb/smb_share_doorclnt.c index e7a93507fa..af9f3efa6d 100644 --- a/usr/src/lib/libshare/smb/smb_share_doorclnt.c +++ b/usr/src/lib/libshare/smb/smb_share_doorclnt.c @@ -42,7 +42,7 @@ #include <smbsrv/libsmb.h> #include <smbsrv/smb_share.h> #include <smbsrv/lmerr.h> -#include <smbsrv/cifs.h> +#include <smbsrv/smb.h> #define SMB_SHARE_DOOR_CALL_RETRIES 3 diff --git a/usr/src/lib/smbsrv/libmlrpc/common/ndr_heap.c b/usr/src/lib/smbsrv/libmlrpc/common/ndr_heap.c index d1decb44bf..73a453b00e 100644 --- a/usr/src/lib/smbsrv/libmlrpc/common/ndr_heap.c +++ b/usr/src/lib/smbsrv/libmlrpc/common/ndr_heap.c @@ -186,8 +186,8 @@ ndr_heap_mstring(ndr_heap_t *heap, const char *s, ndr_mstring_t *out) if (s == NULL || out == NULL) return (-1); - out->length = mts_wcequiv_strlen(s); - out->allosize = out->length + sizeof (mts_wchar_t); + out->length = smb_wcequiv_strlen(s); + out->allosize = out->length + sizeof (smb_wchar_t); if ((out->str = ndr_heap_strdup(heap, s)) == NULL) return (-1); @@ -209,17 +209,17 @@ ndr_heap_mkvcs(ndr_heap_t *heap, char *s, ndr_vcstr_t *vc) { int mlen; - vc->wclen = mts_wcequiv_strlen(s); + vc->wclen = smb_wcequiv_strlen(s); vc->wcsize = vc->wclen; - mlen = sizeof (ndr_vcs_t) + vc->wcsize + sizeof (mts_wchar_t); + mlen = sizeof (ndr_vcs_t) + vc->wcsize + sizeof (smb_wchar_t); vc->vcs = ndr_heap_malloc(heap, mlen); if (vc->vcs) { vc->vcs->vc_first_is = 0; - vc->vcs->vc_length_is = vc->wclen / sizeof (mts_wchar_t); - (void) mts_mbstowcs((mts_wchar_t *)vc->vcs->buffer, s, + vc->vcs->vc_length_is = vc->wclen / sizeof (smb_wchar_t); + (void) smb_mbstowcs((smb_wchar_t *)vc->vcs->buffer, s, vc->vcs->vc_length_is); } } diff --git a/usr/src/lib/smbsrv/libmlrpc/common/ndr_process.c b/usr/src/lib/smbsrv/libmlrpc/common/ndr_process.c index 6147d684ab..af76a0a08c 100644 --- a/usr/src/lib/smbsrv/libmlrpc/common/ndr_process.c +++ b/usr/src/lib/smbsrv/libmlrpc/common/ndr_process.c @@ -1189,8 +1189,8 @@ ndr_outer_string(ndr_ref_t *outer_ref) * size_is is the number of characters in the * (multibyte) string, including the null. */ - size_is = (mts_wcequiv_strlen(valp) / - sizeof (mts_wchar_t)) + 1; + size_is = (smb_wcequiv_strlen(valp) / + sizeof (smb_wchar_t)) + 1; if (size_is > NDR_STRING_MAX) { NDR_SET_ERROR(outer_ref, NDR_ERR_STRLEN); @@ -1919,7 +1919,7 @@ ndr_s_wchar(ndr_ref_t *encl_ref) (void) sprintf(name, "[%lu]", i); if (nds->m_op == NDR_M_OP_MARSHALL) { - count = mts_mbtowc((mts_wchar_t *)&wide_char, valp, + count = smb_mbtowc((smb_wchar_t *)&wide_char, valp, MTS_MB_CHAR_MAX); if (count < 0) { return (0); @@ -1941,7 +1941,7 @@ ndr_s_wchar(ndr_ref_t *encl_ref) return (0); if (nds->m_op == NDR_M_OP_UNMARSHALL) { - count = mts_wctomb(valp, wide_char); + count = smb_wctomb(valp, wide_char); if ((++char_count) == encl_ref->strlen_is) { valp += count; @@ -1970,10 +1970,10 @@ ndr_s_wchar(ndr_ref_t *encl_ref) * multibyte character is encountered. */ size_t -ndr_mbstowcs(ndr_stream_t *nds, mts_wchar_t *wcs, const char *mbs, +ndr_mbstowcs(ndr_stream_t *nds, smb_wchar_t *wcs, const char *mbs, size_t nwchars) { - mts_wchar_t *start = wcs; + smb_wchar_t *start = wcs; int nbytes; while (nwchars--) { @@ -1998,16 +1998,16 @@ ndr_mbstowcs(ndr_stream_t *nds, mts_wchar_t *wcs, const char *mbs, * is stored in wcharp. Up to nbytes bytes are examined. * * If mbchar is valid, returns the number of bytes processed in mbchar. - * If mbchar is invalid, returns -1. See also mts_mbtowc(). + * If mbchar is invalid, returns -1. See also smb_mbtowc(). */ /*ARGSUSED*/ int -ndr_mbtowc(ndr_stream_t *nds, mts_wchar_t *wcharp, const char *mbchar, +ndr_mbtowc(ndr_stream_t *nds, smb_wchar_t *wcharp, const char *mbchar, size_t nbytes) { int rc; - if ((rc = mts_mbtowc(wcharp, mbchar, nbytes)) < 0) + if ((rc = smb_mbtowc(wcharp, mbchar, nbytes)) < 0) return (rc); #ifdef _BIG_ENDIAN diff --git a/usr/src/lib/smbsrv/libmlsvc/common/dssetup_svc.c b/usr/src/lib/smbsrv/libmlsvc/common/dssetup_svc.c index 2175553bfa..501c74c391 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/dssetup_svc.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/dssetup_svc.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -184,7 +184,7 @@ dssetup_member_server(ds_primary_domain_info_t *info, ndr_xa_t *mxa) return (NT_STATUS_CANT_ACCESS_DOMAIN_INFO); } - (void) utf8_strlwr(dns_domain); + (void) smb_strlwr(dns_domain); info->flags = 0; info->nt_domain = NDR_STRDUP(mxa, nt_domain); diff --git a/usr/src/lib/smbsrv/libmlsvc/common/eventlog_svc.c b/usr/src/lib/smbsrv/libmlsvc/common/eventlog_svc.c index 645f8c44a7..3a47a3041d 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/eventlog_svc.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/eventlog_svc.c @@ -43,7 +43,7 @@ #define LOGR_RECORD_SIGNATURE 0x654C664C #define LOGR_PRI(p) ((p) & LOG_PRIMASK) -#define LOGR_WNSTRLEN(S) ((strlen((S)) + 1) * sizeof (mts_wchar_t)) +#define LOGR_WNSTRLEN(S) ((strlen((S)) + 1) * sizeof (smb_wchar_t)) #define LOGR_MSG_DWORD_OFFSET 12 #define LOGR_MSG_WORD_OFFSET 4 @@ -437,15 +437,15 @@ logr_set_logrecord(char *src_name, logr_entry_t *le, { int srcname_len = 0, hostname_len = 0, len; int str_offs, sh_len; - mts_wchar_t wcs_hostname[MAXHOSTNAMELEN]; - mts_wchar_t wcs_srcname[SYS_NMLN * 2]; + smb_wchar_t wcs_hostname[MAXHOSTNAMELEN]; + smb_wchar_t wcs_srcname[SYS_NMLN * 2]; - (void) mts_mbstowcs(wcs_srcname, src_name, + (void) smb_mbstowcs(wcs_srcname, src_name, strlen(src_name) + 1); srcname_len = LOGR_WNSTRLEN(src_name); /* Because, Solaris allows remote logging, need to get hostname here */ - (void) mts_mbstowcs(wcs_hostname, le->le_hostname, + (void) smb_mbstowcs(wcs_hostname, le->le_hostname, strlen(le->le_hostname) + 1); hostname_len = LOGR_WNSTRLEN(le->le_hostname); @@ -476,7 +476,7 @@ logr_set_logrecord(char *src_name, logr_entry_t *le, len = strlen(le->le_msg) + 1; if (len > 0) /*LINTED E_BAD_PTR_CAST_ALIGN*/ - (void) mts_mbstowcs((mts_wchar_t *)(rec->info + sh_len), + (void) smb_mbstowcs((smb_wchar_t *)(rec->info + sh_len), le->le_msg, len); rec->Length2 = sizeof (logr_record_t); diff --git a/usr/src/lib/smbsrv/libmlsvc/common/libmlsvc.h b/usr/src/lib/smbsrv/libmlsvc/common/libmlsvc.h index f0491e4c17..99f10fc368 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/libmlsvc.h +++ b/usr/src/lib/smbsrv/libmlsvc/common/libmlsvc.h @@ -175,7 +175,7 @@ void ndr_rpc_status(mlsvc_handle_t *, int, uint32_t); * Calculate the wide-char equivalent string length required to * store a string - including the terminating null wide-char. */ -#define SVCCTL_WNSTRLEN(S) ((strlen((S)) + 1) * sizeof (mts_wchar_t)) +#define SVCCTL_WNSTRLEN(S) ((strlen((S)) + 1) * sizeof (smb_wchar_t)) /* An AVL-storable node representing each service in the SCM database. */ typedef struct svcctl_svc_node { diff --git a/usr/src/lib/smbsrv/libmlsvc/common/lsalib.c b/usr/src/lib/smbsrv/libmlsvc/common/lsalib.c index c58b5d36f3..c091d63f9b 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/lsalib.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/lsalib.c @@ -316,7 +316,7 @@ lsa_lookup_name_builtin(char *domain, char *name, smb_account_t *info) if ((wkadom = smb_wka_get_domain(wka->wka_domidx)) == NULL) return (NT_STATUS_INTERNAL_ERROR); - if ((domain != NULL) && (utf8_strcasecmp(domain, wkadom) != 0)) + if ((domain != NULL) && (smb_strcasecmp(domain, wkadom, 0) != 0)) return (NT_STATUS_NONE_MAPPED); info->a_name = strdup(name); diff --git a/usr/src/lib/smbsrv/libmlsvc/common/lsar_lookup.c b/usr/src/lib/smbsrv/libmlsvc/common/lsar_lookup.c index 127f2b4cbe..1121d67d6f 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/lsar_lookup.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/lsar_lookup.c @@ -239,10 +239,10 @@ lsar_lookup_names(mlsvc_handle_t *lsa_handle, char *name, smb_account_t *info) name = p; } - length = mts_wcequiv_strlen(name) + sizeof (mts_wchar_t); + length = smb_wcequiv_strlen(name) + sizeof (smb_wchar_t); arg.lookup_level = MSLSA_LOOKUP_LEVEL_1; } else { - length = mts_wcequiv_strlen(name); + length = smb_wcequiv_strlen(name); arg.lookup_level = MSLSA_LOOKUP_LEVEL_1; } @@ -594,9 +594,9 @@ lsar_lookup_priv_value(mlsvc_handle_t *lsa_handle, char *name, bzero(&arg, sizeof (struct mslsa_LookupPrivValue)); (void) memcpy(&arg.handle, lsa_handle, sizeof (mslsa_handle_t)); - length = mts_wcequiv_strlen(name); + length = smb_wcequiv_strlen(name); if (ndr_rpc_server_os(lsa_handle) == NATIVE_OS_WIN2000) - length += sizeof (mts_wchar_t); + length += sizeof (smb_wchar_t); arg.name.length = length; arg.name.allosize = length; @@ -682,7 +682,7 @@ lsar_lookup_priv_display_name(mlsvc_handle_t *lsa_handle, char *name, bzero(&arg, sizeof (struct mslsa_LookupPrivDisplayName)); (void) memcpy(&arg.handle, lsa_handle, sizeof (mslsa_handle_t)); - length = mts_wcequiv_strlen(name); + length = smb_wcequiv_strlen(name); arg.name.length = length; arg.name.allosize = length; arg.name.str = (unsigned char *)name; @@ -827,7 +827,7 @@ lsar_lookup_names2(mlsvc_handle_t *lsa_handle, char *name, smb_account_t *info) arg.name_table = (struct mslsa_lup_name_table *)&name_table; name_table.n_entry = 1; - length = mts_wcequiv_strlen(name) + sizeof (mts_wchar_t); + length = smb_wcequiv_strlen(name) + sizeof (smb_wchar_t); name_table.name[0].length = length; name_table.name[0].allosize = length; name_table.name[0].str = (unsigned char *)name; diff --git a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_client.c b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_client.c index 11569ef97b..9194ec7871 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_client.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_client.c @@ -580,8 +580,8 @@ static boolean_t ndr_svinfo_match(const char *server, const char *domain, const ndr_svinfo_t *svi) { - if ((utf8_strcasecmp(server, svi->svi_server) == 0) && - (utf8_strcasecmp(domain, svi->svi_domain) == 0)) { + if ((smb_strcasecmp(server, svi->svi_server, 0) == 0) && + (smb_strcasecmp(domain, svi->svi_domain, 0) == 0)) { return (B_TRUE); } diff --git a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c index a18e07fefa..a0ee06feec 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c @@ -287,7 +287,7 @@ smb_ddiscover_nbt(char *domain, char *server, smb_domainex_t *dxi) return (B_FALSE); if ((*dnsdomain != '\0') && - utf8_strcasecmp(domain, dxi->d_primary.di_nbname)) + smb_strcasecmp(domain, dxi->d_primary.di_nbname, 0)) return (B_FALSE); /* @@ -335,7 +335,7 @@ smb_ddiscover_domain_match(char *nb_domain, char *buf, uint32_t len) first_label[15] = '\0'; } - if (utf8_strcasecmp(nb_domain, first_label) == 0) { + if (smb_strcasecmp(nb_domain, first_label, 0) == 0) { found = B_TRUE; (void) strlcpy(buf, entry, len); break; @@ -418,9 +418,9 @@ smb_ddiscover_use_config(char *domain, smb_domainex_t *dxi) NULL, NULL, NULL); if (SMB_IS_FQDN(domain)) - use = (utf8_strcasecmp(dinfo->di_fqname, domain) == 0); + use = (smb_strcasecmp(dinfo->di_fqname, domain, 0) == 0); else - use = (utf8_strcasecmp(dinfo->di_nbname, domain) == 0); + use = (smb_strcasecmp(dinfo->di_nbname, domain, 0) == 0); if (use) smb_config_getdomaininfo(NULL, NULL, dinfo->di_sid, diff --git a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_util.c b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_util.c index dd4a064e3a..ac4cda132f 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_util.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_util.c @@ -172,7 +172,7 @@ mlsvc_join(smb_domainex_t *dxi, char *user, char *plain_text) if (status == NT_STATUS_SUCCESS) { (void) smb_getnetbiosname(machine_passwd, sizeof (machine_passwd)); - (void) utf8_strlwr(machine_passwd); + (void) smb_strlwr(machine_passwd); } } diff --git a/usr/src/lib/smbsrv/libmlsvc/common/samlib.c b/usr/src/lib/smbsrv/libmlsvc/common/samlib.c index 0383bdc8cb..254102b85d 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/samlib.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/samlib.c @@ -382,7 +382,7 @@ int sam_oem_password(oem_password_t *oem_password, unsigned char *new_password, unsigned char *old_password) { - mts_wchar_t *unicode_password; + smb_wchar_t *unicode_password; int length; #ifdef PBSHORTCUT @@ -390,7 +390,7 @@ sam_oem_password(oem_password_t *oem_password, unsigned char *new_password, #endif /* PBSHORTCUT */ length = strlen((char const *)new_password); - unicode_password = alloca((length + 1) * sizeof (mts_wchar_t)); + unicode_password = alloca((length + 1) * sizeof (smb_wchar_t)); length = smb_auth_qnd_unicode((unsigned short *)unicode_password, (char *)new_password, length); diff --git a/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c b/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c index 6d858ab02d..477a5a1e62 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c @@ -71,9 +71,9 @@ samr_lookup_domain(mlsvc_handle_t *samr_handle, char *domain_name) (void) memcpy(&arg.handle, &samr_handle->handle, sizeof (samr_handle_t)); - length = mts_wcequiv_strlen(domain_name); + length = smb_wcequiv_strlen(domain_name); if (ndr_rpc_server_os(samr_handle) == NATIVE_OS_WIN2000) - length += sizeof (mts_wchar_t); + length += sizeof (smb_wchar_t); arg.domain_name.length = length; arg.domain_name.allosize = length; @@ -161,9 +161,9 @@ samr_lookup_domain_names(mlsvc_handle_t *domain_handle, char *name, arg.index = 0; arg.total = 1; - length = mts_wcequiv_strlen(name); + length = smb_wcequiv_strlen(name); if (ndr_rpc_server_os(domain_handle) == NATIVE_OS_WIN2000) - length += sizeof (mts_wchar_t); + length += sizeof (smb_wchar_t); arg.name.length = length; arg.name.allosize = length; @@ -511,7 +511,7 @@ samr_set_user_password(unsigned char *nt_key, BYTE *oem_password) if (smb_getnetbiosname(hostname, sizeof (hostname)) != 0) return (-1); - (void) utf8_strlwr(hostname); + (void) smb_strlwr(hostname); /* * Generate the OEM password from the hostname and the user session diff --git a/usr/src/lib/smbsrv/libmlsvc/common/smb_logon.c b/usr/src/lib/smbsrv/libmlsvc/common/smb_logon.c index 3a13d331d0..5b78165a68 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/smb_logon.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/smb_logon.c @@ -502,7 +502,7 @@ smb_logon_local(netr_client_t *clnt, smb_token_t *token) } smb_guest_account(guest, SMB_USERNAME_MAXLEN); - isguest = (utf8_strcasecmp(guest, clnt->e_username) == 0); + isguest = (smb_strcasecmp(guest, clnt->e_username, 0) == 0); status = smb_token_auth_local(clnt, token, &smbpw); if (status == NT_STATUS_SUCCESS) { diff --git a/usr/src/lib/smbsrv/libmlsvc/common/smb_share.c b/usr/src/lib/smbsrv/libmlsvc/common/smb_share.c index d099db11b5..d42622dfca 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/smb_share.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/smb_share.c @@ -47,11 +47,8 @@ #include <smbsrv/libsmb.h> #include <smbsrv/libsmbns.h> #include <smbsrv/libmlsvc.h> - -#include <smbsrv/lm.h> #include <smbsrv/smb_share.h> -#include <smbsrv/cifs.h> -#include <smbsrv/nterror.h> +#include <smbsrv/smb.h> #include <mlsvc.h> #define SMB_SHR_ERROR_THRESHOLD 3 @@ -800,7 +797,7 @@ smb_shr_is_restricted(char *sharename) return (B_FALSE); for (i = 0; i < sizeof (restricted)/sizeof (restricted[0]); i++) { - if (utf8_strcasecmp(restricted[i], sharename) == 0) + if (smb_strcasecmp(restricted[i], sharename, 0) == 0) return (B_TRUE); } @@ -825,7 +822,7 @@ smb_shr_is_admin(char *sharename) return (B_FALSE); if (strlen(sharename) == 2 && - mts_isalpha(sharename[0]) && sharename[1] == '$') { + smb_isalpha(sharename[0]) && sharename[1] == '$') { return (B_TRUE); } @@ -1122,24 +1119,23 @@ smb_shr_addipc(void) static void smb_shr_set_oemname(smb_share_t *si) { - unsigned int cpid = oem_get_smb_cpid(); - mts_wchar_t *unibuf; + smb_wchar_t *unibuf; char *oem_name; int length; length = strlen(si->shr_name) + 1; oem_name = malloc(length); - unibuf = malloc(length * sizeof (mts_wchar_t)); + unibuf = malloc(length * sizeof (smb_wchar_t)); if ((oem_name == NULL) || (unibuf == NULL)) { free(oem_name); free(unibuf); return; } - (void) mts_mbstowcs(unibuf, si->shr_name, length); + (void) smb_mbstowcs(unibuf, si->shr_name, length); - if (unicodestooems(oem_name, unibuf, length, cpid) == 0) + if (ucstooem(oem_name, unibuf, length, OEM_CPG_850) == 0) (void) strcpy(oem_name, si->shr_name); free(unibuf); @@ -1284,7 +1280,7 @@ smb_shr_cache_findent(char *sharename) { HT_ITEM *item; - (void) utf8_strlwr(sharename); + (void) smb_strlwr(sharename); item = ht_find_item(smb_shr_cache.sc_cache, sharename); if (item && item->hi_data) return ((smb_share_t *)item->hi_data); @@ -1333,7 +1329,7 @@ smb_shr_cache_addent(smb_share_t *si) bcopy(si, cache_ent, sizeof (smb_share_t)); - (void) utf8_strlwr(cache_ent->shr_name); + (void) smb_strlwr(cache_ent->shr_name); smb_shr_set_oemname(cache_ent); if ((si->shr_type & STYPE_IPC) == 0) @@ -1363,7 +1359,7 @@ smb_shr_cache_addent(smb_share_t *si) static void smb_shr_cache_delent(char *sharename) { - (void) utf8_strlwr(sharename); + (void) smb_strlwr(sharename); (void) ht_remove_item(smb_shr_cache.sc_cache, sharename); } @@ -2192,8 +2188,7 @@ smb_shr_expand_subs(char **cmd_toks, smb_share_t *si, smb_execsub_info_t *subs) char hostname[MAXHOSTNAMELEN]; char ip_str[INET6_ADDRSTRLEN]; char name[SMB_PI_MAX_HOST]; - mts_wchar_t wbuf[SMB_PI_MAX_HOST]; - unsigned int cpid = oem_get_smb_cpid(); + smb_wchar_t wbuf[SMB_PI_MAX_HOST]; int i; if (cmd_toks == NULL || *cmd_toks == NULL) @@ -2236,12 +2231,12 @@ smb_shr_expand_subs(char **cmd_toks, smb_share_t *si, smb_execsub_info_t *subs) if (*subs->e_cli_netbiosname == '\0') unknown = B_TRUE; else { - (void) mts_mbstowcs(wbuf, + (void) smb_mbstowcs(wbuf, subs->e_cli_netbiosname, SMB_PI_MAX_HOST - 1); - if (unicodestooems(name, wbuf, - SMB_PI_MAX_HOST, cpid) == 0) + if (ucstooem(name, wbuf, + SMB_PI_MAX_HOST, OEM_CPG_850) == 0) (void) strlcpy(name, subs->e_cli_netbiosname, SMB_PI_MAX_HOST); diff --git a/usr/src/lib/smbsrv/libmlsvc/common/srvsvc_svc.c b/usr/src/lib/smbsrv/libmlsvc/common/srvsvc_svc.c index 616701292f..08eeca4462 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/srvsvc_svc.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/srvsvc_svc.c @@ -32,6 +32,7 @@ */ #include <sys/errno.h> +#include <sys/tzfile.h> #include <unistd.h> #include <netdb.h> #include <strings.h> @@ -49,9 +50,8 @@ #include <smbsrv/libsmb.h> #include <smbsrv/libmlsvc.h> #include <smbsrv/lmerr.h> -#include <smbsrv/nterror.h> #include <smbsrv/nmpipes.h> -#include <smbsrv/cifs.h> +#include <smbsrv/smb.h> #include <smbsrv/netrauth.h> #include <smbsrv/ndl/srvsvc.ndl> #include <smbsrv/smb_common_door.h> @@ -1196,7 +1196,7 @@ srvsvc_modify_transient_share(smb_share_t *si, srvsvc_netshare_setinfo_t *info) uint32_t nerr; if (info->nss_netname != NULL && info->nss_netname[0] != '\0' && - utf8_strcasecmp(info->nss_netname, si->shr_name) != 0) { + smb_strcasecmp(info->nss_netname, si->shr_name, 0) != 0) { nerr = smb_shr_rename(si->shr_name, info->nss_netname); if (nerr != NERR_Success) return (nerr); @@ -1790,6 +1790,9 @@ netservergetinfo_no_memory: * positive; for time zones east of Greenwich, the value is negative. * A value of -1 indicates that the time zone is undefined. * + * Determine offset from GMT. If daylight saving time use altzone, + * otherwise use timezone. + * * The clock tick value represents a resolution of one ten-thousandth * (0.0001) second. */ @@ -1800,6 +1803,8 @@ srvsvc_s_NetRemoteTOD(void *arg, ndr_xa_t *mxa) struct mslm_TIME_OF_DAY_INFO *tod; struct timeval time_val; struct tm tm; + time_t gmtoff; + (void) gettimeofday(&time_val, 0); (void) gmtime_r(&time_val.tv_sec, &tm); @@ -1810,6 +1815,8 @@ srvsvc_s_NetRemoteTOD(void *arg, ndr_xa_t *mxa) return (ERROR_NOT_ENOUGH_MEMORY); } + bzero(tod, sizeof (struct mslm_TIME_OF_DAY_INFO)); + tod->tod_elapsedt = time_val.tv_sec; tod->tod_msecs = time_val.tv_usec; tod->tod_hours = tm.tm_hour; @@ -1823,6 +1830,8 @@ srvsvc_s_NetRemoteTOD(void *arg, ndr_xa_t *mxa) tod->tod_weekday = tm.tm_wday; (void) localtime_r(&time_val.tv_sec, &tm); + gmtoff = (tm.tm_isdst) ? altzone : timezone; + tod->tod_timezone = gmtoff / SECSPERMIN; param->bufptr = tod; param->status = ERROR_SUCCESS; @@ -2703,7 +2712,7 @@ srvsvc_s_NetShareCheck(void *arg, ndr_xa_t *mxa) while ((si = smb_shr_iterate(&iterator)) != NULL) { path = srvsvc_share_mkpath(mxa, si->shr_path); - if (utf8_strcasecmp(path, (char *)param->path) == 0) { + if (smb_strcasecmp(path, (char *)param->path, 0) == 0) { param->stype = (si->shr_type & STYPE_MASK); param->status = NERR_Success; return (NDR_DRC_OK); @@ -2908,7 +2917,7 @@ srvsvc_sa_modify(smb_share_t *si, srvsvc_netshare_setinfo_t *info) } if (info->nss_netname != NULL && info->nss_netname[0] != '\0' && - utf8_strcasecmp(info->nss_netname, si->shr_name) != 0) { + smb_strcasecmp(info->nss_netname, si->shr_name, 0) != 0) { (void) sa_set_resource_attr(resource, SHOPT_NAME, info->nss_netname); renamed = B_TRUE; diff --git a/usr/src/lib/smbsrv/libmlsvc/common/svcctl_scm.c b/usr/src/lib/smbsrv/libmlsvc/common/svcctl_scm.c index 977b3874c9..5587c66131 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/svcctl_scm.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/svcctl_scm.c @@ -551,7 +551,7 @@ svcctl_scm_enum_services(svcctl_manager_context_t *mgr_ctx, uint8_t *buf, { svcctl_svc_node_t *node; int base_offset, offset; - mts_wchar_t *w_name; + smb_wchar_t *w_name; char *a_name; char *node_name; size_t namelen; @@ -590,8 +590,8 @@ svcctl_scm_enum_services(svcctl_manager_context_t *mgr_ctx, uint8_t *buf, if (use_wchar) { offset -= SVCCTL_WNSTRLEN(node_name); /*LINTED E_BAD_PTR_CAST_ALIGN*/ - w_name = (mts_wchar_t *)&buf[offset]; - (void) mts_mbstowcs(w_name, node_name, namelen); + w_name = (smb_wchar_t *)&buf[offset]; + (void) smb_mbstowcs(w_name, node_name, namelen); } else { offset -= namelen; a_name = (char *)&buf[offset]; @@ -607,8 +607,8 @@ svcctl_scm_enum_services(svcctl_manager_context_t *mgr_ctx, uint8_t *buf, if (use_wchar) { offset -= SVCCTL_WNSTRLEN(node_name); /*LINTED E_BAD_PTR_CAST_ALIGN*/ - w_name = (mts_wchar_t *)&buf[offset]; - (void) mts_mbstowcs(w_name, node_name, namelen); + w_name = (smb_wchar_t *)&buf[offset]; + (void) smb_mbstowcs(w_name, node_name, namelen); } else { offset -= namelen; a_name = (char *)&buf[offset]; @@ -654,8 +654,8 @@ svcctl_scm_cb_bytes_needed(void *svc_node, void *byte_cnt) svcctl_svc_node_t *node = svc_node; int *cnt = byte_cnt; - *cnt += (strlen(node->sn_fmri) + 1) * sizeof (mts_wchar_t); - *cnt += (strlen(node->sn_name) + 1) * sizeof (mts_wchar_t); + *cnt += (strlen(node->sn_fmri) + 1) * sizeof (smb_wchar_t); + *cnt += (strlen(node->sn_name) + 1) * sizeof (smb_wchar_t); return (UU_WALK_NEXT); } diff --git a/usr/src/lib/smbsrv/libmlsvc/common/svcctl_svc.c b/usr/src/lib/smbsrv/libmlsvc/common/svcctl_svc.c index 23964f7d9a..1cc2c17cc2 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/svcctl_svc.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/svcctl_svc.c @@ -1194,7 +1194,7 @@ svcctl_s_QueryServiceConfig2W(void *arg, ndr_xa_t *mxa) svcctl_svc_node_t *svc; svc_config_rsp_t svc_rsp; int offset, input_bufsize, bytes_needed = 0; - mts_wchar_t *wide_desc; + smb_wchar_t *wide_desc; char *desc; DWORD status; @@ -1245,8 +1245,8 @@ svcctl_s_QueryServiceConfig2W(void *arg, ndr_xa_t *mxa) offset = sizeof (svc_description_t); svc_rsp.svc_desc->desc = offset; /*LINTED E_BAD_PTR_CAST_ALIGN*/ - wide_desc = (mts_wchar_t *)¶m->buffer[offset]; - (void) mts_mbstowcs(wide_desc, desc, (strlen(desc) + 1)); + wide_desc = (smb_wchar_t *)¶m->buffer[offset]; + (void) smb_mbstowcs(wide_desc, desc, (strlen(desc) + 1)); offset += SVCCTL_WNSTRLEN(desc); param->bytes_needed = offset; diff --git a/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c b/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c index 212c4933b2..72905f709a 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c @@ -780,7 +780,7 @@ winreg_s_QueryValue(void *arg, ndr_xa_t *mxa) return (NDR_DRC_OK); } - slen = mts_wcequiv_strlen(value) + sizeof (mts_wchar_t); + slen = smb_wcequiv_strlen(value) + sizeof (smb_wchar_t); msize = sizeof (struct winreg_value) + slen; param->value = (struct winreg_value *)NDR_MALLOC(mxa, msize); @@ -799,7 +799,7 @@ winreg_s_QueryValue(void *arg, ndr_xa_t *mxa) pv->vc_first_is = 0; pv->vc_length_is = slen; /*LINTED E_BAD_PTR_CAST_ALIGN*/ - (void) ndr_mbstowcs(NULL, (mts_wchar_t *)pv->value, value, slen); + (void) ndr_mbstowcs(NULL, (smb_wchar_t *)pv->value, value, slen); *param->type = 1; *param->value_size = slen; diff --git a/usr/src/lib/smbsrv/libsmb/Makefile.com b/usr/src/lib/smbsrv/libsmb/Makefile.com index 1cb861d8ba..13795457a1 100644 --- a/usr/src/lib/smbsrv/libsmb/Makefile.com +++ b/usr/src/lib/smbsrv/libsmb/Makefile.com @@ -33,11 +33,9 @@ OBJS_SHARED = \ smb_msgbuf.o \ smb_native.o \ smb_oem.o \ - smb_opmlang.o \ smb_share_door_decode.o \ smb_sid.o \ smb_status_xlat.o \ - smb_strcase.o \ smb_string.o \ smb_token.o \ smb_token_xdr.o \ diff --git a/usr/src/lib/smbsrv/libsmb/common/libsmb.h b/usr/src/lib/smbsrv/libsmb/common/libsmb.h index 029294f3a7..189bce0021 100644 --- a/usr/src/lib/smbsrv/libsmb/common/libsmb.h +++ b/usr/src/lib/smbsrv/libsmb/common/libsmb.h @@ -50,12 +50,8 @@ extern "C" { #include <smbsrv/ntstatus.h> #include <smbsrv/smb_door_svc.h> #include <smbsrv/alloc.h> -#include <smbsrv/codepage.h> -#include <smbsrv/ctype.h> #include <smbsrv/hash_table.h> #include <smbsrv/msgbuf.h> -#include <smbsrv/oem.h> -#include <smbsrv/smb_i18n.h> #include <smbsrv/wintypes.h> #include <smbsrv/smb_xdr.h> #include <smbsrv/smbinfo.h> @@ -324,7 +320,7 @@ void smb_tracef(const char *fmt, ...); typedef struct smb_auth_name_entry { unsigned short nne_type; unsigned short nne_len; - mts_wchar_t nne_name[SMB_PI_MAX_DOMAIN * 2]; + smb_wchar_t nne_name[SMB_PI_MAX_DOMAIN * 2]; } smb_auth_name_entry_t; /* @@ -449,7 +445,7 @@ extern int smb_pwd_iteropen(smb_pwditer_t *); extern smb_luser_t *smb_pwd_iterate(smb_pwditer_t *); extern void smb_pwd_iterclose(smb_pwditer_t *); -extern int smb_auth_qnd_unicode(mts_wchar_t *, const char *, int); +extern int smb_auth_qnd_unicode(smb_wchar_t *, const char *, int); extern int smb_auth_hmac_md5(unsigned char *, int, unsigned char *, int, unsigned char *); diff --git a/usr/src/lib/smbsrv/libsmb/common/mapfile-vers b/usr/src/lib/smbsrv/libsmb/common/mapfile-vers index 0f895b0654..4191970939 100644 --- a/usr/src/lib/smbsrv/libsmb/common/mapfile-vers +++ b/usr/src/lib/smbsrv/libsmb/common/mapfile-vers @@ -39,10 +39,6 @@ SUNWprivate { global: bintohex; - codepage_islower; - codepage_isupper; - codepage_tolower; - codepage_toupper; hexdump; hextobin; ht_add_item; @@ -74,20 +70,9 @@ SUNWprivate { list_prev; list_remove; list_tail; - mts_mbstos; - mts_mbstowcs; - mts_mbtowc; - mts_sbequiv_strlen; - mts_stombs; - mts_wcequiv_strlen; - mts_wcstombs; - mts_wctomb; netr_client_mkabsolute; netr_client_xfree; - oem_get_smb_cpid; - oem_get_telnet_cpid; - oem_language_set; - oemstounicodes; + oemtoucs; rand_hash; randomize; smb_account_free; @@ -109,6 +94,7 @@ SUNWprivate { smb_auth_validate_lm; smb_auth_validate_nt; smb_chk_hostaccess; + smb_codepage_init; smb_config_get; smb_config_get_fg_flag; smb_config_get_localsid; @@ -226,6 +212,10 @@ SUNWprivate { smb_ipc_rollback; smb_ipc_get_user; smb_ipc_get_passwd; + smb_islower; + smb_isupper; + smb_isstrlwr; + smb_isstrupr; smb_kmod_bind; smb_kmod_enum; smb_kmod_enum_init; @@ -275,6 +265,9 @@ SUNWprivate { smb_match; smb_match_ci; smb_match_netlogon_seqnum; + smb_mbstos; + smb_mbstowcs; + smb_mbtowc; smb_msgbuf_base; smb_msgbuf_decode; smb_msgbuf_dword_align; @@ -335,6 +328,7 @@ SUNWprivate { smb_sam_grp_cnt; smb_sam_usr_cnt; smb_sam_usr_groups; + smb_sbequiv_strlen; smb_sd_get_secinfo; smb_sd_init; smb_sd_len; @@ -358,12 +352,21 @@ SUNWprivate { smb_sid_type2str; smb_smf_maintenance_mode; smb_smf_restart_service; + smb_stombs; + smb_strcasecmp; + smb_strlwr; + smb_strupr; + smb_tolower; + smb_toupper; smb_token_mkselfrel; smb_token_query_privilege; smb_tonetbiosname; smb_trace; smb_tracef; smb_update_netlogon_seqnum; + smb_wcequiv_strlen; + smb_wcstombs; + smb_wctomb; smb_wka_fini; smb_wka_get_domain; smb_wka_get_sid; @@ -379,14 +382,7 @@ SUNWprivate { strsubst; strtrim; trim_whitespace; - unicodestooems; - utf8_isstrascii; - utf8_isstrlwr; - utf8_isstrupr; - utf8_strcasecmp; - utf8_strlwr; - utf8_strncasecmp; - utf8_strupr; + ucstooem; xdr_smb_dr_bytes_t; xdr_smb_dr_joininfo_t; xdr_smb_dr_string_t; diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_acl.c b/usr/src/lib/smbsrv/libsmb/common/smb_acl.c index 81b544dcd0..9d981ceeb4 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_acl.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_acl.c @@ -27,11 +27,9 @@ #include <strings.h> #include <assert.h> -#include <smbsrv/ntifs.h> +#include <smbsrv/smb.h> #include <smbsrv/smb_sid.h> #include <smbsrv/smb_idmap.h> -#include <smbsrv/ntstatus.h> -#include <smbsrv/ntaccess.h> #define ACE_ALL_TYPES 0x001F diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_auth.c b/usr/src/lib/smbsrv/libsmb/common/smb_auth.c index 161fcd4d27..b53d109ed7 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_auth.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_auth.c @@ -25,9 +25,7 @@ #include <strings.h> #include <stdlib.h> -#include <smbsrv/codepage.h> -#include <smbsrv/oem.h> -#include <smbsrv/ctype.h> +#include <smbsrv/string.h> #include <smbsrv/libsmb.h> extern void randomize(char *data, unsigned len); @@ -40,24 +38,22 @@ static uint64_t unix_micro_to_nt_time(struct timeval *unix_time); * Returns the length of dst in bytes. */ int -smb_auth_qnd_unicode(mts_wchar_t *dst, const char *src, int length) +smb_auth_qnd_unicode(smb_wchar_t *dst, const char *src, int length) { int i; - - unsigned int cpid = oem_get_telnet_cpid(); unsigned int count; - mts_wchar_t new_char; + smb_wchar_t new_char; - if ((count = oemstounicodes(dst, src, length, cpid)) == 0) { + if ((count = oemtoucs(dst, src, length, OEM_CPG_1252)) == 0) { for (i = 0; i < length; ++i) { - new_char = (mts_wchar_t)src[i] & 0xff; + new_char = (smb_wchar_t)src[i] & 0xff; dst[i] = LE_IN16(&new_char); } dst[i] = 0; count = length; } - return (count * sizeof (mts_wchar_t)); + return (count * sizeof (smb_wchar_t)); } /* @@ -75,8 +71,8 @@ smb_auth_lmupr(unsigned char *lm_pwd) int i; for (i = 0; (*p) && (i < SMBAUTH_LM_PWD_SZ); i++) { - if (mts_isascii(*p)) { - *p = codepage_toupper(*p); + if (smb_isascii(*p)) { + *p = smb_toupper(*p); p++; } } @@ -148,7 +144,7 @@ smb_auth_lm_response(unsigned char *hash, int smb_auth_ntlm_hash(const char *password, unsigned char *hash) { - mts_wchar_t *unicode_password; + smb_wchar_t *unicode_password; int length; int rc; @@ -156,8 +152,8 @@ smb_auth_ntlm_hash(const char *password, unsigned char *hash) return (SMBAUTH_FAILURE); length = strlen(password); - unicode_password = (mts_wchar_t *) - malloc((length + 1) * sizeof (mts_wchar_t)); + unicode_password = (smb_wchar_t *) + malloc((length + 1) * sizeof (smb_wchar_t)); if (unicode_password == NULL) return (SMBAUTH_FAILURE); @@ -290,7 +286,7 @@ smb_auth_ntlmv2_hash(unsigned char *ntlm_hash, char *ntdomain, unsigned char *ntlmv2_hash) { - mts_wchar_t *data; + smb_wchar_t *data; int data_len; unsigned char *buf; int rc; @@ -298,7 +294,7 @@ smb_auth_ntlmv2_hash(unsigned char *ntlm_hash, if (username == NULL || ntdomain == NULL) return (SMBAUTH_FAILURE); - (void) utf8_strupr(username); + (void) smb_strupr(username); data_len = strlen(username) + strlen(ntdomain); buf = (unsigned char *)malloc((data_len + 1) * sizeof (char)); @@ -306,7 +302,7 @@ smb_auth_ntlmv2_hash(unsigned char *ntlm_hash, return (SMBAUTH_FAILURE); (void) snprintf((char *)buf, data_len + 1, "%s%s", username, ntdomain); - data = (mts_wchar_t *)malloc((data_len + 1) * sizeof (mts_wchar_t)); + data = (smb_wchar_t *)malloc((data_len + 1) * sizeof (smb_wchar_t)); if (data == NULL) { free(buf); return (SMBAUTH_FAILURE); @@ -423,7 +419,7 @@ smb_auth_set_info(char *username, if ((uppercase_dom = strdup(domain)) == NULL) return (-1); - (void) utf8_strupr(uppercase_dom); + (void) smb_strupr(uppercase_dom); if (smb_auth_ntlmv2_hash(auth->hash, username, uppercase_dom, auth->hash_v2) != SMBAUTH_SUCCESS) { @@ -570,7 +566,7 @@ smb_ntlmv2_password_ok( dest[0] = domain; if ((dest[1] = strdup(domain)) == NULL) return (B_FALSE); - (void) utf8_strupr(dest[1]); + (void) smb_strupr(dest[1]); dest[2] = ""; /* @@ -642,7 +638,7 @@ smb_lmv2_password_ok( dest[0] = domain; if ((dest[1] = strdup(domain)) == NULL) return (B_FALSE); - (void) utf8_strupr(dest[1]); + (void) smb_strupr(dest[1]); dest[2] = ""; /* diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_domain.c b/usr/src/lib/smbsrv/libsmb/common/smb_domain.c index 42ff0657ac..e4660ef447 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_domain.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_domain.c @@ -176,8 +176,8 @@ smb_domain_lookup_name(char *name, smb_domain_t *di) dcnode = list_head(&smb_dcache.dc_cache); while (dcnode) { - found = (utf8_strcasecmp(dcnode->di_nbname, name) == 0) || - (utf8_strcasecmp(dcnode->di_fqname, name) == 0); + found = (smb_strcasecmp(dcnode->di_nbname, name, 0) == 0) || + (smb_strcasecmp(dcnode->di_fqname, name, 0) == 0); if (found) { if (di) @@ -187,7 +187,8 @@ smb_domain_lookup_name(char *name, smb_domain_t *di) if ((p = strchr(dcnode->di_fqname, '.')) != NULL) { *p = '\0'; - found = (utf8_strcasecmp(dcnode->di_fqname, name) == 0); + found = (smb_strcasecmp(dcnode->di_fqname, name, + 0) == 0); *p = '.'; if (found) { if (di) @@ -458,7 +459,7 @@ smb_domain_set_basic_info(char *sid, char *nb_domain, char *fq_domain, (void) strlcpy(di->di_sid, sid, SMB_SID_STRSZ); (void) strlcpy(di->di_nbname, nb_domain, NETBIOS_NAME_SZ); - (void) utf8_strupr(di->di_nbname); + (void) smb_strupr(di->di_nbname); (void) strlcpy(di->di_fqname, fq_domain, MAXHOSTNAMELEN); di->di_binsid = NULL; } diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_info.c b/usr/src/lib/smbsrv/libsmb/common/smb_info.c index 691d2e99ed..4bc31864d8 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_info.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_info.c @@ -166,7 +166,7 @@ smb_gethostname(char *buf, size_t buflen, int upcase) *p = '\0'; if (upcase) - (void) utf8_strupr(buf); + (void) smb_strupr(buf); return (0); } @@ -517,25 +517,24 @@ void smb_tonetbiosname(char *name, char *nb_name, char suffix) { char tmp_name[NETBIOS_NAME_SZ]; - mts_wchar_t wtmp_name[NETBIOS_NAME_SZ]; - unsigned int cpid; + smb_wchar_t wtmp_name[NETBIOS_NAME_SZ]; int len; size_t rc; len = 0; - rc = mts_mbstowcs(wtmp_name, (const char *)name, NETBIOS_NAME_SZ); + rc = smb_mbstowcs(wtmp_name, (const char *)name, NETBIOS_NAME_SZ); if (rc != (size_t)-1) { wtmp_name[NETBIOS_NAME_SZ - 1] = 0; - cpid = oem_get_smb_cpid(); - rc = unicodestooems(tmp_name, wtmp_name, NETBIOS_NAME_SZ, cpid); + rc = ucstooem(tmp_name, wtmp_name, NETBIOS_NAME_SZ, + OEM_CPG_850); if (rc > 0) len = strlen(tmp_name); } (void) memset(nb_name, ' ', NETBIOS_NAME_SZ - 1); if (len) { - (void) utf8_strupr(tmp_name); + (void) smb_strupr(tmp_name); (void) memcpy(nb_name, tmp_name, len); } nb_name[NETBIOS_NAME_SZ - 1] = suffix; diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c b/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c index 85ad5209de..d8bc1d69fe 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c @@ -214,7 +214,7 @@ smb_lgrp_add(char *gname, char *cmnt) return (SMB_LGRP_INVALID_ARG); bzero(&grp, sizeof (grp)); - grp.sg_name = utf8_strlwr(gname); + grp.sg_name = smb_strlwr(gname); grp.sg_cmnt = cmnt; wka = smb_wka_lookup_name(gname); @@ -286,7 +286,7 @@ smb_lgrp_rename(char *gname, char *new_gname) if (!smb_lgrp_chkname(gname)) return (SMB_LGRP_INVALID_NAME); - if (utf8_strcasecmp(gname, new_gname) == 0) + if (smb_strcasecmp(gname, new_gname, 0) == 0) return (SMB_LGRP_SUCCESS); /* Cannot rename well-known groups */ @@ -2161,7 +2161,7 @@ smb_lgrp_chkname(char *name) if (strchr(invalid_chars, name[i])) return (B_FALSE); - (void) utf8_strlwr(name); + (void) smb_strlwr(name); return (B_TRUE); } @@ -2173,12 +2173,12 @@ smb_lgrp_chkname(char *name) static void smb_lgrp_set_default_privs(smb_group_t *grp) { - if (utf8_strcasecmp(grp->sg_name, "Administrators") == 0) { + if (smb_strcasecmp(grp->sg_name, "Administrators", 0) == 0) { smb_privset_enable(grp->sg_privs, SE_TAKE_OWNERSHIP_LUID); return; } - if (utf8_strcasecmp(grp->sg_name, "Backup Operators") == 0) { + if (smb_strcasecmp(grp->sg_name, "Backup Operators", 0) == 0) { smb_privset_enable(grp->sg_privs, SE_BACKUP_LUID); smb_privset_enable(grp->sg_privs, SE_RESTORE_LUID); return; diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_privilege.c b/usr/src/lib/smbsrv/libsmb/common/smb_privilege.c index be8853f4bc..2b60a8d549 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_privilege.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_privilege.c @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * This module provides the interface to the built-in privilege names * and id's. NT privileges are known on the network using strings. Each @@ -157,7 +155,7 @@ smb_priv_getbyname(char *name) for (i = SE_MIN_LUID; i <= SE_MAX_LUID; ++i) { entry = &priv_table[i]; - if (utf8_strcasecmp(name, entry->name) == 0) + if (smb_strcasecmp(name, entry->name, 0) == 0) return (entry); } diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_sam.c b/usr/src/lib/smbsrv/libsmb/common/smb_sam.c index 9c92ad6a60..82cf1efc26 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_sam.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_sam.c @@ -109,14 +109,14 @@ smb_sam_lookup_name(char *domain, char *name, uint16_t type, return (NT_STATUS_NOT_FOUND); /* Only Netbios hostname is accepted */ - if (utf8_strcasecmp(domain, di.di_nbname) != 0) + if (smb_strcasecmp(domain, di.di_nbname, 0) != 0) return (NT_STATUS_NONE_MAPPED); } else { if (!smb_domain_lookup_type(SMB_DOMAIN_LOCAL, &di)) return (NT_STATUS_CANT_ACCESS_DOMAIN_INFO); } - if (utf8_strcasecmp(name, di.di_nbname) == 0) { + if (smb_strcasecmp(name, di.di_nbname, 0) == 0) { /* This is the local domain name */ account->a_type = SidTypeDomain; account->a_name = strdup(""); @@ -474,7 +474,7 @@ smb_lwka_lookup_name(char *name) int i; for (i = 0; i < SMB_LWKA_NUM; i++) { - if (utf8_strcasecmp(name, lwka_tbl[i].lwka_name) == 0) + if (smb_strcasecmp(name, lwka_tbl[i].lwka_name, 0) == 0) return (&lwka_tbl[i]); } diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_wksids.c b/usr/src/lib/smbsrv/libsmb/common/smb_wksids.c index 7bca2438d8..ef9400b785 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_wksids.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_wksids.c @@ -186,7 +186,7 @@ smb_wka_lookup_name(char *name) (void) rw_rdlock(&wk_rwlock); for (i = 0; i < SMB_WKA_NUM; ++i) { entry = &wka_tbl[i]; - if (!utf8_strcasecmp(name, entry->wka_name)) { + if (!smb_strcasecmp(name, entry->wka_name, 0)) { (void) rw_unlock(&wk_rwlock); return (entry); } diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c index 13005345fb..5ec6bb0915 100644 --- a/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c +++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c @@ -241,7 +241,7 @@ smb_ads_refresh(void) (void) smb_config_getstr(SMB_CI_ADS_SITE, new_site, SMB_ADS_SITE_MAX); (void) smb_config_getip(SMB_CI_DOMAIN_SRV, &new_pdc); (void) mutex_lock(&smb_ads_cfg.c_mtx); - if (utf8_strcasecmp(smb_ads_cfg.c_site, new_site)) { + if (smb_strcasecmp(smb_ads_cfg.c_site, new_site, 0)) { (void) strlcpy(smb_ads_cfg.c_site, new_site, SMB_ADS_SITE_MAX); purge = B_TRUE; } @@ -380,7 +380,7 @@ smb_ads_is_sought_host(smb_ads_host_info_t *host, char *sought_host_name) if ((host == NULL) || (sought_host_name == NULL)) return (B_FALSE); - if (utf8_strcasecmp(host->name, sought_host_name)) + if (smb_strcasecmp(host->name, sought_host_name, 0)) return (B_FALSE); return (B_TRUE); @@ -405,7 +405,7 @@ smb_ads_is_same_domain(char *cached_host_name, char *current_domain) return (B_FALSE); ++cached_host_domain; - if (utf8_strcasecmp(cached_host_domain, current_domain)) + if (smb_strcasecmp(cached_host_domain, current_domain, 0)) return (B_FALSE); return (B_TRUE); @@ -559,7 +559,7 @@ smb_ads_decode_host_ip(int addit_cnt, int ans_cnt, uchar_t **ptr, for (j = 0; j < ans_cnt; j++) { if ((name = ads_host_list[j].name) == NULL) continue; - if (utf8_strcasecmp(name, hostname) == 0) { + if (smb_strcasecmp(name, hostname, 0) == 0) { ads_host_list[j].ipaddr = ipaddr; } } diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c index c98aa6d661..ba79bdc787 100644 --- a/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c +++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c @@ -39,7 +39,7 @@ #include <smbsrv/libsmb.h> #include <smbsrv/libsmbns.h> -#include <smbsrv/cifs.h> +#include <smbsrv/smb.h> #include <smbsrv/mailslot.h> #include <smbns_browser.h> #include <smbns_netbios.h> @@ -780,7 +780,7 @@ smb_browser_send_HostAnnouncement(smb_hostinfo_t *hinfo, if (smb_getdomainname(resource_domain, SMB_PI_MAX_DOMAIN) != 0) return; - (void) utf8_strupr(resource_domain); + (void) smb_strupr(resource_domain); if (addr == NULL) { /* Local master Browser */ @@ -1058,7 +1058,7 @@ smb_browser_config(void) if (smb_getdomainname(resource_domain, SMB_PI_MAX_DOMAIN) != 0) return; - (void) utf8_strupr(resource_domain); + (void) smb_strupr(resource_domain); /* domain<00> */ smb_init_name_struct((unsigned char *)resource_domain, NBT_WKSTA, @@ -1156,7 +1156,7 @@ smb_browser_init(void) /* This is the name used for HostAnnouncement */ (void) strlcpy(hinfo->hi_nbname, hinfo->hi_nic.nic_host, NETBIOS_NAME_SZ); - (void) utf8_strupr(hinfo->hi_nbname); + (void) smb_strupr(hinfo->hi_nbname); /* 0x20: file server service */ smb_init_name_struct((unsigned char *)hinfo->hi_nbname, NBT_SERVER, 0, hinfo->hi_nic.nic_ip.a_ipv4, @@ -1193,7 +1193,7 @@ smb_browser_non_master_duties(smb_hostinfo_t *hinfo, boolean_t remove) if (smb_getdomainname(resource_domain, SMB_PI_MAX_DOMAIN) != 0) return; - (void) utf8_strupr(resource_domain); + (void) smb_strupr(resource_domain); smb_init_name_struct((unsigned char *)resource_domain, NBT_MB, 0, 0, 0, 0, 0, &name); diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_ksetpwd.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_ksetpwd.c index 6321254c29..304b1292ee 100644 --- a/usr/src/lib/smbsrv/libsmbns/common/smbns_ksetpwd.c +++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_ksetpwd.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -98,7 +98,7 @@ smb_krb5_get_upn(char *spn, char *domain) if (!realm) return (NULL); - (void) utf8_strupr(realm); + (void) smb_strupr(realm); len = strlen(spn) + 1 + strlen(realm) + 1; upn = (char *)malloc(len); @@ -133,7 +133,7 @@ smb_krb5_get_host_upn(const char *fqhn) if ((realm = strdup(++dom)) == NULL) return (NULL); - (void) utf8_strupr(realm); + (void) smb_strupr(realm); len = strlen(spn_prefix[SMBKRB5_SPN_IDX_HOST]) + strlen(fqhn) + + 1 + strlen(realm) + 1; diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_netbios.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_netbios.c index 2b6117edc5..d5f029c455 100644 --- a/usr/src/lib/smbsrv/libsmbns/common/smbns_netbios.c +++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_netbios.c @@ -214,7 +214,7 @@ smb_encode_netbios_name(unsigned char *name, char suffix, unsigned char *scope, sizeof (dest->scope)); } - (void) utf8_strupr((char *)dest->scope); + (void) smb_strupr((char *)dest->scope); } void diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_netlogon.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_netlogon.c index e34270ce87..d0ebbfbe38 100644 --- a/usr/src/lib/smbsrv/libsmbns/common/smbns_netlogon.c +++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_netlogon.c @@ -92,7 +92,7 @@ smb_netlogon_request(struct name_entry *server, char *domain) (void) mutex_unlock(&ntdomain_mtx); smb_config_getdomaininfo(di.di_nbname, NULL, di.di_sid, NULL, NULL); - if (utf8_strcasecmp(di.di_nbname, domain) == 0) { + if (smb_strcasecmp(di.di_nbname, domain, 0) == 0) { if ((sid = smb_sid_fromstr(di.di_sid)) != NULL) protocol = NETLOGON_PROTO_SAMLOGON; } @@ -132,8 +132,7 @@ smb_netlogon_receive(struct datagram *datagram, smb_msgbuf_t mb; unsigned short opcode; char src_name[SMB_PI_MAX_HOST]; - mts_wchar_t unicode_src_name[SMB_PI_MAX_HOST]; - unsigned int cpid = oem_get_smb_cpid(); + smb_wchar_t unicode_src_name[SMB_PI_MAX_HOST]; uint32_t src_ipaddr; char *junk; char *primary; @@ -149,9 +148,9 @@ smb_netlogon_receive(struct datagram *datagram, * Therefore, we need to convert it to unicode and * store it in multi-bytes format. */ - (void) oemstounicodes(unicode_src_name, (char *)datagram->src.name, - SMB_PI_MAX_HOST, cpid); - (void) mts_wcstombs(src_name, unicode_src_name, SMB_PI_MAX_HOST); + (void) oemtoucs(unicode_src_name, (char *)datagram->src.name, + SMB_PI_MAX_HOST, OEM_CPG_850); + (void) smb_wcstombs(src_name, unicode_src_name, SMB_PI_MAX_HOST); (void) trim_whitespace(src_name); @@ -288,7 +287,7 @@ smb_netlogon_query(struct name_entry *server, * zero bytes that terminate the wchar string. */ data_length = sizeof (short) + name_lengths + (name_lengths & 1) + - mts_wcequiv_strlen(hostname) + 2 + sizeof (long) + sizeof (short) + + smb_wcequiv_strlen(hostname) + 2 + sizeof (long) + sizeof (short) + sizeof (short); offset = smb_browser_load_transact_header(buffer, @@ -381,8 +380,8 @@ smb_netlogon_samlogon(struct name_entry *server, data_length = sizeof (short) + sizeof (short) - + mts_wcequiv_strlen(hostname) + 2 - + mts_wcequiv_strlen(username) + 2 + + smb_wcequiv_strlen(hostname) + 2 + + smb_wcequiv_strlen(username) + 2 + name_length + sizeof (long) + sizeof (long) diff --git a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr.h b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr.h index aa21a4a41f..385c20455f 100644 --- a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr.h +++ b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr.h @@ -34,8 +34,7 @@ #include <smbsrv/libsmb.h> #include <smbsrv/libsmbrdr.h> - -#include <smbsrv/cifs.h> +#include <smbsrv/smb.h> #include <smbsrv/smbinfo.h> #include <smbsrv/smb.h> #include <smbsrv/wintypes.h> @@ -186,6 +185,77 @@ typedef struct smbrdr_handle { struct sdb_netuse *srh_tree; } smbrdr_handle_t; +typedef struct smb_nt_negotiate_rsp { + uint8_t word_count; + uint16_t dialect_index; + uint8_t security_mode; + uint16_t max_mpx; + uint16_t max_vc; + uint32_t max_buffer_size; + uint32_t max_raw_size; + uint32_t session_key; + uint32_t capabilities; + uint32_t time_low; + uint32_t time_high; + uint16_t server_tz; + uint8_t security_len; + uint16_t byte_count; + uint8_t *guid; + uint8_t *challenge; + uint8_t *oem_domain; +} smb_nt_negotiate_rsp_t; + +/* + * SMB_COM_TRANSACTION + */ +typedef struct smb_transact_rsp { + uint8_t WordCount; /* Count of data bytes */ + /* value = 10 + SetupCount */ + uint16_t TotalParamCount; /* Total parameter bytes being sent */ + uint16_t TotalDataCount; /* Total data bytes being sent */ + uint16_t Reserved; + uint16_t ParamCount; /* Parameter bytes sent this buffer */ + uint16_t ParamOffset; /* Offset (from hdr start) to params */ + uint16_t ParamDisplacement; /* Displacement of these param bytes */ + uint16_t DataCount; /* Data bytes sent this buffer */ + uint16_t DataOffset; /* Offset (from hdr start) to data */ + uint16_t DataDisplacement; /* Displacement of these data bytes */ + uint8_t SetupCount; /* Count of setup words */ + uint16_t BCC; +#if 0 + uint8_t Reserved2; /* Reserved (pad above to word) */ + uint8_t Buffer[1]; /* Buffer containing: */ + uint16_t Setup[]; /* Setup words (# = SetupWordCount) */ + uint16_t ByteCount; /* Count of data bytes */ + uint8_t Pad[]; /* Pad to SHORT or LONG */ + uint8_t Params[]; /* Param. bytes (# = ParamCount) */ + uint8_t Pad1[]; /* Pad to SHORT or LONG */ + uint8_t Data[]; /* Data bytes (# = DataCount) */ +#endif +} smb_transact_rsp_t; + +/* + * SMBreadX + */ +typedef struct smb_read_andx_rsp { + uint8_t WordCount; + uint8_t AndXCmd; + uint8_t AndXReserved; + uint16_t AndXOffset; + uint16_t Remaining; + uint16_t DataCompactionMode; + uint16_t Reserved; + uint16_t DataLength; + uint16_t DataOffset; + uint32_t DataLengthHigh; + uint16_t Reserved2[3]; + uint16_t ByteCount; +#if 0 + uint8_t Pad[]; + uint8_t Data[]; +#endif +} smb_read_andx_rsp_t; + /* * smbrdr_netbios.c */ diff --git a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_logon.c b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_logon.c index 8689ba446c..3594508279 100644 --- a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_logon.c +++ b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_logon.c @@ -189,7 +189,7 @@ smbrdr_authenticate(char *domain_controller, char *primary_domain, /* * Ensure that the domain name is uppercase. */ - (void) utf8_strupr(primary_domain); + (void) smb_strupr(primary_domain); return (smbrdr_logon_user(domain_controller, account_name, pwd)); } @@ -302,8 +302,8 @@ smbrdr_session_setupx(struct sdb_logon *logon) return (-1); if (session->remote_caps & CAP_UNICODE) { - strlen_fn = mts_wcequiv_strlen; - null_size = sizeof (mts_wchar_t); + strlen_fn = smb_wcequiv_strlen; + null_size = sizeof (smb_wchar_t); session->smb_flags2 |= SMB_FLAGS2_UNICODE; } else { strlen_fn = strlen; diff --git a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netbios.c b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netbios.c index 675f00e5ae..5f327205e4 100644 --- a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netbios.c +++ b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netbios.c @@ -47,7 +47,7 @@ #include <stdio.h> #include <pthread.h> -#include <smbsrv/cifs.h> +#include <smbsrv/smb.h> #define MAX_NETBIOS_NAME_SIZE 16 diff --git a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netuse.c b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netuse.c index 00c3d6b0ea..d93d1ef798 100644 --- a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netuse.c +++ b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netuse.c @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "@(#)smbrdr_netuse.c 1.4 08/07/16 SMI" - /* * Tree connect and disconnect functions to support SMB shares. * These functions are described in the CIFS draft 1.0 Protocol @@ -124,7 +122,7 @@ smbrdr_tree_connect(char *hostname, char *username, char *sharename, bzero(path, path_len); (void) snprintf(path, path_len, "\\\\%s\\%s", hostname, sharename); if (session->remote_caps & CAP_UNICODE) - path_len = mts_wcequiv_strlen(path); + path_len = smb_wcequiv_strlen(path); else path_len = strlen(path); diff --git a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_rpcpipe.c b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_rpcpipe.c index 123dde8fe7..74c88ffd6d 100644 --- a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_rpcpipe.c +++ b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_rpcpipe.c @@ -454,8 +454,8 @@ smbrdr_ntcreatex(struct sdb_ofile *ofile) (void) strcpy(path, ofile->path); if (sess->remote_caps & CAP_UNICODE) { - path_len = mts_wcequiv_strlen(path); - null_size = sizeof (mts_wchar_t); + path_len = smb_wcequiv_strlen(path); + null_size = sizeof (smb_wchar_t); } else { path_len = strlen(path); null_size = sizeof (char); diff --git a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_session.c b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_session.c index 1796230614..bd35017635 100644 --- a/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_session.c +++ b/usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_session.c @@ -44,8 +44,6 @@ #include <smbsrv/libsmbrdr.h> #include <smbsrv/netbios.h> -#include <smbsrv/cifs.h> -#include <smbsrv/ntstatus.h> #include <smbrdr.h> #define SMBRDR_DOMAIN_MAX 32 @@ -219,9 +217,8 @@ smbrdr_trnsprt_connect(struct sdb_session *sess, uint16_t port) struct sockaddr_in sin; struct sockaddr_in6 sin6; int sock, rc; - mts_wchar_t unicode_server_name[SMB_PI_MAX_DOMAIN]; + smb_wchar_t unicode_server_name[SMB_PI_MAX_DOMAIN]; char server_name[SMB_PI_MAX_DOMAIN]; - unsigned int cpid = oem_get_smb_cpid(); char ipstr[INET6_ADDRSTRLEN]; if ((sock = socket(sess->srv_ipaddr.a_family, SOCK_STREAM, 0)) <= 0) { @@ -253,10 +250,10 @@ smbrdr_trnsprt_connect(struct sdb_session *sess, uint16_t port) return (-1); } - (void) mts_mbstowcs(unicode_server_name, sess->srv_name, + (void) smb_mbstowcs(unicode_server_name, sess->srv_name, SMB_PI_MAX_DOMAIN); - rc = unicodestooems(server_name, unicode_server_name, - SMB_PI_MAX_DOMAIN, cpid); + rc = ucstooem(server_name, unicode_server_name, SMB_PI_MAX_DOMAIN, + OEM_CPG_850); if (rc == 0) { syslog(LOG_DEBUG, "smbrdr: unicode conversion failed"); if (sock != 0) @@ -417,11 +414,11 @@ smbrdr_session_init(char *domain_controller, char *domain) smbrdr_session_clear(session); (void) strlcpy(session->srv_name, domain_controller, MAXHOSTNAMELEN); - (void) utf8_strupr(session->srv_name); + (void) smb_strupr(session->srv_name); session->srv_ipaddr = ipaddr; (void) strlcpy(session->domain, domain, MAXHOSTNAMELEN); - (void) utf8_strupr(session->domain); + (void) smb_strupr(session->domain); (void) smb_config_getstr(SMB_CI_NBSCOPE, session->scope, sizeof (session->scope)); |