}
-static char *xlat_getvp(TALLOC_CTX *ctx, REQUEST *request, value_pair_tmpl_t const *vpt, bool return_null)
+static char *xlat_getvp(TALLOC_CTX *ctx, REQUEST *request, value_pair_tmpl_t const *vpt,
+ bool escape, bool return_null)
{
VALUE_PAIR *vp = NULL, *virtual = NULL;
RADIUS_PACKET *packet = NULL;
char *ret = NULL;
int err;
+ char quote = escape ? '"' : '\0';
+
vp_cursor_t cursor;
/*
char *p, *q;
if (!fr_cursor_current(&cursor)) return NULL;
- p = vp_aprints_value(ctx, vp, '"');
+ p = vp_aprints_value(ctx, vp, quote);
if (!p) return NULL;
while ((vp = tmpl_cursor_next(&cursor, vpt)) != NULL) {
- q = vp_aprints_value(ctx, vp, '"');
+ q = vp_aprints_value(ctx, vp, quote);
if (!q) return NULL;
p = talloc_strdup_append(p, ",");
p = talloc_strdup_append(p, q);
}
print:
- ret = vp_aprints_value(ctx, vp, '"');
+ ret = vp_aprints_value(ctx, vp, quote);
finish:
talloc_free(virtual);
/*
* Some attributes are virtual <sigh>
*/
- str = xlat_getvp(ctx, request, &node->attr, true);
+ str = xlat_getvp(ctx, request, &node->attr, escape ? false : true, true);
if (str) {
XLAT_DEBUG("EXPAND attr %s", node->attr.tmpl_da->name);
XLAT_DEBUG(" ---> %s", str);