From: Theo Buehler Subject: ntpd timegm error checks To: tech@openbsd.org Date: Sun, 31 May 2026 12:23:26 +0200 Another rather straightforward conversion, removing a confusing comment that would become a bit more confusing. As visible in the diff, tls_tm is parsed twice in a row, where the second (rather the first) parse was added with the manual constraints checking in 2019. The layering is a bit strange here. Index: constraint.c =================================================================== RCS file: /cvs/src/usr.sbin/ntpd/constraint.c,v diff -u -p -r1.60 constraint.c --- constraint.c 21 Nov 2024 13:38:14 -0000 1.60 +++ constraint.c 31 May 2026 10:14:09 -0000 @@ -1062,7 +1062,9 @@ httpsdate_request(struct httpsdate *http */ notbefore = tls_peer_cert_notbefore(httpsdate->tls_ctx); notafter = tls_peer_cert_notafter(httpsdate->tls_ctx); - if ((httptime = timegm(&httpsdate->tls_tm)) == -1) + httpsdate->tls_tm.tm_wday = -1; + if ((httptime = timegm(&httpsdate->tls_tm)) == -1 && + httpsdate->tls_tm.tm_wday == -1) goto fail; if (httptime <= notbefore) { if ((tm = gmtime(¬before)) == NULL) @@ -1114,8 +1116,12 @@ httpsdate_query(const char *addr, const if (httpsdate_request(httpsdate, &when, synced) == -1) return (NULL); - /* Return parsed date as local time */ + httpsdate->tls_tm.tm_wday = -1; t = timegm(&httpsdate->tls_tm); + if (t == -1 && httpsdate->tls_tm.tm_wday == -1) { + httpsdate_free(httpsdate); + return (NULL); + } /* Report parsed Date: as "received time" */ rectv->tv_sec = t;