summaryrefslogtreecommitdiff
path: root/usr/src/lib/smbsrv/libmlsvc
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/smbsrv/libmlsvc
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/smbsrv/libmlsvc')
-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
16 files changed, 71 insertions, 67 deletions
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;