summaryrefslogtreecommitdiff
path: root/usr/src/lib/smbsrv/libsmb/common/smb_sam.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/smbsrv/libsmb/common/smb_sam.c')
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_sam.c35
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);
+ }
+}