mirror of
git://github.com/lxc/lxc
synced 2025-08-29 16:39:49 +00:00
seccomp: fix integer comparisons
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
360df02a57
commit
14551c8c82
@ -93,9 +93,9 @@ static const char *get_action_name(uint32_t action)
|
|||||||
return "invalid action";
|
return "invalid action";
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t get_v2_default_action(char *line)
|
static int32_t get_v2_default_action(char *line)
|
||||||
{
|
{
|
||||||
uint32_t ret_action = -1;
|
int32_t ret_action = -1;
|
||||||
|
|
||||||
while (*line == ' ')
|
while (*line == ' ')
|
||||||
line++;
|
line++;
|
||||||
@ -129,7 +129,7 @@ static uint32_t get_v2_default_action(char *line)
|
|||||||
return ret_action;
|
return ret_action;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t get_v2_action(char *line, uint32_t def_action)
|
static int32_t get_v2_action(char *line, uint32_t def_action)
|
||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
@ -264,13 +264,14 @@ static int parse_v2_rules(char *line, uint32_t def_action,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* read optional action which follows the syscall */
|
/* read optional action which follows the syscall */
|
||||||
rules->action = get_v2_action(tmp, def_action);
|
ret = get_v2_action(tmp, def_action);
|
||||||
if (rules->action == -1) {
|
if (ret == -1) {
|
||||||
ERROR("Failed to interpret action");
|
ERROR("Failed to interpret action");
|
||||||
ret = -1;
|
|
||||||
goto on_error;
|
goto on_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rules->action = ret;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
rules->args_num = 0;
|
rules->args_num = 0;
|
||||||
if (!strchr(tmp, '['))
|
if (!strchr(tmp, '['))
|
||||||
@ -496,7 +497,7 @@ enum lxc_seccomp_rule_status_t {
|
|||||||
static enum lxc_seccomp_rule_status_t do_resolve_add_rule(uint32_t arch, char *line, scmp_filter_ctx ctx,
|
static enum lxc_seccomp_rule_status_t do_resolve_add_rule(uint32_t arch, char *line, scmp_filter_ctx ctx,
|
||||||
struct seccomp_v2_rule *rule)
|
struct seccomp_v2_rule *rule)
|
||||||
{
|
{
|
||||||
int i, nr, ret;
|
int nr, ret;
|
||||||
struct scmp_arg_cmp arg_cmp[6];
|
struct scmp_arg_cmp arg_cmp[6];
|
||||||
|
|
||||||
ret = seccomp_arch_exist(ctx, arch);
|
ret = seccomp_arch_exist(ctx, arch);
|
||||||
@ -543,8 +544,8 @@ static enum lxc_seccomp_rule_status_t do_resolve_add_rule(uint32_t arch, char *l
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(&arg_cmp, 0, sizeof(arg_cmp));
|
memset(&arg_cmp, 0, sizeof(arg_cmp));
|
||||||
for (i = 0; i < rule->args_num; i++) {
|
for (size_t i = 0; i < rule->args_num; i++) {
|
||||||
INFO("arg_cmp[%d]: SCMP_CMP(%u, %llu, %llu, %llu)", i,
|
INFO("arg_cmp[%zu]: SCMP_CMP(%u, %llu, %llu, %llu)", i,
|
||||||
rule->args_value[i].index,
|
rule->args_value[i].index,
|
||||||
(long long unsigned int)rule->args_value[i].op,
|
(long long unsigned int)rule->args_value[i].op,
|
||||||
(long long unsigned int)rule->args_value[i].mask,
|
(long long unsigned int)rule->args_value[i].mask,
|
||||||
@ -618,7 +619,7 @@ static int parse_config_v2(FILE *f, char *line, size_t *line_bufsz, struct lxc_c
|
|||||||
char *p;
|
char *p;
|
||||||
enum lxc_hostarch_t cur_rule_arch, native_arch;
|
enum lxc_hostarch_t cur_rule_arch, native_arch;
|
||||||
bool denylist = false;
|
bool denylist = false;
|
||||||
uint32_t default_policy_action = -1, default_rule_action = -1;
|
int32_t default_policy_action = -1, default_rule_action = -1;
|
||||||
struct seccomp_v2_rule rule;
|
struct seccomp_v2_rule rule;
|
||||||
struct scmp_ctx_info {
|
struct scmp_ctx_info {
|
||||||
uint32_t architectures[3];
|
uint32_t architectures[3];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user