the arguments to the function are grouped. But the actual content
of the arguments is the group contents. It's not the group.
So we can't copy the input groups to the output, that results in
too many groups.
{
fr_value_box_t *vb;
- fr_value_box_list_taint(in);
while ((vb = fr_value_box_list_pop_head(in)) != NULL) {
- fr_dcursor_append(out, vb);
+ fr_value_box_t *child;
+
+ fr_assert(vb->type == FR_TYPE_GROUP);
+
+ while ((child = fr_value_box_list_pop_head(&vb->vb_group)) != NULL) {
+ child->tainted = true;
+
+ fr_dcursor_append(out, child);
+ }
}
return XLAT_ACTION_DONE;