Closed
Description
Module: POSIX
Description
On my old 32-bit powerpc, POSIX::mktime overflows from January 2038
to December 1901. I guess it's because ivsize=4.
Time::Local::timelocal_posix doesn't have this bug.
Steps to Reproduce
use POSIX 'mktime';
for (17 .. 21) {
$_ = mktime(0, 0, 0, $_, 0, 2038 - 1900);
printf "%s => %s\n", $_, scalar(localtime $_);
}
Expected behavior
This script should show the days 17 to 21 in January 2038, but I see
wrong days in 1901:
2147317200 => Sun Jan 17 00:00:00 2038
2147403600 => Mon Jan 18 00:00:00 2038
-2147477296 => Fri Dec 13 17:31:44 1901
-2147390896 => Sat Dec 14 17:31:44 1901
-2147304496 => Sun Dec 15 17:31:44 1901
Flags
- category=library
- severity=low
- module=POSIX
Perl configuration
Site configuration information for perl 5.38.0:
Configured by kernigh at Wed Jul 26 13:15:53 EDT 2023.
Summary of my perl5 (revision 5 version 38 subversion 0) configuration:
Commit id: 76298ae68aa7796f0ffc05095b127d23f4b2de8f
Platform:
osname=openbsd
osvers=7.3
archname=OpenBSD.powerpc-openbsd
uname='openbsd wisconsin.my.domain 7.3 generic#144 macppc '
config_args='-des -Dprefix=/home/kernigh/prefix/lop'
hint=recommended
useposix=true
d_sigaction=define
useithreads=undef
usemultiplicity=undef
use64bitint=undef
use64bitall=undef
uselongdouble=undef
usemymalloc=n
default_inc_excludes_dot=define
Compiler:
cc='cc'
ccflags ='-fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
optimize='-O2'
cppflags='-fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
ccversion=''
gccversion='OpenBSD Clang 13.0.0'
gccosandvers=''
intsize=4
longsize=4
ptrsize=4
doublesize=8
byteorder=4321
doublekind=4
d_longlong=define
longlongsize=8
d_longdbl=define
longdblsize=8
longdblkind=0
ivtype='long'
ivsize=4
nvtype='double'
nvsize=8
Off_t='off_t'
lseeksize=8
alignbytes=8
prototype=define
Linker and Libraries:
ld='cc'
ldflags ='-Wl,-E -fstack-protector-strong -L/usr/local/lib'
libpth=/usr/lib/clang/13.0.0/lib /usr/lib /usr/local/lib
libs=-lpthread -lm -lutil -lc
perllibs=-lpthread -lm -lutil -lc
libc=/usr/lib/libc.so.97.0
so=so
useshrplib=false
libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs
dlext=so
d_dlsymun=undef
ccdlflags=' '
cccdlflags='-DPIC -fPIC '
lddlflags='-shared -fPIC -L/usr/local/lib -fstack-protector-strong'
---
@INC for perl 5.38.0:
/home/kernigh/prefix/lop/lib/perl5/site_perl/5.38.0/OpenBSD.powerpc-openbsd
/home/kernigh/prefix/lop/lib/perl5/site_perl/5.38.0
/home/kernigh/prefix/lop/lib/perl5/5.38.0/OpenBSD.powerpc-openbsd
/home/kernigh/prefix/lop/lib/perl5/5.38.0
---
Environment for perl 5.38.0:
HOME=/home/kernigh
LANG (unset)
LANGUAGE (unset)
LC_CTYPE=en_US.UTF-8
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/kernigh/prefix/lop/bin:/home/kernigh/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/games:/home/kernigh/.local/share/gem/ruby/3.1/bin
PERL_BADLANG (unset)
SHELL=/bin/ksh