diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/tar/internal.h | 1 | ||||
| -rw-r--r-- | lib/tar/read_header.c | 16 | 
2 files changed, 9 insertions, 8 deletions
| diff --git a/lib/tar/internal.h b/lib/tar/internal.h index 755d4eb..57746ae 100644 --- a/lib/tar/internal.h +++ b/lib/tar/internal.h @@ -13,6 +13,7 @@  #include <string.h>  #include <stdlib.h> +#include <limits.h>  #include <ctype.h>  #include <stdio.h> diff --git a/lib/tar/read_header.c b/lib/tar/read_header.c index 0591879..2918d09 100644 --- a/lib/tar/read_header.c +++ b/lib/tar/read_header.c @@ -155,17 +155,17 @@ static int decode_header(const tar_header_t *hdr, unsigned int set_by_pax,  		break;  	} -#if SIZEOF_TIME_T < 8 -	if (out->mtime > (sqfs_s64)INT32_MAX) { -		out->sb.st_mtime = INT32_MAX; -	} else if (out->mtime < (sqfs_s64)INT32_MIN) { -		out->sb.st_mtime = INT32_MIN; +	if (sizeof(time_t) * CHAR_BIT < 64) { +		if (out->mtime > (sqfs_s64)INT32_MAX) { +			out->sb.st_mtime = INT32_MAX; +		} else if (out->mtime < (sqfs_s64)INT32_MIN) { +			out->sb.st_mtime = INT32_MIN; +		} else { +			out->sb.st_mtime = out->mtime; +		}  	} else {  		out->sb.st_mtime = out->mtime;  	} -#else -	out->sb.st_mtime = out->mtime; -#endif  	return 0;  } | 
