diff --git a/src/proto_http.c b/src/proto_http.c index 0ebc2c409..69ad908de 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -12084,6 +12084,8 @@ static int sample_conv_http_date(const struct arg *args, struct sample *smp, voi curr_date += args[0].data.sint; tm = gmtime(&curr_date); + if (!tm) + return 0; temp = get_trash_chunk(); temp->len = snprintf(temp->str, temp->size - temp->len, diff --git a/src/sample.c b/src/sample.c index 6088869b5..0a09012ad 100644 --- a/src/sample.c +++ b/src/sample.c @@ -1519,13 +1519,17 @@ static int sample_conv_ltime(const struct arg *args, struct sample *smp, void *p { struct chunk *temp; time_t curr_date = smp->data.uint; + struct tm *tm; /* add offset */ if (args[1].type == ARGT_SINT || args[1].type == ARGT_UINT) curr_date += args[1].data.sint; + tm = localtime(&curr_date); + if (!tm) + return 0; temp = get_trash_chunk(); - temp->len = strftime(temp->str, temp->size, args[0].data.str.str, localtime(&curr_date)); + temp->len = strftime(temp->str, temp->size, args[0].data.str.str, tm); smp->data.str = *temp; smp->type = SMP_T_STR; return 1; @@ -1549,13 +1553,17 @@ static int sample_conv_utime(const struct arg *args, struct sample *smp, void *p { struct chunk *temp; time_t curr_date = smp->data.uint; + struct tm *tm; /* add offset */ if (args[1].type == ARGT_SINT || args[1].type == ARGT_UINT) curr_date += args[1].data.sint; + tm = gmtime(&curr_date); + if (!tm) + return 0; temp = get_trash_chunk(); - temp->len = strftime(temp->str, temp->size, args[0].data.str.str, gmtime(&curr_date)); + temp->len = strftime(temp->str, temp->size, args[0].data.str.str, tm); smp->data.str = *temp; smp->type = SMP_T_STR; return 1;