smb_lgrp.c revision dc20a3024900c47dd2ee44b9707e6df38f7d62a5
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A#define SMB_LGRP_LOCAL_IDX 0
2N/A#define SMB_LGRP_DB_VERMINOR 0
2N/A#define SMB_LGRP_DB_SQL \
2N/A#define SMB_LGRP_GTBL_NAME 0
2N/Atypedef struct smb_lgmlist {
2N/Atypedef struct smb_lgplist {
2N/Astatic int smb_lgrp_db_init(void);
2N/Asqlite_freemem(void *p)
2N/A return (SQLITE_ERROR);
2N/A return (SQLITE_ERROR);
2N/A const char ***pazColName)
2N/A return (SQLITE_ERROR);
2N/A return (SQLITE_ERROR);
2N/A return (SQLITE_ERROR);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_INVALID_ARG);
2N/A return (SMB_LGRP_NOT_FOUND);
2N/A != IDMAP_SUCCESS)
2N/A return (SMB_LGRP_NO_SID);
2N/A return (SMB_LGRP_SID_NOTLOCAL);
2N/A return (SMB_LGRP_WKSID);
2N/A return (SMB_LGRP_NO_MEMORY);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_SUCCESS);
2N/A return (SMB_LGRP_WKSID);
2N/A return (SMB_LGRP_WKSID);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_WKSID);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_INVALID_ARG);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_INVALID_ARG);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_NO_SUCH_PRIV);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_NO_SUCH_PRIV);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_INVALID_ARG);
2N/A return (SMB_LGRP_INVALID_MEMBER);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A return (SMB_LGRP_INVALID_ARG);
2N/A return (SMB_LGRP_INVALID_NAME);
2N/A case SMB_LGRP_LOCAL:
2N/A case SMB_LGRP_BUILTIN:
2N/A return (SMB_LGRP_INVALID_ARG);
2N/A return (SMB_LGRP_SUCCESS);
2N/A return (SMB_LGRP_NO_MEMORY);
2N/A return (SMB_LGRP_DBOPEN_FAILED);
const char **values;
int ncol;
int rc;
return (SMB_LGRP_INVALID_ARG);
return (SMB_LGRP_NO_MORE);
return (SMB_LGRP_DBEXEC_FAILED);
return (SMB_LGRP_DB_ERROR);
for (i = 0; i < ncol; i++) {
return (SMB_LGRP_DB_ERROR);
return (B_FALSE);
return (B_TRUE);
return (B_FALSE);
switch (errno) {
case SMB_LGRP_SUCCESS:
case SMB_LGRP_INVALID_ARG:
case SMB_LGRP_INVALID_MEMBER:
case SMB_LGRP_INVALID_NAME:
case SMB_LGRP_NOT_FOUND:
case SMB_LGRP_EXISTS:
case SMB_LGRP_NO_SID:
case SMB_LGRP_NO_LOCAL_SID:
case SMB_LGRP_SID_NOTLOCAL:
case SMB_LGRP_WKSID:
case SMB_LGRP_NO_MEMORY:
case SMB_LGRP_DB_ERROR:
case SMB_LGRP_DBINIT_ERROR:
case SMB_LGRP_INTERNAL_ERROR:
case SMB_LGRP_MEMBER_IN_GROUP:
case SMB_LGRP_NO_SUCH_PRIV:
case SMB_LGRP_NO_SUCH_DOMAIN:
case SMB_LGRP_PRIV_HELD:
case SMB_LGRP_PRIV_NOT_HELD:
case SMB_LGRP_BAD_DATA:
case SMB_LGRP_NO_MORE:
case SMB_LGRP_DBOPEN_FAILED:
case SMB_LGRP_DBEXEC_FAILED:
case SMB_LGRP_DBINIT_FAILED:
case SMB_LGRP_DOMLKP_FAILED:
case SMB_LGRP_DOMINS_FAILED:
case SMB_LGRP_INSERT_FAILED:
case SMB_LGRP_DELETE_FAILED:
case SMB_LGRP_UPDATE_FAILED:
case SMB_LGRP_LOOKUP_FAILED:
static boolean_t
smb_lgrp_start(void)
char *supported_bg[] =
char *lsid_str;
return (SMB_LGRP_NO_LOCAL_SID);
return (SMB_LGRP_NO_LOCAL_SID);
return (rc);
for (i = 0; i < ngrp; i++) {
return (SMB_LGRP_SUCCESS);
smb_lgrp_stop(void)
static sqlite *
return (db);
if (db) {
smb_lgrp_db_init(void)
return (SMB_LGRP_DBOPEN_FAILED);
return (SMB_LGRP_DBEXEC_FAILED);
case SQLITE_ERROR:
&errmsg);
case SQLITE_OK:
&errmsg);
NULL);
return (rc);
&errmsg);
return (rc);
char *sql;
char **result;
return (SMB_LGRP_DBOPEN_FAILED);
switch (key) {
case SMB_LGRP_GTBL_NAME:
case SMB_LGRP_GTBL_SIDRID:
return (SMB_LGRP_INVALID_ARG);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_LOOKUP_FAILED);
if (nrow == 0) {
return (SMB_LGRP_NOT_FOUND);
return (SMB_LGRP_DB_ERROR);
return (rc);
static boolean_t
char *sql;
char **result;
int rc;
return (NULL);
gname);
return (B_FALSE);
return (nrow != 0);
char *sql;
char **result;
int rc;
*count = 0;
return (SMB_LGRP_DBOPEN_FAILED);
dom_idx);
return (SMB_LGRP_LOOKUP_FAILED);
return (SMB_LGRP_DB_ERROR);
return (SMB_LGRP_SUCCESS);
char *sql;
int dom_idx;
int rc;
return (SMB_LGRP_DBOPEN_FAILED);
return (SMB_LGRP_NO_MEMORY);
return (rc);
char *sql;
int rc;
return (SMB_LGRP_DBOPEN_FAILED);
return (SMB_LGRP_NO_MEMORY);
return (rc);
char *sql;
int rc;
return (SMB_LGRP_DBOPEN_FAILED);
return (SMB_LGRP_NOT_FOUND);
switch (col_id) {
case SMB_LGRP_GTBL_NAME:
return (SMB_LGRP_EXISTS);
case SMB_LGRP_GTBL_CMNT:
return (SMB_LGRP_INVALID_ARG);
return (SMB_LGRP_NO_MEMORY);
return (rc);
int flags)
char *sql;
char **result;
int rc;
return (SMB_LGRP_DBOPEN_FAILED);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_LOOKUP_FAILED);
if (nrow == 0) {
return (SMB_LGRP_NOT_FOUND);
return (SMB_LGRP_DB_ERROR);
return (rc);
switch (flags) {
case SMB_LGRP_DB_ADDMEMBER:
case SMB_LGRP_DB_DELMEMBER:
return (rc);
return (SMB_LGRP_NO_MEMORY);
return (rc);
char *sql;
char **result;
int rc;
return (SMB_LGRP_DBOPEN_FAILED);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_LOOKUP_FAILED);
if (nrow == 0) {
return (SMB_LGRP_NOT_FOUND);
return (SMB_LGRP_DB_ERROR);
if (enable)
return (rc);
gname);
return (SMB_LGRP_NO_MEMORY);
return (rc);
char *sql;
int rc;
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_DOMINS_FAILED);
if (dom_idx)
return (SMB_LGRP_SUCCESS);
char **result;
char *sql;
int rc;
return (SMB_LGRP_INTERNAL_ERROR);
return (SMB_LGRP_NO_MEMORY);
sidstr);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_DOMLKP_FAILED);
switch (nrow) {
return (SMB_LGRP_SUCCESS);
return (SMB_LGRP_DB_ERROR);
char **result;
char *sql;
int rc;
dom_idx);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_DOMLKP_FAILED);
switch (nrow) {
return (rc);
char *sql;
int rc;
return (SMB_LGRP_NO_MEMORY);
return (rc);
char *in_list;
char *out_list;
int in_size;
int out_size;
int mid_hexsz;
return (SMB_LGRP_MEMBER_IN_GROUP);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_SUCCESS);
char *in_list;
char *out_list;
int in_size;
int out_size;
int mid_hexsz;
int out_cnt;
return (SMB_LGRP_MEMBER_NOT_IN_GROUP);
return (SMB_LGRP_NO_MEMORY);
out_cnt++;
return (SMB_LGRP_MEMBER_NOT_IN_GROUP);
return (SMB_LGRP_SUCCESS);
int i, size;
return (SMB_LGRP_PRIV_HELD);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_SUCCESS);
int i, size;
return (SMB_LGRP_PRIV_NOT_HELD);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_PRIV_NOT_HELD);
return (SMB_LGRP_SUCCESS);
assert(0);
return (SMB_LGRP_BAD_DATA);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_SUCCESS);
int mids_size;
int i, rc;
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_DB_ERROR);
return (SMB_LGRP_SUCCESS);
int rc;
return (SMB_LGRP_SUCCESS);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_NO_MEMORY);
return (rc);
return (rc);
return (SMB_LGRP_SUCCESS);
static boolean_t
static char *invalid_chars =
int len, i;
return (B_FALSE);
return (B_FALSE);
return (B_FALSE);
for (i = 0; i < len; i++)
return (B_FALSE);
return (B_TRUE);
int id_type;
int rc;
return (SMB_LGRP_NO_SID);
return (SMB_LGRP_SID_NOTLOCAL);
return (SMB_LGRP_SUCCESS);
return (SMB_LGRP_DB_ERROR);
return (SMB_LGRP_NO_MEMORY);
return (SMB_LGRP_SUCCESS);