BUG/MINOR threads: Use get_(local|gm)time instead of (local|gm)time

Using localtime / gmtime is not thread-safe, whereas the `get_*` wrappers are.

Found using GitHub's CodeQL scan.

The use in sample_conv_ltime() can be traced back to at least
fac9ccfb705702f211f99e67d5f5d5129002086a (first appearing in 1.6-dev3), so all
supported branches with thread support are affected.

(cherry picked from commit 1f269c12dc31bb63db31559cb44c187ab91abb64)
Signed-off-by: Willy Tarreau <w@1wt.eu>
diff --git a/src/http_conv.c b/src/http_conv.c
index dd1be17..121a498 100644
--- a/src/http_conv.c
+++ b/src/http_conv.c
@@ -44,7 +44,7 @@
 	const char day[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
 	const char mon[12][4] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
 	struct buffer *temp;
-	struct tm *tm;
+	struct tm tm;
 	int sec_frac = 0;
 	time_t curr_date;
 
@@ -66,23 +66,21 @@
 	/* With high numbers, the date returned can be negative, the 55 bits mask prevent this. */
 	curr_date = smp->data.u.sint & 0x007fffffffffffffLL;
 
-	tm = gmtime(&curr_date);
-	if (!tm)
-		return 0;
+	get_gmtime(curr_date, &tm);
 
 	temp = get_trash_chunk();
 	if (args[1].type == ARGT_SINT && args[1].data.sint != TIME_UNIT_S) {
 	    temp->data = snprintf(temp->area, temp->size - temp->data,
 	                          "%s, %02d %s %04d %02d:%02d:%02d.%d GMT",
-			          day[tm->tm_wday], tm->tm_mday, mon[tm->tm_mon],
-			          1900+tm->tm_year,
-			          tm->tm_hour, tm->tm_min, tm->tm_sec, sec_frac);
+			          day[tm.tm_wday], tm.tm_mday, mon[tm.tm_mon],
+			          1900+tm.tm_year,
+			          tm.tm_hour, tm.tm_min, tm.tm_sec, sec_frac);
 	} else {
 	    temp->data = snprintf(temp->area, temp->size - temp->data,
 	                          "%s, %02d %s %04d %02d:%02d:%02d GMT",
-			          day[tm->tm_wday], tm->tm_mday, mon[tm->tm_mon],
-			          1900+tm->tm_year,
-			          tm->tm_hour, tm->tm_min, tm->tm_sec);
+			          day[tm.tm_wday], tm.tm_mday, mon[tm.tm_mon],
+			          1900+tm.tm_year,
+			          tm.tm_hour, tm.tm_min, tm.tm_sec);
         }
 
 	smp->data.u.str = *temp;