fr_pair_t *vp;
char const *value = uctx;
- vp = fr_pair_afrom_da(ctx, tmpl_attr_tail_da(map->lhs));
+ vp = fr_pair_afrom_da_nested(ctx, out, tmpl_attr_tail_da(map->lhs));
if (!vp) return -1;
/*
*/
if (fr_pair_value_from_str(vp, value, strlen(value), NULL, true) < 0) {
RPEDEBUG("Failed parsing value \"%pV\" for attribute %s",
- fr_box_strvalue_buffer(value), tmpl_attr_tail_da(map->lhs)->name);
- talloc_free(vp);
-
+ fr_box_strvalue_buffer(value), vp->da->name);
return -1;
}
- fr_pair_append(out, vp);
-
return 0;
}
my_list = &(*relative_vp)->vp_group;
my_ctx = *relative_vp;
+
+ MEM(vp = fr_pair_afrom_da(my_ctx, da));
+ fr_pair_append(my_list, vp);
} else {
/*
* Search in our local dictionary
my_list = out;
my_ctx = ctx;
+
+ MEM(vp = fr_pair_afrom_da_nested(my_ctx, my_list, da));
}
- MEM(vp = fr_pair_afrom_da(my_ctx, da));
vp->op = op;
if ((vp->vp_type == FR_TYPE_TLV) && !*value) {
} else {
if (fr_pair_value_from_str(vp, value, strlen(value), NULL, true) < 0) {
RPEDEBUG("Error parsing value");
-
- talloc_free(vp);
return -1;
}
}
- /*
- * Add the pair into the packet
- */
- fr_pair_append(my_list, vp);
-
/*
* Update the relative vp.
*/