summaryrefslogtreecommitdiff
path: root/libarchive/archive_write_set_format_iso9660.c
diff options
context:
space:
mode:
authorKyrre Sjobak <kyrre.ness.sjoebaek@cern.ch>2017-01-26 14:36:56 +0100
committerKyrre Sjobak <kyrre.ness.sjoebaek@cern.ch>2017-01-26 14:36:56 +0100
commitfed432c5ffea35b35d7d069e7cab8c7e10ea5f91 (patch)
tree0c2ef15d9c613d7d22e2c5020a4b3ff114b22219 /libarchive/archive_write_set_format_iso9660.c
parentb51e595a6ae85e8da4093a0de0d773bfd7d3906e (diff)
downloadlibarchive-fed432c5ffea35b35d7d069e7cab8c7e10ea5f91.tar.gz
Correctly convert 32-bit time_t to __time64_t
Diffstat (limited to 'libarchive/archive_write_set_format_iso9660.c')
-rw-r--r--libarchive/archive_write_set_format_iso9660.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libarchive/archive_write_set_format_iso9660.c b/libarchive/archive_write_set_format_iso9660.c
index 1d1f04e0..95c7361a 100644
--- a/libarchive/archive_write_set_format_iso9660.c
+++ b/libarchive/archive_write_set_format_iso9660.c
@@ -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