From b9df3e048d3375235f92ad88b29a32614c5bc3fd Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Mon, 23 Nov 2020 16:00:22 -0500 Subject: [PATCH] use UTC for date to string, too. Manual port of 7ea17db2d2 from v3.0.x --- src/modules/rlm_date/rlm_date.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/modules/rlm_date/rlm_date.c b/src/modules/rlm_date/rlm_date.c index 0ffe83a3fa4..0bade1014ef 100644 --- a/src/modules/rlm_date/rlm_date.c +++ b/src/modules/rlm_date/rlm_date.c @@ -43,17 +43,21 @@ static const CONF_PARSER module_config[] = { DIAG_OFF(format-nonliteral) static ssize_t date_convert_string(request_t *request, char **out, size_t outlen, - const char *str, const char *fmt) + const char *str, rlm_date_t const *inst) { struct tm tminfo; time_t date = 0; - if (strptime(str, fmt, &tminfo) == NULL) { - REDEBUG("Failed to parse time string \"%s\" as format '%s'", str, fmt); + if (strptime(str, inst->fmt, &tminfo) == NULL) { + REDEBUG("Failed to parse time string \"%s\" as format '%s'", str, inst->fmt); return -1; } - date = mktime(&tminfo); + if (inst->utc) { + date = timegm(&tminfo); + } else { + date = mktime(&tminfo); + } if (date < 0) { REDEBUG("Failed converting parsed time into unix time"); return -1; @@ -151,7 +155,7 @@ static ssize_t xlat_date_convert(UNUSED TALLOC_CTX *ctx, char **out, size_t outl * unix timestamp. */ case FR_TYPE_STRING: - return date_convert_string(request, out, outlen, vp->vp_strvalue, inst->fmt); + return date_convert_string(request, out, outlen, vp->vp_strvalue, inst); default: REDEBUG("Can't convert type %s into date", fr_table_str_by_value(fr_value_box_type_table, vp->da->type, "")); -- 2.47.3