From 63de00cfc104a32b5fb6abeeabaa631381c4cb36 Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Tue, 4 Jun 2019 12:18:53 +0200 Subject: db_hlr: zero-initialize "struct tm" The last LU time gets read from the database as string, parsed with strptime to "struct tm", and then gets converted to time_t with mktime. A recent behavior change in glibc's mktime implementation unconvered, that we don't have tm.tm_isdst (daylight saving time) set properly. As "struct tm" was not initialized, and strptime did not write to tm_isdst, it was set to a random value. When it was not 0, db_test failed on UTC systems with a more recent glibc (e.g. Ubuntu 19.04). Fix this by zero-initializing "struct tm" and remove the previous workaround that made db_test pass on UTC systems. Related: OS#4026 Change-Id: Iebbbe42fc5cd43324206d9433ede67b39251389c --- src/db_hlr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/db_hlr.c b/src/db_hlr.c index 362dcf2..694ac53 100644 --- a/src/db_hlr.c +++ b/src/db_hlr.c @@ -445,7 +445,7 @@ static int db_sel(struct db_context *dbc, sqlite3_stmt *stmt, struct hlr_subscri int rc; int ret = 0; const char *last_lu_seen_str; - struct tm tm; + struct tm tm = {0}; /* execute the statement */ rc = sqlite3_step(stmt); -- cgit v1.2.3