diff options
Diffstat (limited to 'usr/src/lib/smbsrv/libsmb/common/smb_sam.c')
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_sam.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_sam.c b/usr/src/lib/smbsrv/libsmb/common/smb_sam.c index 7016f5a878..e236b56724 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_sam.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_sam.c @@ -19,9 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #include <strings.h> @@ -571,3 +572,35 @@ smb_lwka_lookup_sid(smb_sid_t *sid) return (NULL); } + +/* + * smb_sid_islocal + * + * Check a SID to see if it belongs to the local domain. + */ +boolean_t +smb_sid_islocal(smb_sid_t *sid) +{ + smb_domain_t di; + boolean_t islocal = B_FALSE; + + if (smb_domain_lookup_type(SMB_DOMAIN_LOCAL, &di)) + islocal = smb_sid_indomain(di.di_binsid, sid); + + return (islocal); +} + +void +smb_ids_free(smb_ids_t *ids) +{ + smb_id_t *id; + int i; + + if ((ids != NULL) && (ids->i_ids != NULL)) { + id = ids->i_ids; + for (i = 0; i < ids->i_cnt; i++, id++) + smb_sid_free(id->i_sid); + + free(ids->i_ids); + } +} |