summaryrefslogtreecommitdiff
path: root/usr/src/lib/smbsrv/libsmb/common/smb_domain.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/smbsrv/libsmb/common/smb_domain.c')
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_domain.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_domain.c b/usr/src/lib/smbsrv/libsmb/common/smb_domain.c
index 22ea5e61fb..f57dadc806 100644
--- a/usr/src/lib/smbsrv/libsmb/common/smb_domain.c
+++ b/usr/src/lib/smbsrv/libsmb/common/smb_domain.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -77,10 +77,11 @@ int
nt_domain_init(char *resource_domain, uint32_t secmode)
{
nt_domain_t *domain;
- nt_sid_t *sid;
- char *sidstr;
+ nt_sid_t *sid = NULL;
+ char sidstr[128];
char *lsidstr;
char hostname[MAXHOSTNAMELEN];
+ int rc;
if (rwlock_init(&nt_domain_lock, USYNC_THREAD, NULL))
return (SMB_DOMAIN_NODOMAIN_SID);
@@ -112,17 +113,18 @@ nt_domain_init(char *resource_domain, uint32_t secmode)
(void) nt_domain_add(domain);
free(sid);
- smb_config_rdlock();
- sidstr = smb_config_get(SMB_CI_DOMAIN_SID);
- if (sidstr) {
+ sid = NULL;
+ rc = smb_config_getstr(SMB_CI_DOMAIN_SID, sidstr,
+ sizeof (sidstr));
+ if (rc == SMBD_SMF_OK)
sid = nt_sid_strtosid(sidstr);
- smb_config_unlock();
+ if (nt_sid_is_valid(sid)) {
domain = nt_domain_new(NT_DOMAIN_PRIMARY,
resource_domain, sid);
(void) nt_domain_add(domain);
free(sid);
} else {
- smb_config_unlock();
+ free(sid);
(void) rwlock_destroy(&nt_domain_lock);
return (SMB_DOMAIN_NODOMAIN_SID);
}
@@ -198,9 +200,7 @@ nt_domain_add(nt_domain_t *new_domain)
if (new_domain->type == NT_DOMAIN_PRIMARY) {
sidstr = nt_sid_format(new_domain->sid);
- smb_config_wrlock();
- (void) smb_config_set(SMB_CI_DOMAIN_SID, sidstr);
- smb_config_unlock();
+ (void) smb_config_setstr(SMB_CI_DOMAIN_SID, sidstr);
free(sidstr);
}
(void) rw_unlock(&nt_domain_lock);