Package: genisoimage
Version: genisoimage 1.1.11 (Linux)

Starting in 2027, dates on files on UDF file systems generated by genisoimage 
will have incorrect time stamps. They will be set back by 16 hours.

UDF and iso9660 technically have date ranges that end with the year 9999. 
Therefore, the date and time should not be computed by calculating seconds from 
an epoch. UDF and iso9660 have no epoch. They have separate fields for years, 
months, ..., subseconds. By the way, genisoimage does not record subseconds, 
but that is a topic for a different bug ticket. It is not as urgent as this.

In addition, the iso9660 implementation of genisoimage is affected by the 
famous Y2038 bug. January 2038 will be no easy month in the world of computing, 
because nothing 32-bit is future-proof. This could also be handled by computing 
each time field separately. But this comes much later than the time bug that 
affects UDF, so it's less urgent.


How to reproduce:

~~~~
# cd /tmp
# touch -m -d 2027-01-01 test2027.txt
# touch -m -d 2028-01-01 test2028.txt
# genisoimage -udf -o tmp.img test202*
I: -input-charset not specified, using utf-8 (detected in locale settings)
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
419 extents written (0 MB)
# mkdir udftest
# mount tmp.img udftest
# ls --full-time  udftest
total 0
-r--r--r-- 1 root root 0 2027-01-01 00:00:00.000000000 +0100 test2027.txt
-r--r--r-- 1 root root 0 2027-12-31 08:00:00.000000000 +0100 test2028.txt
~~~~

Expected result:


~~~~
# ls --full-time  udftest
total 0
-r--r--r-- 1 root root 0 2027-01-01 00:00:00.000000000 +0100 test2027.txt
-r--r--r-- 1 root root 0 2028-01-01 00:00:00.000000000 +0100 test2028.txt
~~~~

Reply via email to