mirror of
https://github.com/sudo-project/sudo.git
synced 2025-08-28 12:57:50 +00:00
Add support for "plugin" defaults type.
This commit is contained in:
parent
c1708f0cf1
commit
1c13b8a628
@ -71,6 +71,7 @@ static bool store_tuple(const char *str, struct sudo_defs_types *def);
|
|||||||
static bool store_uint(const char *str, struct sudo_defs_types *def);
|
static bool store_uint(const char *str, struct sudo_defs_types *def);
|
||||||
static bool store_timespec(const char *str, struct sudo_defs_types *def);
|
static bool store_timespec(const char *str, struct sudo_defs_types *def);
|
||||||
static bool store_rlimit(const char *str, struct sudo_defs_types *def);
|
static bool store_rlimit(const char *str, struct sudo_defs_types *def);
|
||||||
|
static bool store_plugin(const char *str, struct sudo_defs_types *def, int op);
|
||||||
static bool list_op(const char *str, size_t, struct list_members *list, enum list_ops op);
|
static bool list_op(const char *str, size_t, struct list_members *list, enum list_ops op);
|
||||||
static bool valid_path(const struct sudoers_context *ctx, struct sudo_defs_types *def, const char *val, const char *file, int line, int column, bool quiet);
|
static bool valid_path(const struct sudoers_context *ctx, struct sudo_defs_types *def, const char *val, const char *file, int line, int column, bool quiet);
|
||||||
|
|
||||||
@ -307,6 +308,9 @@ parse_default_entry(const struct sudoers_context *ctx,
|
|||||||
case T_TIMESPEC:
|
case T_TIMESPEC:
|
||||||
rc = store_timespec(val, def);
|
rc = store_timespec(val, def);
|
||||||
break;
|
break;
|
||||||
|
case T_PLUGIN:
|
||||||
|
rc = store_plugin(val, def, op);
|
||||||
|
break;
|
||||||
case T_RLIMIT:
|
case T_RLIMIT:
|
||||||
rc = store_rlimit(val, def);
|
rc = store_rlimit(val, def);
|
||||||
break;
|
break;
|
||||||
@ -1080,6 +1084,22 @@ store_list(const char *str, struct sudo_defs_types *def, int op)
|
|||||||
debug_return_bool(true);
|
debug_return_bool(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
store_plugin(const char *str, struct sudo_defs_types *def, int op)
|
||||||
|
{
|
||||||
|
const enum list_ops lop = op == '-' ? delete : add;
|
||||||
|
debug_decl(store_plugin, SUDOERS_DEBUG_DEFAULTS);
|
||||||
|
|
||||||
|
/* Remove all old members. */
|
||||||
|
if (op == false || op == true)
|
||||||
|
(void)list_op(NULL, 0, &def->sd_un.list, freeall);
|
||||||
|
|
||||||
|
if (!list_op(str, strlen(str), &def->sd_un.list, lop))
|
||||||
|
debug_return_bool(false);
|
||||||
|
|
||||||
|
debug_return_bool(true);
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
store_syslogfac(const char *str, struct sudo_defs_types *def)
|
store_syslogfac(const char *str, struct sudo_defs_types *def)
|
||||||
{
|
{
|
||||||
|
@ -111,6 +111,8 @@ struct early_default {
|
|||||||
#define T_TIMEOUT 0x011
|
#define T_TIMEOUT 0x011
|
||||||
#undef T_RLIMIT
|
#undef T_RLIMIT
|
||||||
#define T_RLIMIT 0x012
|
#define T_RLIMIT 0x012
|
||||||
|
#undef T_PLUGIN
|
||||||
|
#define T_PLUGIN 0x013
|
||||||
#undef T_MASK
|
#undef T_MASK
|
||||||
#define T_MASK 0x0FF
|
#define T_MASK 0x0FF
|
||||||
#undef T_BOOL
|
#undef T_BOOL
|
||||||
|
@ -45,6 +45,7 @@ BEGIN {
|
|||||||
type_map["T_TIMESPEC"] = "tspec"
|
type_map["T_TIMESPEC"] = "tspec"
|
||||||
type_map["T_TIMEOUT"] = "ival"
|
type_map["T_TIMEOUT"] = "ival"
|
||||||
type_map["T_RLIMIT"] = "str"
|
type_map["T_RLIMIT"] = "str"
|
||||||
|
type_map["T_PLUGIN"] = "list"
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
sub(/#.*/, "", $0)
|
sub(/#.*/, "", $0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user