From b58f5e17ed35c68e10b88869d1e10d5378bd40e0 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Thu, 29 Nov 2007 22:52:20 -0800 Subject: [PATCH] Simplified the time_t overflow check and moved an extra_len rounding check into the right spot in recv_file_entry(). --- flist.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flist.c b/flist.c index 4eaca20f..b8cc9fef 100644 --- a/flist.c +++ b/flist.c @@ -731,7 +731,7 @@ static struct file_struct *recv_file_entry(struct file_list *flist, if (protocol_version >= 30) { modtime = read_varlong(f, 4); #if SIZEOF_TIME_T < SIZEOF_INT64 - if ((modtime > INT_MAX || modtime < INT_MIN) && !am_generator) { + if (!am_generator && (int64)(time_t)modtime != modtime) { rprintf(FERROR_XFER, "Time value of %s truncated on receiver.\n", lastname); @@ -829,11 +829,6 @@ static struct file_struct *recv_file_entry(struct file_list *flist, if (file_length > 0xFFFFFFFFu && S_ISREG(mode)) extra_len += EXTRA_LEN; -#if EXTRA_ROUNDING > 0 - if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN)) - extra_len = (extra_len | (EXTRA_ROUNDING * EXTRA_LEN)) + EXTRA_LEN; -#endif - if (inc_recurse && S_ISDIR(mode)) { if (one_file_system) { /* Room to save the dir's device for -x */ @@ -843,6 +838,11 @@ static struct file_struct *recv_file_entry(struct file_list *flist, } else pool = flist->file_pool; +#if EXTRA_ROUNDING > 0 + if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN)) + extra_len = (extra_len | (EXTRA_ROUNDING * EXTRA_LEN)) + EXTRA_LEN; +#endif + alloc_len = FILE_STRUCT_LEN + extra_len + basename_len + linkname_len; bp = pool_alloc(pool, alloc_len, "recv_file_entry"); -- 2.34.1