Skip to content

Commit

Permalink
don't allow unresolved functions at runtime
Browse files Browse the repository at this point in the history
because otherwise xlat_resolve() will call xlat_bootstrap_func(),
which modifies the xlat_inst_tree at runtime, from a child thread
  • Loading branch information
alandekok committed Oct 8, 2023
1 parent 7cff2ec commit 24c3241
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/lib/unlang/xlat_tokenize.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ static inline int xlat_tokenize_function_mono(xlat_exp_head_t *head,
*/
node = xlat_exp_alloc(head, XLAT_FUNC, fr_sbuff_current(&m_s), fr_sbuff_behind(&m_s));
if (!func) {
if (!t_rules || !t_rules->attr.allow_unresolved) {
if (!t_rules || !t_rules->attr.allow_unresolved || t_rules->at_runtime) {
fr_strerror_const("Unresolved expansion functions are not allowed here");
goto bad_function;
}
Expand Down Expand Up @@ -545,7 +545,7 @@ int xlat_tokenize_function_args(xlat_exp_head_t *head, fr_sbuff_t *in,
*/
node = xlat_exp_alloc(head, XLAT_FUNC, fr_sbuff_current(&m_s), fr_sbuff_behind(&m_s));
if (!func) {
if (!t_rules || !t_rules->attr.allow_unresolved) {
if (!t_rules || !t_rules->attr.allow_unresolved || t_rules->at_runtime) {
fr_strerror_const("Unresolved expansion functions are not allowed here");
goto bad_function;
}
Expand Down Expand Up @@ -705,7 +705,7 @@ static int xlat_tokenize_function_new(xlat_exp_head_t *head, fr_sbuff_t *in, tmp
*/
node = xlat_exp_alloc(head, XLAT_FUNC, fr_sbuff_current(&m_s), fr_sbuff_behind(&m_s));
if (!func) {
if (!t_rules || !t_rules->attr.allow_unresolved) {
if (!t_rules || !t_rules->attr.allow_unresolved|| t_rules->at_runtime) {
fr_strerror_const("Unresolved expansion functions are not allowed here");
fr_sbuff_set(in, &m_s); /* backtrack */
fr_sbuff_marker_release(&m_s);
Expand Down

0 comments on commit 24c3241

Please sign in to comment.