summaryrefslogtreecommitdiffstats
path: root/src/responder/sudo/sudosrv.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder/sudo/sudosrv.h')
-rw-r--r--src/responder/sudo/sudosrv.h67
1 files changed, 64 insertions, 3 deletions
diff --git a/src/responder/sudo/sudosrv.h b/src/responder/sudo/sudosrv.h
index a2b35e6e..b4c68d2d 100644
--- a/src/responder/sudo/sudosrv.h
+++ b/src/responder/sudo/sudosrv.h
@@ -44,9 +44,6 @@
#define SUDO_DP_PATH "/org/freedesktop/sssd/sudo/dataprovider"
#define SUDO_DP_METHOD_QUERY "queryDPService"
-
-#define SSS_SUDO_RESPONDER_HEADER 0x43256
-
#define SSS_SUDO_SBUS_SERVICE_VERSION 0x0001
#define SSS_SUDO_SBUS_SERVICE_NAME "sudo"
@@ -54,6 +51,10 @@
#define CONFDB_SUDO_ENTRY_NEG_TIMEOUT "entry_negative_timeout"
#define CONFDB_SUDO_ID_TIMEOUT "sudo_id_timeout"
+#define SUDO_ALLOW_ACCESS 1
+#define SUDO_DENY_ACCESS 0
+
+
static int sudo_query_validation(DBusMessage *message, struct sbus_connection *conn);
struct sbus_method sudo_methods[] = {
@@ -77,6 +78,29 @@ struct sbus_interface sudo_dp_interface = {
NULL
};
+int command_args_match(char *sudoers_cmnd,
+ char *sudoers_args,
+ char *user_cmnd,
+ char *user_args);
+
+int command_matches_fnmatch(TALLOC_CTX* memctx,
+ char *sudoers_cmnd,
+ char *sudoers_args,
+ char *user_cmnd,
+ char *user_args,
+ char ** safe_cmnd,
+ char ** safe_args);
+
+int command_matches(TALLOC_CTX * memctx,
+ char *sudoers_cmnd,
+ char *sudoers_args,
+ char *user_cmnd,
+ char *user_args,
+ char ** safe_cmnd,
+ char ** safe_args);
+
+
+
struct sudo_ctx {
struct resp_ctx *rctx;
struct sss_nc_ctx *ncache;
@@ -107,12 +131,49 @@ struct sss_sudorule_list
struct sss_sudorule_list *prev;
} ;
+struct sss_sudo_command_list
+{
+ struct ldb_val *values;
+
+ struct sss_sudo_command_list *next;
+ struct sss_sudo_command_list *prev;
+} ;
+
struct sss_valid_sudorules
{
struct ldb_message *default_rule;
struct sss_sudorule_list *non_defaults;
};
+#define FILTER_APPEND_CHECK(filter_in,filter_out, append_str, str_arg) \
+ do { \
+ (filter_out) = talloc_asprintf_append((filter_in), (append_str), (str_arg)); \
+ if (!(filter_out)) { \
+ DEBUG(0, ("Failed to build filter\n")); \
+ ret = ENOMEM; \
+ goto done; \
+ } \
+ }while(0);
+
+
+#define BOOL_STR_TO_INT(bool_str) (!strcmp((bool_str),"TRUE"))?1 : 0 ;
+
+#define CHECK_KEY_AND_SET_MESSAGE_STR(key,str_key,var, value) \
+ do { \
+ if( !strcmp((key),(str_key))){ \
+ (var) = (value); \
+ } \
+ } while (0);
+
+#define CHECK_KEY_AND_SET_MESSAGE_INT(key,str_key,var, value) \
+ do { \
+ if( !strcmp((key),(str_key))){ \
+ (var) = BOOL_STR_TO_INT(value); \
+ } \
+ } while (0);
+
+
+
enum error_types_sudo_responder{
SSS_SUDO_RESPONDER_SUCCESS = 0x01,