Skip to content

Commit

Permalink
lib-sieve: variables extension: Add pointer to variables extension to…
Browse files Browse the repository at this point in the history
… modifier instance.
  • Loading branch information
stephanbosch committed Jun 28, 2018
1 parent 3ffb5a4 commit 61baade
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src/lib-sieve/plugins/mime/cmd-extracttext.c
Expand Up @@ -307,7 +307,7 @@ static int cmd_extracttext_operation_execute
/* Modifiers */

if ( (ret=sieve_variables_modifiers_code_read
(renv, address, &modifiers)) <= 0 )
(renv, ectx->var_ext, address, &modifiers)) <= 0 )
return ret;

/*
Expand Down
2 changes: 1 addition & 1 deletion src/lib-sieve/plugins/variables/cmd-set.c
Expand Up @@ -194,7 +194,7 @@ static int cmd_set_operation_execute
return ret;

if ( (ret=sieve_variables_modifiers_code_read
(renv, address, &modifiers)) <= 0 )
(renv, this_ext, address, &modifiers)) <= 0 )
return ret;

/*
Expand Down
9 changes: 6 additions & 3 deletions src/lib-sieve/plugins/variables/ext-variables-modifiers.c
Expand Up @@ -100,6 +100,7 @@ const struct sieve_variables_modifier *ext_variables_modifier_create_instance
pool = sieve_command_pool(cmd);
modf = p_new(pool, struct sieve_variables_modifier, 1);
modf->object = object;
modf->var_ext = var_ext;
modf->def = (const struct sieve_variables_modifier_def *) object.def;

return modf;
Expand Down Expand Up @@ -456,8 +457,9 @@ bool sieve_variables_modifiers_code_dump
return TRUE;
}

int sieve_variables_modifiers_code_read
(const struct sieve_runtime_env *renv, sieve_size_t *address,
int sieve_variables_modifiers_code_read(
const struct sieve_runtime_env *renv,
const struct sieve_extension *var_ext, sieve_size_t *address,
ARRAY_TYPE(sieve_variables_modifier) *modifiers)
{
unsigned int lprec, mdfs, i;
Expand All @@ -473,7 +475,8 @@ int sieve_variables_modifiers_code_read
for ( i = 0; i < mdfs; i++ ) {
struct sieve_variables_modifier modf;

if ( !ext_variables_opr_modifier_read(renv, address, &modf) )
if ( !ext_variables_opr_modifier_read(renv, var_ext,
address, &modf) )
return SIEVE_EXEC_BIN_CORRUPT;
if ( modf.def != NULL ) {
if ( modf.def->precedence >= lprec ) {
Expand Down
9 changes: 6 additions & 3 deletions src/lib-sieve/plugins/variables/ext-variables-modifiers.h
Expand Up @@ -39,9 +39,11 @@ static inline void ext_variables_opr_modifier_emit
sieve_opr_object_emit(sblock, ext, &modf_def->obj_def);
}

static inline bool ext_variables_opr_modifier_read
(const struct sieve_runtime_env *renv, sieve_size_t *address,
struct sieve_variables_modifier *modf)
static inline bool
ext_variables_opr_modifier_read(const struct sieve_runtime_env *renv,
const struct sieve_extension *var_ext,
sieve_size_t *address,
struct sieve_variables_modifier *modf)
{
if ( !sieve_opr_object_read
(renv, &sieve_variables_modifier_operand_class, address, &modf->object) ) {
Expand All @@ -50,6 +52,7 @@ static inline bool ext_variables_opr_modifier_read
}

modf->def = (const struct sieve_variables_modifier_def *) modf->object.def;
modf->var_ext = var_ext;
return TRUE;
}

Expand Down
8 changes: 5 additions & 3 deletions src/lib-sieve/plugins/variables/sieve-ext-variables.h
Expand Up @@ -298,6 +298,7 @@ struct sieve_variables_modifier_def {

struct sieve_variables_modifier {
struct sieve_object object;
const struct sieve_extension *var_ext;

const struct sieve_variables_modifier_def *def;
};
Expand Down Expand Up @@ -339,9 +340,10 @@ extern const struct sieve_operand_class

bool sieve_variables_modifiers_code_dump
(const struct sieve_dumptime_env *denv, sieve_size_t *address);
int sieve_variables_modifiers_code_read
(const struct sieve_runtime_env *renv, sieve_size_t *address,
ARRAY_TYPE(sieve_variables_modifier) *modifiers);
int sieve_variables_modifiers_code_read(
const struct sieve_runtime_env *renv,
const struct sieve_extension *var_ext, sieve_size_t *address,
ARRAY_TYPE(sieve_variables_modifier) *modifiers);

/* Application */

Expand Down

0 comments on commit 61baade

Please sign in to comment.