Change in ...osmo-hlr[master]: db_hlr: zero-initialize "struct tm"

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

osmith gerrit-no-reply at lists.osmocom.org
Tue Jun 4 10:43:28 UTC 2019


osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/14364


Change subject: db_hlr: zero-initialize "struct tm"
......................................................................

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
---
M src/db_hlr.c
M tests/testsuite.at
2 files changed, 2 insertions(+), 4 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/64/14364/1

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 @@
 	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);
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 7d268d1..70ae7ae 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -29,12 +29,10 @@
 AT_CHECK([$abs_top_builddir/tests/gsup_server/gsup_server_test], [], [expout], [experr])
 AT_CLEANUP
 
-# TZ=CET: workaround for glibc bug in mktime() (https://osmocom.org/issues/4026):
-# "Cannot convert LU timestamp '2019-05-26 03:05:03' to time_t: Value too large for defined data type"
 AT_SETUP([db])
 AT_KEYWORDS([db])
 cat $abs_srcdir/db/db_test.ok > expout
 cat $abs_srcdir/db/db_test.err > experr
 sqlite3 db_test.db < $abs_top_srcdir/sql/hlr.sql
-AT_CHECK([TZ=CET $abs_top_builddir/tests/db/db_test], [], [expout], [experr])
+AT_CHECK([$abs_top_builddir/tests/db/db_test], [], [expout], [experr])
 AT_CLEANUP

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/14364
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: Iebbbe42fc5cd43324206d9433ede67b39251389c
Gerrit-Change-Number: 14364
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190604/45cc0ab7/attachment.htm>


More information about the gerrit-log mailing list