On Fri, Jul 18, 2025 at 05:50:21PM +0000, Dag-Erling Smørgrav wrote:
> The branch main has been updated by des:
> 
> URL: 
> https://cgit.FreeBSD.org/src/commit/?id=d63ffdd1ef6368407b35d415237b95cc739d8073
> 
> commit d63ffdd1ef6368407b35d415237b95cc739d8073
> Author:     Dag-Erling Smørgrav <d...@freebsd.org>
> AuthorDate: 2025-07-18 17:48:59 +0000
> Commit:     Dag-Erling Smørgrav <d...@freebsd.org>
> CommitDate: 2025-07-18 17:49:34 +0000
> 
>     tzcode: Fix time zone change detection.
>     
>     Prior to the 2022g import, tzloadbody() returned -1 on error.  Now it
>     returns an errno code.  When I updated the time zone change detection
>     logic to match, I improperly returned errno in all cases, which means
>     that if the time zone file has not changed since we last loaded it,
>     tzloadbody() returns a random errno value instead of 0.
>     
>     Fixes:          bc42155199b5
>     MFC after:      1 week
>     Sponsored by:   Klara, Inc.
>     Sponsored by:   NetApp, Inc.
>     Reviewed by:    markj
>     Differential Revision:  https://reviews.freebsd.org/D51405
> ---
>  contrib/tzcode/localtime.c | 14 +++++---------
>  1 file changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c
> index f5814a43da54..69b5f0183e2c 100644
> --- a/contrib/tzcode/localtime.c
> +++ b/contrib/tzcode/localtime.c
> @@ -408,10 +408,8 @@ change_in_tz(const char *name)
>       static char old_name[PATH_MAX];
>       static struct stat old_sb;
>       struct stat sb;
> -     int error;
>  
> -     error = stat(name, &sb);
> -     if (error != 0)
> +     if (stat(name, &sb) != 0)
>               return -1;
>  
>       if (strcmp(name, old_name) != 0) {
> @@ -510,13 +508,11 @@ tzloadbody(char const *name, struct state *sp, bool 
> doextend,
>                * 'doextend' to ignore TZDEFRULES; the change_in_tz()
>                * function can only keep state for a single file.
>                */
> -             int ret = change_in_tz(name);
> -             if (ret <= 0) {
> -                     /*
> -                      * Returns an errno value if there was an error,
> -                      * and 0 if the timezone had not changed.
> -                      */
> +             switch (change_in_tz(name)) {
> +             case -1:
>                       return errno;
> +             case 0:
> +                     return 0;
>               }
>       }
>       fid = _open(name, O_RDONLY | O_BINARY);
> 

Hey DES,

This commit broke buildworld:

==== BEGIN LOG ====
/usr/src/contrib/tzcode/localtime.c:512:11: error: no case matching constant 
switch condition '1' [-Werror]
  512 |                 switch (change_in_tz(name)) {
      |                         ^~~~~~~~~~~~~~~~~~
/usr/src/contrib/tzcode/localtime.c:433:25: note: expanded from macro 
'change_in_tz'
  433 | #define change_in_tz(X) 1
==== END LOG ====

Thanks,

-- 
Shawn Webb
Cofounder / Security Engineer
HardenedBSD

Signal Username:  shawn_webb.74
Tor-ified Signal: +1 303-901-1600 / shawn_webb_opsec.50
https://git.hardenedbsd.org/hardenedbsd/pubkeys/-/raw/master/Shawn_Webb/03A4CBEBB82EA5A67D9F3853FF2E67A277F8E1FA.pub.asc

Attachment: signature.asc
Description: PGP signature

Reply via email to