[Debian-astro-maintainers] Bug#1068791: iraf-fitsutil: fgread and fgwrite utilities crash with segmentatin fault
Vladimir Petko
vpa1977 at gmail.com
Thu Apr 11 05:19:51 BST 2024
Package: iraf-fitsutil
Severity: important
Tags: patch
User: ubuntu-devel at lists.ubuntu.com
Usertags: origin-ubuntu noble ubuntu-patch
Dear Maintainer,
The package autopkgtests fail on armhf[1] due to 'long' passed to functions
taking 'time_t' as an argument.
fgwrite crashes with the following stacktrace:
---
Program received signal SIGSEGV, Segmentation fault.
0x0040284e in sprintf (__fmt=0x405160 "%d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d",
__s=0xfffef18c "2024-04-10T23:34:55")
at /usr/include/arm-linux-gnueabihf/bits/stdio2.h:30
warning: Source file is more recent than executable.
30 return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
(gdb) where
#0 0x0040284e in sprintf (__fmt=0x405160 "%d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d",
__s=0xfffef18c "2024-04-10T23:34:55")
at /usr/include/arm-linux-gnueabihf/bits/stdio2.h:30
#1 fgfileout (fname=fname at entry=0xfffef77d "pix.fits", out=1, ftype=6,
path=path at entry=0x405318 "", level=level at entry=1)
at fgwrite.c:695
#2 0x00400f7e in main (argc=<optimized out>, argv=<optimized out>) at
fgwrite.c:360
(gdb) down
Bottom (innermost) frame selected; you cannot go down.
(gdb) up
#1 fgfileout (fname=fname at entry=0xfffef77d "pix.fits", out=1, ftype=6,
path=path at entry=0x405318 "", level=level at entry=1)
at fgwrite.c:695
warning: 695 fgwrite.c: No such file or directory
(gdb) print tm
$1 = (struct tm *) 0x0
---
Structure fheader uses long to represent timestamps causing a failure to obtain
the proper timestamp.
In Ubuntu, the attached patch was applied to achieve the following:
* d/p/use-time-t.patch: use time_t instead of long for
timestamps (LP: #2058985).
Thanks for considering the patch.
[1]
https://objectstorage.prodstack5.canonical.com/swift/v1/AUTH_0f9aae918d5b4744bf7b827671c86842/autopkgtest-
noble/noble/armhf/i/iraf-fitsutil/20240408_131637_f974b@/log.gz
-- System Information:
Debian Release: trixie/sid
APT prefers mantic-updates
APT policy: (500, 'mantic-updates'), (500, 'mantic-security'), (500, 'mantic'), (100, 'mantic-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.5.0-27-generic (SMP w/32 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-------------- next part --------------
diff -Nru iraf-fitsutil-2018.07.06/debian/patches/series iraf-fitsutil-2018.07.06/debian/patches/series
--- iraf-fitsutil-2018.07.06/debian/patches/series 2024-03-26 10:57:36.000000000 +1300
+++ iraf-fitsutil-2018.07.06/debian/patches/series 2024-04-11 11:54:47.000000000 +1200
@@ -5,3 +5,4 @@
Add-missing-tm_isdst-initialization.patch
Don-t-try-to-install-cfitsio.patch
ANSI-C-clean-Wall.patch
+Use-time-t.patch
diff -Nru iraf-fitsutil-2018.07.06/debian/patches/Use-time-t.patch iraf-fitsutil-2018.07.06/debian/patches/Use-time-t.patch
--- iraf-fitsutil-2018.07.06/debian/patches/Use-time-t.patch 1970-01-01 12:00:00.000000000 +1200
+++ iraf-fitsutil-2018.07.06/debian/patches/Use-time-t.patch 2024-04-11 11:54:47.000000000 +1200
@@ -0,0 +1,35 @@
+Description: use time_t to represent timestamps
+ Due to time_t migration, sizeof(time_t) != sizeof(long) on armhf.
+ Use time_t type to represent timestamps in fgwrite/fgread.
+ This is safe to do, because the timestamps are stored in the string
+ format in the input/output file.
+Author: Vladimir Petko <vladimir.petko at canonical.com>
+Origin: https://github.com/iraf-community/iraf-fitsutil/pull/17
+Bug: https://github.com/iraf-community/iraf-fitsutil/issues/16
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/iraf-fitsutil/+bug/2058985
+Last-Update: 2024-04-11
+
+--- a/src/fgwrite.c
++++ b/src/fgwrite.c
+@@ -71,8 +71,8 @@
+ int gid;
+ int isdir;
+ long size;
+- long mtime;
+- long ctime;
++ time_t mtime;
++ time_t ctime;
+ long chksum;
+ int linkflag;
+ char linkname[NAMSIZ];
+--- a/src/fgread.c
++++ b/src/fgread.c
+@@ -85,7 +85,7 @@
+ int dirlevel;
+ long size;
+ long hsize;
+- long mtime;
++ time_t mtime;
+ long chksum;
+ int linkflag;
+ char linkname[NAMSIZ];
More information about the Debian-astro-maintainers
mailing list