You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/template
Martin Krizek 3980eb8c09
Prevent losing unsafe from lookups (#77609)
* Prevent losing unsafe from lookups

This patch fixes a bug which under certain conditions results in data
returned from lookups not being marked as unsafe.

Each time Templar.do_template is invoked a new AnsibleContext is
created and stored effectively at two places:
1) as an instance variable in templar_obj.cur_context
2) as a local variable called new_context in do_template method of Templar

Due to custom functionality in Ansible's Context that allows for nested
templating it is possible that during resolving variable's value
template/do_template method is called recursively again, again creating
a new context. At that point the problem manifests itself because as
mentioned in 1) above the context is overwriten on the templar object
which means that any subsequent calls to _lookup will use the new
context to mark it as unsafe which is now different to the local
new_context which is used for testing for unsafe property.

The solution to the problem appears to be to restore the original
context inside do_template and also to eliminate the local variable
new_context to prevent problems in the future.

It appears that we don't have a better way of storing the context other
than as some form of global variable and so this appears to be the
"best" solution possible at this point. Hopefully data tagging will be
the solution here.

For more examples see unit and integration tests included in this patch.

Fixes #77535
2 years ago
..
custom_tasks
files template override colon bugfixes (#77495) 3 years ago
meta
role_filter More boilerplate fixes. (#70224) 4 years ago
tasks template override colon bugfixes (#77495) 3 years ago
templates template override colon bugfixes (#77495) 3 years ago
vars
6653.yml Local vars should have highest precedence in AnsibleJ2Vars (#72830) 4 years ago
72262.yml Local vars should have highest precedence in AnsibleJ2Vars (#72830) 4 years ago
72615.yml Require Jinja2 3.0.0 (#75881) 3 years ago
aliases ansible-test - split controller/target testing (#75605) 3 years ago
ansible_managed.cfg
ansible_managed.yml
corner_cases.yml Heisen jinja2_native (#75587) 3 years ago
custom_template.yml
filter_plugins.yml
in_template_overrides.j2 Ensure Jinja2 template header overrides are used (#75306) 3 years ago
in_template_overrides.yml Ensure Jinja2 template header overrides are used (#75306) 3 years ago
lazy_eval.yml Allow for lazy evaluation of Jinja2 expressions (#56116) 3 years ago
runme.sh Allow for lazy evaluation of Jinja2 expressions (#56116) 3 years ago
template.yml
undefined_var_info.yml Provide more information in AnsibleUndefinedVariable (#71666) 4 years ago
unsafe.yml Prevent losing unsafe from lookups (#77609) 2 years ago
unused_vars_include.yml Prevent templating unused variables for {%include%} (#68749) 5 years ago