/* We are not forgiving for debug builds */
fr_assert_fail("Treating invalid return type as fatal");
+#ifdef NDEBUG
+ return false;
+#endif
}
fr_value_box_mark_safe_for(pos, func->return_safe_for); /* Always set this */
count++;
switch (letter) {
case '%':
MEM(value = fr_value_box_alloc_null(ctx));
- if (fr_value_box_strdup(value, value, NULL, "%", false) < 0) {
- talloc_free(value);
- return XLAT_ACTION_FAIL;
- }
+ MEM(fr_value_box_strdup(value, value, NULL, "%", false) >= 0);
break;
/*
strftime(buffer, sizeof(buffer), "%Y%m%d", &ts);
MEM(value = fr_value_box_alloc_null(ctx));
- if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) {
- talloc_free(value);
- goto error;
- }
+ MEM(fr_value_box_strdup(value, value, NULL, buffer, false) >= 0);
break;
case 'e': /* Request second */
* seconds?
*/
MEM(value = fr_value_box_alloc(ctx, FR_TYPE_UINT64, NULL));
- value->datum.uint64 = (uint64_t ) now;
+ value->datum.uint64 = (uint64_t) now;
break;
case 'm': /* Request month */
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &ts);
MEM(value = fr_value_box_alloc_null(ctx));
- if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) goto error;
+ MEM(fr_value_box_strdup(value, value, NULL, buffer, false) >= 0);
break;
case 't': /* Request timestamp in CTIME format */
if (p) *p = '\0';
MEM(value = fr_value_box_alloc_null(ctx));
- if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) goto error;
+ MEM(fr_value_box_strdup(value, value, NULL, buffer, false) >= 0);
}
break;
(int) fr_time_to_msec(request->packet->timestamp) % 1000);
MEM(value = fr_value_box_alloc_null(ctx));
- if (fr_value_box_strdup(value, value, NULL, buffer, false) < 0) goto error;
+ MEM(fr_value_box_strdup(value, value, NULL, buffer, false) >= 0);
}
break;
if ((node->quote != T_BARE_WORD) && !head->is_argv) {
if (!fr_value_box_list_head(result)) {
MEM(arg = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL));
- fr_value_box_strdup(arg, arg, NULL, "", false);
+ MEM(fr_value_box_strdup(arg, arg, NULL, "", false) >= 0);
fr_dcursor_insert(out, arg);
break;
}
xlat_action_t xa = XLAT_ACTION_DONE;
xlat_exp_t const *node;
fr_value_box_list_t result; /* tmp list so debug works correctly */
- fr_value_box_t *value;
+ fr_value_box_t *value = NULL;
fr_value_box_list_init(&result);
* because references aren't threadsafe.
*/
MEM(value = fr_value_box_alloc_null(ctx));
- if (unlikely(fr_value_box_copy(value, value, &node->data) < 0)) goto fail;
+ MEM(fr_value_box_copy(value, value, &node->data) >= 0);
fr_dcursor_append(out, value);
continue;
}
if ((size_t)slen >= outlen) {
+ talloc_free(buff);
fr_strerror_const("Insufficient output buffer space");
return -1;
}