switch (letter) {
case '%':
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
if (fr_value_box_strdup(value, value, NULL, "%", false) < 0) return XLAT_ACTION_FAIL;
break;
}
strftime(buffer, sizeof(buffer), "%d", &ts);
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) return XLAT_ACTION_FAIL;
break;
p = strchr(buffer, '\n');
if (p) *p = '\0';
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) goto error;
}
break;
if (!localtime_r(&when, &ts)) goto error;
strftime(buffer, sizeof(buffer), "%Y%m%d", &ts);
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) goto error;
break;
if (!localtime_r(&when, &ts)) goto error;
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &ts);
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) goto error;
break;
if (!localtime_r(&when, &ts)) goto error;
strftime(buffer, sizeof(buffer), "%Y-%m-%d-%H.%M.%S.000000", &ts);
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) goto error;
break;
* Fixup talloc lineage and assign the
* output of the function to a box.
*/
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
fr_value_box_strsteal(value, value, NULL, str, false);
RDEBUG2("EXPAND %%{%s:%pS}", node->fmt, result_str);
* We unfortunately need to dup the buffer
* because references aren't threadsafe.
*/
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
fr_value_box_strdup_buffer(value, value, NULL, node->fmt, false);
fr_cursor_append(out, value);
continue;
if (slen < 0) goto fail;
if (slen == 0) continue;
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
fr_value_box_strsteal(value, value, NULL, str, false);
fr_cursor_append(out, value);
* we just need to fix up the talloc lineage
* and box it.
*/
- MEM(value = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false));
+ MEM(value = fr_value_box_alloc_null(ctx));
fr_value_box_strsteal(value, value, NULL, str, false);
fr_cursor_append(out, value);
* Otherwise, join the boxes together commas
* FIXME It'd be nice to set a custom delimiter
*/
- result = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false);
+ result = fr_value_box_alloc_null(ctx);
if (!result) {
error:
RPEDEBUG("Failed concatenating input");
buff = fr_value_box_list_asprint(result, *in, ",", '\0');
if (!buff) goto error;
- fr_value_box_strsteal(result, result, NULL, buff, true); /* Fixme - It may not be tainted */
+ fr_value_box_strsteal(result, result, NULL, buff, fr_value_box_list_tainted(*in));
fr_cursor_insert(out, result);
if ((p[0] == '0') && (p[1] == 'x')) p += 2;
if (p == end) return XLAT_ACTION_DONE;
- result = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false);
+ result = fr_value_box_alloc_null(ctx);
if (!result) {
REDEBUG("Failed allocating output");
goto error;