When compiling on 32 bit arch we get shift-count-overflow warnings
if encountering 64 bit time in these places.
This patch suppresses those warnings without changing behavior.
---
 ext2fs/inode.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ext2fs/inode.c b/ext2fs/inode.c
index 4e505118..bd744c48 100644
--- a/ext2fs/inode.c
+++ b/ext2fs/inode.c
@@ -112,7 +112,7 @@ ext2_decode_extra_time (uint32_t legacy_sec, uint32_t extra,
                         time_t *sec, long *nsec)
 {
   /* Epoch extension (bits 32 and 33) */
-  *sec = (time_t)legacy_sec + (((time_t)extra & 0x3) << 32);
+  *sec = (time_t)legacy_sec + (time_t)(((uint64_t)extra & 0x3) << 32);
   /* Nanoseconds (bits 2 through 31) */
   *nsec = (long)(extra >> 2);
 }
@@ -124,7 +124,7 @@ ext2_encode_extra_time (time_t sec, long nsec)
   /* Pack nanoseconds into the upper 30 bits */
   extra = (uint32_t)(nsec << 2);
   /* Pack bits 32 and 33 of seconds into the lower 2 bits */
-  extra |= (uint32_t)((sec >> 32) & 0x3);
+  extra |= (uint32_t)(((uint64_t)sec >> 32) & 0x3);
   return extra;
 }
 
-- 
2.53.0


Reply via email to