diff options
Diffstat (limited to 'usr/src/lib/smbsrv/libsmb/common')
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/libsmb.h | 8 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/mapfile-vers | 44 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_acl.c | 4 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_auth.c | 38 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_domain.c | 9 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_info.c | 13 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c | 10 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_privilege.c | 6 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_sam.c | 6 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_wksids.c | 2 |
10 files changed, 62 insertions, 78 deletions
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); } |