Public bug reported:

Package: glibc
Version: 2.31

Use of mktime with tm_isdst=1 results in -1 indicating an error. This
appears unexpected, and cannot be replicated on OS X 11.6.1, Centos 7.9,
Fedora 35, Alpine or RHEL 8.

The issue was first observed on Github Actions ubuntu-latest (20.04).

This issue was originally opened on the CPython bug tracker. They
advised opening a bug report with both Ubuntu and Debian. The bug opened
with Debian can be found here:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1001774

The original report with CPython can be found here:

https://bugs.python.org/issue44413

An example C program follows at the end of the bug report, and can be
compiled with “gcc bug.c -o bug”.

An example of execution of the bug, and failure, within a glibc 2.31
environment can be found here:

https://github.com/wasade/cpython/runs/4541212472?check_suite_focus=true#step:17:57

Thank you for your time. Please let me know if additional information would be 
helpful. This is my first bug report to Ubuntu. Though I reviewed the guidance 
docs, I apologize in advance if I overlooked something.
-Daniel

#include <time.h>
#include <stdio.h>

void do_test() {
  struct tm tm_works = { .tm_year=117,
                         .tm_mon=4,
                         .tm_mday=26,
                         .tm_hour=15,
                         .tm_min=30,
                         .tm_sec=16,
                         .tm_wday=4,
                         .tm_yday=145,
                         .tm_isdst=-1 };
  
  struct tm tm_fails = { .tm_year=117,
                         .tm_mon=4,
                         .tm_mday=26,
                         .tm_hour=15,
                         .tm_min=30,
                         .tm_sec=16,
                         .tm_wday=4,
                         .tm_yday=145,
                         .tm_isdst=1 };

  time_t works = mktime(&tm_works);
  time_t fails = mktime(&tm_fails);

  if(works == -1) {
      printf("Unexpected failure\n");
  } else {
      if(works == fails) {
          printf("Test passed\n");
      } else {
          printf("Test failed: works=%d; fails=%d\n", (int)works, (int)fails);
      }
  }
}

int main(int argc, char **argv) {
    do_test();
}

** Affects: glibc (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1954963

Title:
  tm_isdst=1 with mktime on 20.04 produces unexpected output

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1954963/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to