Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z_LqUgildoq33vI-@cloudsdale.the-delta.net.eu.org>
Date: Sun, 6 Apr 2025 22:55:46 +0200
From: "Haelwenn (lanodan) Monnier" <contact@...ktivis.me>
To: musl@...ts.openwall.com
Cc: Rich Felker <dalias@...c.org>, ipedrosa@...hat.com,
	~hallyn/shadow@...ts.sr.ht, libc-alpha@...rceware.org
Subject: Re: strptime("UTC", "%Z", &tm) in musl

[2025-04-06 21:57:35+0200] Alejandro Colomar:
>I was trying to develop a function that parses a UTC date in the shadow
>project, and I came up with this:
><https://github.com/shadow-maint/shadow/pull/1217/>
>
>	$ grepc -htfd get_date .
>	static long
>	get_date(const char *s)
>	{
>		struct tm   tm;
>		const char  *p;
>
>		bzero(&tm, sizeof(tm));
>
>		p = strptime("UTC", "%Z", &tm);
>		if (p == NULL || !streq(p, ""))
>			return -1;

That bzero seems like a bit of a bad idea, `struct tm` can have some extra
fields where 0 isn't the correct value.
Quite like how `tm_isdst` uses -1 for unknown state, 0 for no-DST, 1 for DST.

Could probably use `if(!gmtime_r(0, &tm)) { /* handle err */ }` instead
which also has the nice effect of initializing tm for UTC,
allowing to skip the problematic strptime %Z.

Best regards

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.