summaryrefslogtreecommitdiff
path: root/usr/src/lib
diff options
context:
space:
mode:
authorJordan Brown <Jordan.Brown@Sun.COM>2009-11-05 14:34:36 -0800
committerJordan Brown <Jordan.Brown@Sun.COM>2009-11-05 14:34:36 -0800
commitbbf6f00c25b6a2bed23c35eac6d62998ecdb338c (patch)
tree8cf72fd47362b5b0da2ffe9be7fe7726a3d24426 /usr/src/lib
parentd95ac3ffcdcc13296bb4c53f621f72c0535f32c3 (diff)
downloadillumos-joyent-bbf6f00c25b6a2bed23c35eac6d62998ecdb338c.tar.gz
6747532 ns_lookup_bypid spams syslog with too many messages
6888836 Not listing all files in a directory of a CIFS share in Windows XP 6812570 Trans2 is missing pass-through levels: FILE_RENAME_INFORMATION (and others) 6888827 Add Unicode codepage support 6865488 libadutils: leak in ldap_lookup_domains_in_forest() 6888708 idmapd crashing periodically. Need cores analyzed. 6891342 invalid, redundant SQL in rule WHERE expressions 6891767 minor cleanups in idmap 6892544 Panic occurred at smb_node_ref+0x7f(ffffffd612297310) --HG-- rename : usr/src/uts/common/smbsrv/cifs.h => usr/src/uts/common/smbsrv/smb.h
Diffstat (limited to 'usr/src/lib')
-rw-r--r--usr/src/lib/libadutils/common/addisc.c33
-rw-r--r--usr/src/lib/libidmap/common/idmap_api.c2
-rw-r--r--usr/src/lib/libshare/smb/smb_share_doorclnt.c2
-rw-r--r--usr/src/lib/smbsrv/libmlrpc/common/ndr_heap.c12
-rw-r--r--usr/src/lib/smbsrv/libmlrpc/common/ndr_process.c18
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/dssetup_svc.c4
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/eventlog_svc.c12
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/libmlsvc.h2
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/lsalib.c2
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/lsar_lookup.c12
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/mlsvc_client.c4
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c8
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/mlsvc_util.c2
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/samlib.c4
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c10
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/smb_logon.c2
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/smb_share.c33
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/srvsvc_svc.c19
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/svcctl_scm.c14
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/svcctl_svc.c6
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c4
-rw-r--r--usr/src/lib/smbsrv/libsmb/Makefile.com2
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/libsmb.h8
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/mapfile-vers44
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_acl.c4
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_auth.c38
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_domain.c9
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_info.c13
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c10
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_privilege.c6
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_sam.c6
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_wksids.c2
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c8
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c10
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_ksetpwd.c6
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_netbios.c2
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_netlogon.c17
-rw-r--r--usr/src/lib/smbsrv/libsmbrdr/common/smbrdr.h74
-rw-r--r--usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_logon.c6
-rw-r--r--usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netbios.c2
-rw-r--r--usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_netuse.c6
-rw-r--r--usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_rpcpipe.c4
-rw-r--r--usr/src/lib/smbsrv/libsmbrdr/common/smbrdr_session.c15
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 *)&param->buffer[offset];
- (void) mts_mbstowcs(wide_desc, desc, (strlen(desc) + 1));
+ wide_desc = (smb_wchar_t *)&param->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));