diff options
author | Jordan Brown <Jordan.Brown@Sun.COM> | 2009-11-05 14:34:36 -0800 |
---|---|---|
committer | Jordan Brown <Jordan.Brown@Sun.COM> | 2009-11-05 14:34:36 -0800 |
commit | bbf6f00c25b6a2bed23c35eac6d62998ecdb338c (patch) | |
tree | 8cf72fd47362b5b0da2ffe9be7fe7726a3d24426 /usr/src/lib/smbsrv/libmlsvc | |
parent | d95ac3ffcdcc13296bb4c53f621f72c0535f32c3 (diff) | |
download | illumos-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.c | 4 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/eventlog_svc.c | 12 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/libmlsvc.h | 2 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/lsalib.c | 2 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/lsar_lookup.c | 12 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/mlsvc_client.c | 4 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c | 8 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/mlsvc_util.c | 2 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/samlib.c | 4 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/samr_lookup.c | 10 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/smb_logon.c | 2 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/smb_share.c | 33 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/srvsvc_svc.c | 19 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/svcctl_scm.c | 14 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/svcctl_svc.c | 6 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c | 4 |
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 *)¶m->buffer[offset]; - (void) mts_mbstowcs(wide_desc, desc, (strlen(desc) + 1)); + wide_desc = (smb_wchar_t *)¶m->buffer[offset]; + (void) smb_mbstowcs(wide_desc, desc, (strlen(desc) + 1)); offset += SVCCTL_WNSTRLEN(desc); param->bytes_needed = offset; diff --git a/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c b/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c index 212c4933b2..72905f709a 100644 --- a/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c +++ b/usr/src/lib/smbsrv/libmlsvc/common/winreg_svc.c @@ -780,7 +780,7 @@ winreg_s_QueryValue(void *arg, ndr_xa_t *mxa) return (NDR_DRC_OK); } - slen = mts_wcequiv_strlen(value) + sizeof (mts_wchar_t); + slen = smb_wcequiv_strlen(value) + sizeof (smb_wchar_t); msize = sizeof (struct winreg_value) + slen; param->value = (struct winreg_value *)NDR_MALLOC(mxa, msize); @@ -799,7 +799,7 @@ winreg_s_QueryValue(void *arg, ndr_xa_t *mxa) pv->vc_first_is = 0; pv->vc_length_is = slen; /*LINTED E_BAD_PTR_CAST_ALIGN*/ - (void) ndr_mbstowcs(NULL, (mts_wchar_t *)pv->value, value, slen); + (void) ndr_mbstowcs(NULL, (smb_wchar_t *)pv->value, value, slen); *param->type = 1; *param->value_size = slen; |