... sorry, I never worked with repositories...

may someone check this:

https://code.launchpad.net/~arter97/+archive/ubuntu/exfat-dev
exfat-dkms - 5.8~2arter97~ubuntu20.04.1 (maybe also in the other versions?)

in the file misc.c:
void exfat_get_entry_time(struct exfat_sb_info *sbi, struct timespec64 *ts,
                u8 tz, __le16 time, __le16 date, u8 time_cs)
{
        u16 t = le16_to_cpu(time);
        u16 d = le16_to_cpu(date);

        ts->tv_sec = mktime64(1980 + (d >> 9), d >> 5 & 0x000F, d & 0x001F,
                              t >> 11, (t >> 5) & 0x003F, (t & 0x001F) << 1);

...
shouldn't it be in line 82/83
        ts->tv_sec = mktime64(1980 + (d >> 9), ((d >> 5) - 1) & 0x000F, d & 
0x001F,
                              t >> 11, (t >> 5) & 0x003F, (t & 0x001F) << 1);

???

as month is given from 0-11 as far as i know, but in exfat from 1-12
(https://docs.microsoft.com/en-us/windows/win32/fileio/exfat-
specification#748-timestamp-fields).

(other way round seems to be correct in lines 108-110:
        time64_to_tm(ts->tv_sec, 0, &tm);
        t = (tm.tm_hour << 11) | (tm.tm_min << 5) | (tm.tm_sec >> 1);
        d = ((tm.tm_year - 80) <<  9) | ((tm.tm_mon + 1) << 5) | tm.tm_mday;
)

may someone check and fix this, as I don't know how.

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

Title:
  date modified is wrong for files on an exfat formatted drive

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-meta/+bug/1872504/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to