[Debian-astro-maintainers] Bug#939523: iraf-fitsutil: autopkgtest fail with glibc 2.29 due to missing tm_isdst initialization

Aurelien Jarno aurel32 at debian.org
Thu Sep 5 22:06:05 BST 2019


Package: iraf-fitsutil
Version: 2018.07.06-3
Severity: normal
Tags: patch upstream

As discussed in bug#939048, the autopkgtest from iraf-fitsutil fail in a
strange way when run with glibc 2.29 instead of glibc 2.28:

| cl> fitsutil
| This is the initial release of the IRAF FITSUTIL package
| to include support for FITS tile compression via 'fpack'.
| Please send comments and questions to seaman at noao.edu.
| 
| cl> copy dev$pix.pix pix.pix
| cl> copy dev$pix.imh pix.imh
| cl> fgwrite "pix.pix pix.imh" pix.fits verb-
| cl> mkdir out
| cl> cd out
| cl> fgread ../pix.fits "" "" verb-
| cl> sum32 *
| ERROR: No write permission on file (String_File)
|   "directory (img, long+) | scan (junk, junk, filsiz)"
|      line 42: fitsutil$src/sum32.cl
|      called as: `sum32 (input=*)'
|      called as: `cl ()'
|   "clbye()"
|      line 41: fitsutil$fitsutil.cl
|      called as: `fitsutil ()'
|      called as: `cl ()'
| Error while reading login.cl file - may need to rebuild with mkiraf
| Fatal startup error.  CL dies.

This happens because the error checking in mktime() have been improved
in case a non-valid date is provided in the tm struct. More precisely
in fgread.c, it should be noted that strptime does NOT setup the
tm_isdst of tm struct, which is instead getting a random value from the
stack. For this field 0 means no DST, positive value means DST and
negative values means that the value should be computed by mktime().

In the iraf-fitsutil, tm_isdst is not known from the file so it should
be set to -1, just like it's done in the POSIX.1-2018 strptime example:

https://pubs.opengroup.org/onlinepubs/9699919799/


Therefore the following patch fixes the issue:

--- iraf-fitsutil-2018.07.06.orig/src/fgread.c
+++ iraf-fitsutil-2018.07.06/src/fgread.c
@@ -469,6 +469,9 @@ char	 *type;			/* Extension type */
 
 	s = kwdb_GetValue (kwdb, "FG_MTIME");	
 
+	/* Not set by strptime(); tells mktime() to determine whether daylight
+	 * saving time is in effect */
+	tm.tm_isdst = -1; 
 	strptime (s, "%Y-%m-%dT%T",&tm);
 	fh->mtime = mktime(&tm) - get_timezone();
 


-- System Information:
Debian Release: bullseye/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)



More information about the Debian-astro-maintainers mailing list