|
|
049d966 |
diff -rup original/common/sudo_debug.c new/common/sudo_debug.c
|
|
|
049d966 |
--- original/common/sudo_debug.c 2012-05-15 18:22:01.000000000 +0200
|
|
|
049d966 |
+++ new/common/sudo_debug.c 2012-07-17 10:24:05.389397245 +0200
|
|
|
049d966 |
@@ -101,6 +101,7 @@ const char *const sudo_debug_subsystems[
|
|
|
049d966 |
"perms",
|
|
|
049d966 |
"plugin",
|
|
|
049d966 |
"hooks",
|
|
|
049d966 |
+ "sssd",
|
|
|
049d966 |
NULL
|
|
|
049d966 |
};
|
|
|
049d966 |
|
|
|
049d966 |
diff -rup original/include/sudo_debug.h new/include/sudo_debug.h
|
|
|
049d966 |
--- original/include/sudo_debug.h 2012-05-15 18:22:02.000000000 +0200
|
|
|
049d966 |
+++ new/include/sudo_debug.h 2012-07-17 10:49:43.470809390 +0200
|
|
|
049d966 |
@@ -71,6 +71,7 @@
|
|
|
049d966 |
#define SUDO_DEBUG_PERMS (23<<6) /* uid/gid swapping functions */
|
|
|
049d966 |
#define SUDO_DEBUG_PLUGIN (24<<6) /* main plugin functions */
|
|
|
049d966 |
#define SUDO_DEBUG_HOOKS (25<<6) /* hook functions */
|
|
|
049d966 |
+#define SUDO_DEBUG_SSSD (26<<6) /* sudoers SSSD */
|
|
|
049d966 |
#define SUDO_DEBUG_ALL 0xfff0 /* all subsystems */
|
|
|
049d966 |
|
|
|
049d966 |
/* Flag to include string version of errno in debug info. */
|
|
|
049d966 |
diff -rup original/plugins/sudoers/sssd.c new/plugins/sudoers/sssd.c
|
|
|
049d966 |
--- original/plugins/sudoers/sssd.c 2012-07-17 10:13:42.366133003 +0200
|
|
|
049d966 |
+++ new/plugins/sudoers/sssd.c 2012-07-17 10:24:05.383397175 +0200
|
|
|
049d966 |
@@ -86,7 +86,7 @@ static struct sss_sudo_result *sudo_sss_
|
|
|
049d966 |
static void sudo_sss_attrcpy(struct sss_sudo_attr *dst, const struct sss_sudo_attr *src)
|
|
|
049d966 |
{
|
|
|
049d966 |
int i;
|
|
|
049d966 |
- debug_decl(sudo_sss_attrcpy, SUDO_DEBUG_LDAP)
|
|
|
049d966 |
+ debug_decl(sudo_sss_attrcpy, SUDO_DEBUG_SSSD)
|
|
|
049d966 |
|
|
|
049d966 |
DPRINTF(3, "dst=%p, src=%p", dst, src);
|
|
|
049d966 |
DPRINTF(2, "emalloc: cnt=%d", src->num_values);
|
|
|
049d966 |
@@ -104,8 +104,8 @@ static void sudo_sss_attrcpy(struct sss_
|
|
|
049d966 |
static void sudo_sss_rulecpy(struct sss_sudo_rule *dst, const struct sss_sudo_rule *src)
|
|
|
049d966 |
{
|
|
|
049d966 |
int i;
|
|
|
049d966 |
- debug_decl(sudo_sss_rulecpy, SUDO_DEBUG_LDAP)
|
|
|
049d966 |
-
|
|
|
049d966 |
+ debug_decl(sudo_sss_rulecpy, SUDO_DEBUG_SSSD)
|
|
|
049d966 |
+
|
|
|
049d966 |
DPRINTF(3, "dst=%p, src=%p", dst, src);
|
|
|
049d966 |
DPRINTF(2, "emalloc: cnt=%d", src->num_attrs);
|
|
|
049d966 |
|
|
|
049d966 |
@@ -130,7 +130,7 @@ static struct sss_sudo_result *sudo_sss_
|
|
|
049d966 |
{
|
|
|
049d966 |
struct sss_sudo_result *out_res;
|
|
|
049d966 |
int i, l, r;
|
|
|
049d966 |
- debug_decl(sudo_sss_filter_result, SUDO_DEBUG_LDAP)
|
|
|
049d966 |
+ debug_decl(sudo_sss_filter_result, SUDO_DEBUG_SSSD)
|
|
|
049d966 |
|
|
|
049d966 |
DPRINTF(3, "in_res=%p, count=%u, act=%s",
|
|
|
049d966 |
in_res, in_res->num_rules, act == _SUDO_SSS_FILTER_EXCLUDE ? "EXCLUDE" : "INCLUDE");
|
|
|
049d966 |
@@ -193,7 +193,7 @@ struct sudo_nss sudo_nss_sss = {
|
|
|
049d966 |
static int sudo_sss_open(struct sudo_nss *nss)
|
|
|
049d966 |
{
|
|
|
049d966 |
struct sudo_sss_handle *handle;
|
|
|
049d966 |
- debug_decl(sudo_sss_open, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_open, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
/* Create a handle container. */
|
|
|
049d966 |
handle = emalloc(sizeof(struct sudo_sss_handle));
|
|
|
049d966 |
@@ -209,7 +209,7 @@ static int sudo_sss_open(struct sudo_nss
|
|
|
049d966 |
// ok
|
|
|
049d966 |
static int sudo_sss_close(struct sudo_nss *nss)
|
|
|
049d966 |
{
|
|
|
049d966 |
- debug_decl(sudo_sss_close, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_close, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
efree(nss->handle);
|
|
|
049d966 |
debug_return_int(0);
|
|
|
049d966 |
}
|
|
|
049d966 |
@@ -217,7 +217,7 @@ static int sudo_sss_close(struct sudo_ns
|
|
|
049d966 |
// ok
|
|
|
049d966 |
static int sudo_sss_parse(struct sudo_nss *nss)
|
|
|
049d966 |
{
|
|
|
049d966 |
- debug_decl(sudo_sss_parse, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_parse, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
debug_return_int(0);
|
|
|
049d966 |
}
|
|
|
049d966 |
|
|
|
049d966 |
@@ -229,7 +229,7 @@ static int sudo_sss_setdefs(struct sudo_
|
|
|
049d966 |
struct sss_sudo_rule *sss_rule;
|
|
|
049d966 |
uint32_t sss_error;
|
|
|
049d966 |
int i;
|
|
|
049d966 |
- debug_decl(sudo_sss_setdefs, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_setdefs, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (handle == NULL)
|
|
|
049d966 |
debug_return_int(-1);
|
|
|
049d966 |
@@ -257,7 +257,7 @@ static int sudo_sss_setdefs(struct sudo_
|
|
|
049d966 |
static int sudo_sss_checkpw(struct sudo_nss *nss, struct passwd *pw)
|
|
|
049d966 |
{
|
|
|
049d966 |
struct sudo_sss_handle *handle = nss->handle;
|
|
|
049d966 |
- debug_decl(sudo_sss_checkpw, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_checkpw, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (pw->pw_name != handle->pw->pw_name ||
|
|
|
049d966 |
pw->pw_uid != handle->pw->pw_uid)
|
|
|
049d966 |
@@ -278,13 +278,13 @@ sudo_sss_check_runas_user(struct sss_sud
|
|
|
049d966 |
char **val_array = NULL;
|
|
|
049d966 |
char *val;
|
|
|
049d966 |
int ret = false, i;
|
|
|
049d966 |
- debug_decl(sudo_sss_check_runas_user, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_check_runas_user, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (!runas_pw)
|
|
|
049d966 |
debug_return_int(UNSPEC);
|
|
|
049d966 |
|
|
|
049d966 |
/* get the runas user from the entry */
|
|
|
049d966 |
- switch (sss_sudo_get_values(sss_rule, "sudoRunAsUser", &val_array))
|
|
|
049d966 |
+ switch (sss_sudo_get_values(sss_rule, "sudoRunAsUser", &val_array))
|
|
|
049d966 |
{
|
|
|
049d966 |
case 0:
|
|
|
049d966 |
break;
|
|
|
049d966 |
@@ -315,18 +315,18 @@ sudo_sss_check_runas_user(struct sss_sud
|
|
|
049d966 |
|
|
|
049d966 |
/*
|
|
|
049d966 |
* BUG:
|
|
|
049d966 |
- *
|
|
|
049d966 |
+ *
|
|
|
049d966 |
* if runas is not specified on the command line, the only information
|
|
|
049d966 |
* as to which user to run as is in the runas_default option. We should
|
|
|
049d966 |
* check to see if we have the local option present. Unfortunately we
|
|
|
049d966 |
* don't parse these options until after this routine says yes or no.
|
|
|
049d966 |
* The query has already returned, so we could peek at the attribute
|
|
|
049d966 |
* values here though.
|
|
|
049d966 |
- *
|
|
|
049d966 |
+ *
|
|
|
049d966 |
* For now just require users to always use -u option unless its set
|
|
|
049d966 |
* in the global defaults. This behaviour is no different than the global
|
|
|
049d966 |
* /etc/sudoers.
|
|
|
049d966 |
- *
|
|
|
049d966 |
+ *
|
|
|
049d966 |
* Sigh - maybe add this feature later
|
|
|
049d966 |
*/
|
|
|
049d966 |
|
|
|
049d966 |
@@ -381,7 +381,7 @@ sudo_sss_check_runas_group(struct sss_su
|
|
|
049d966 |
char **val_array = NULL;
|
|
|
049d966 |
char *val;
|
|
|
049d966 |
int ret = false, i;
|
|
|
049d966 |
- debug_decl(sudo_sss_check_runas_group, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_check_runas_group, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
/* runas_gr is only set if the user specified the -g flag */
|
|
|
049d966 |
if (!runas_gr)
|
|
|
049d966 |
@@ -424,7 +424,7 @@ static int
|
|
|
049d966 |
sudo_sss_check_runas(struct sss_sudo_rule *rule)
|
|
|
049d966 |
{
|
|
|
049d966 |
int ret;
|
|
|
049d966 |
- debug_decl(sudo_sss_check_runas, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_check_runas, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (rule == NULL)
|
|
|
049d966 |
debug_return_int(false);
|
|
|
049d966 |
@@ -439,7 +439,7 @@ static int sudo_sss_check_host(struct ss
|
|
|
049d966 |
{
|
|
|
049d966 |
char **val_array, *val;
|
|
|
049d966 |
int ret = false, i;
|
|
|
049d966 |
- debug_decl(sudo_sss_check_host, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_check_host, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (rule == NULL)
|
|
|
049d966 |
debug_return_int(ret);
|
|
|
049d966 |
@@ -479,7 +479,7 @@ static int sudo_sss_check_host(struct ss
|
|
|
049d966 |
static int sudo_sss_result_filterp(struct sss_sudo_rule *rule, void *unused)
|
|
|
049d966 |
{
|
|
|
049d966 |
(void)unused;
|
|
|
049d966 |
- debug_decl(sudo_sss_result_filterp, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_result_filterp, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (sudo_sss_check_host(rule))
|
|
|
049d966 |
debug_return_int(1);
|
|
|
049d966 |
@@ -492,7 +492,7 @@ static struct sss_sudo_result *sudo_sss_
|
|
|
049d966 |
struct sudo_sss_handle *handle = nss->handle;
|
|
|
049d966 |
struct sss_sudo_result *u_sss_result, *f_sss_result;
|
|
|
049d966 |
uint32_t sss_error = 0, ret;
|
|
|
049d966 |
- debug_decl(sudo_sss_result_get, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_result_get, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (sudo_sss_checkpw(nss, pw) != 0)
|
|
|
049d966 |
debug_return_ptr(NULL);
|
|
|
049d966 |
@@ -558,7 +558,7 @@ sudo_sss_check_bool(struct sss_sudo_rule
|
|
|
049d966 |
{
|
|
|
049d966 |
char ch, *var, **val_array = NULL;
|
|
|
049d966 |
int i, ret = UNSPEC;
|
|
|
049d966 |
- debug_decl(sudo_sss_check_bool, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_check_bool, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (rule == NULL)
|
|
|
049d966 |
debug_return_int(ret);
|
|
|
049d966 |
@@ -601,7 +601,7 @@ sudo_sss_check_command(struct sss_sudo_r
|
|
|
049d966 |
char **val_array = NULL, *val;
|
|
|
049d966 |
char *allowed_cmnd, *allowed_args;
|
|
|
049d966 |
int i, foundbang, ret = UNSPEC;
|
|
|
049d966 |
- debug_decl(sudo_sss_check_command, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_check_command, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (rule == NULL)
|
|
|
049d966 |
debug_return_int(ret);
|
|
|
049d966 |
@@ -670,7 +670,7 @@ sudo_sss_parse_options(struct sss_sudo_r
|
|
|
049d966 |
int i;
|
|
|
049d966 |
char op, *v, *val;
|
|
|
049d966 |
char **val_array = NULL;
|
|
|
049d966 |
- debug_decl(sudo_sss_parse_options, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_parse_options, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (rule == NULL)
|
|
|
049d966 |
debug_return;
|
|
|
049d966 |
@@ -726,7 +726,7 @@ static int sudo_sss_lookup(struct sudo_n
|
|
|
049d966 |
struct sss_sudo_result *sss_result = NULL;
|
|
|
049d966 |
struct sss_sudo_rule *rule;
|
|
|
049d966 |
uint32_t i, state = 0;
|
|
|
049d966 |
- debug_decl(sudo_sss_lookup, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_lookup, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
/* Fetch list of sudoRole entries that match user and host. */
|
|
|
049d966 |
sss_result = sudo_sss_result_get(nss, sudo_user.pw, &state);
|
|
|
049d966 |
@@ -738,7 +738,7 @@ static int sudo_sss_lookup(struct sudo_n
|
|
|
049d966 |
if (pwflag) {
|
|
|
049d966 |
int doauth = UNSPEC;
|
|
|
049d966 |
int matched = UNSPEC;
|
|
|
049d966 |
- enum def_tuple pwcheck =
|
|
|
049d966 |
+ enum def_tuple pwcheck =
|
|
|
049d966 |
(pwflag == -1) ? never : sudo_defs_table[pwflag].sd_un.tuple;
|
|
|
049d966 |
|
|
|
049d966 |
DPRINTF(2, "perform search for pwflag %d", pwflag);
|
|
|
049d966 |
@@ -842,7 +842,7 @@ static int sudo_sss_display_cmnd(struct
|
|
|
049d966 |
struct sss_sudo_result *sss_result = NULL;
|
|
|
049d966 |
struct sss_sudo_rule *rule;
|
|
|
049d966 |
int i, found = false;
|
|
|
049d966 |
- debug_decl(sudo_sss_display_cmnd, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_display_cmnd, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (handle == NULL)
|
|
|
049d966 |
goto done;
|
|
|
049d966 |
@@ -893,7 +893,7 @@ static int sudo_sss_display_defaults(str
|
|
|
049d966 |
char *prefix, *val, **val_array = NULL;
|
|
|
049d966 |
int count = 0, i, j;
|
|
|
049d966 |
|
|
|
049d966 |
- debug_decl(sudo_sss_display_defaults, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_display_defaults, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (handle == NULL)
|
|
|
049d966 |
goto done;
|
|
|
049d966 |
@@ -934,7 +934,7 @@ static int sudo_sss_display_defaults(str
|
|
|
049d966 |
prefix = ", ";
|
|
|
049d966 |
count++;
|
|
|
049d966 |
}
|
|
|
049d966 |
-
|
|
|
049d966 |
+
|
|
|
049d966 |
sss_sudo_free_values(val_array);
|
|
|
049d966 |
val_array = NULL;
|
|
|
049d966 |
}
|
|
|
049d966 |
@@ -948,7 +948,7 @@ done:
|
|
|
049d966 |
static int sudo_sss_display_bound_defaults(struct sudo_nss *nss,
|
|
|
049d966 |
struct passwd *pw, struct lbuf *lbuf)
|
|
|
049d966 |
{
|
|
|
049d966 |
- debug_decl(sudo_sss_display_bound_defaults, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_display_bound_defaults, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
debug_return_int(0);
|
|
|
049d966 |
}
|
|
|
049d966 |
|
|
|
049d966 |
@@ -956,7 +956,7 @@ static int sudo_sss_display_entry_long(s
|
|
|
049d966 |
{
|
|
|
049d966 |
char **val_array = NULL;
|
|
|
049d966 |
int count = 0, i;
|
|
|
049d966 |
- debug_decl(sudo_sss_display_entry_long, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_display_entry_long, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
/* get the RunAsUser Values from the entry */
|
|
|
049d966 |
lbuf_append(lbuf, " RunAsUsers: ");
|
|
|
049d966 |
@@ -1051,7 +1051,7 @@ static int sudo_sss_display_entry_short(
|
|
|
049d966 |
{
|
|
|
049d966 |
char **val_array = NULL;
|
|
|
049d966 |
int count = 0, i;
|
|
|
049d966 |
- debug_decl(sudo_sss_display_entry_short, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_display_entry_short, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
lbuf_append(lbuf, " (");
|
|
|
049d966 |
|
|
|
049d966 |
@@ -1164,7 +1164,7 @@ static int sudo_sss_display_privs(struct
|
|
|
049d966 |
struct sss_sudo_result *sss_result = NULL;
|
|
|
049d966 |
struct sss_sudo_rule *rule;
|
|
|
049d966 |
unsigned int i, count = 0;
|
|
|
049d966 |
- debug_decl(sudo_sss_display_privs, SUDO_DEBUG_LDAP);
|
|
|
049d966 |
+ debug_decl(sudo_sss_display_privs, SUDO_DEBUG_SSSD);
|
|
|
049d966 |
|
|
|
049d966 |
if (handle == NULL)
|
|
|
049d966 |
debug_return_int(-1);
|