]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Correctly convert 32-bit time_t to __time64_t 858/head
authorKyrre Sjobak <kyrre.ness.sjoebaek@cern.ch>
Thu, 26 Jan 2017 13:36:56 +0000 (14:36 +0100)
committerKyrre Sjobak <kyrre.ness.sjoebaek@cern.ch>
Thu, 26 Jan 2017 13:36:56 +0000 (14:36 +0100)
libarchive/archive_write_set_format_iso9660.c

index 1d1f04e00f446b1944381c5a9d310290247f121b..95c7361afa5d6856e1b6f59257f7b6f809269976 100644 (file)
@@ -2524,7 +2524,8 @@ get_tmfromtime(struct tm *tm, time_t *t)
        tzset();
        localtime_r(t, tm);
 #elif HAVE__LOCALTIME64_S
-       _localtime64_s(tm, t);
+       __time64_t tmp_t = (__time64_t) *t; //time_t may be shorter than 64 bits
+       _localtime64_s(tm, &tmp_t);
 #else
        memcpy(tm, localtime(t), sizeof(*tm));
 #endif
@@ -4073,7 +4074,8 @@ write_information_block(struct archive_write *a)
        memset(info.s, 0, info_size);
        opt = 0;
 #if defined(HAVE__CTIME64_S)
-       _ctime64_s(buf, sizeof(buf), &(iso9660->birth_time));
+       __time64_t iso9660_birth_time_tmp = (__time64_t) iso9660->birth_time; //time_t may be shorter than 64 bits
+       _ctime64_s(buf, sizeof(buf), &(iso9660_birth_time_tmp));
 #elif defined(HAVE_CTIME_R)
        ctime_r(&(iso9660->birth_time), buf);
 #else