X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/6d56efa6ea66afa2e6f4eb79d9dd5f3b54b723c3..56fc9f70d385b20d431d9fa62ef4fd3941949717:/receiver.c diff --git a/receiver.c b/receiver.c index 05ac184c..434957b2 100644 --- a/receiver.c +++ b/receiver.c @@ -44,6 +44,7 @@ extern int remove_source_files; extern int append_mode; extern int sparse_files; extern int keep_partial; +extern int checksum_len; extern int checksum_seed; extern int inplace; extern int delay_updates; @@ -51,7 +52,8 @@ extern mode_t orig_umask; extern struct stats stats; extern char *tmpdir; extern char *partial_dir; -extern char *basis_dir[]; +extern char *basis_dir[MAX_BASIS_DIRS+1]; +extern char sender_file_sum[MAX_DIGEST_LEN]; extern struct file_list *cur_flist, *first_flist, *dir_flist; extern struct filter_list_struct daemon_filter_list; @@ -163,10 +165,9 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, const char *fname, int fd, OFF_T total_size) { static char file_sum1[MAX_DIGEST_LEN]; - static char file_sum2[MAX_DIGEST_LEN]; struct map_struct *mapbuf; struct sum_struct sum; - int32 len, sum_len; + int32 len; OFF_T offset = 0; OFF_T offset2; char *data; @@ -178,7 +179,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, if (fd_r >= 0 && size_r > 0) { int32 read_size = MAX(sum.blength * 2, 16*1024); mapbuf = map_file(fd_r, size_r, read_size, sum.blength); - if (DEBUG_GTE(CHKSUM, 2)) { + if (DEBUG_GTE(DELTASUM, 2)) { rprintf(FINFO, "recv mapped %s of size %s\n", fname_r, big_num(size_r, 0)); } @@ -220,7 +221,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, show_progress(offset, total_size); if (i > 0) { - if (DEBUG_GTE(CHKSUM, 3)) { + if (DEBUG_GTE(DELTASUM, 3)) { rprintf(FINFO,"data recv %d at %s\n", i, big_num(offset, 0)); } @@ -244,7 +245,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, stats.matched_data += len; - if (DEBUG_GTE(CHKSUM, 3)) { + if (DEBUG_GTE(DELTASUM, 3)) { rprintf(FINFO, "chunk[%d] of size %ld at %s offset=%s\n", i, (long)len, big_num(offset2, 0), big_num(offset, 0)); @@ -296,15 +297,16 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, exit_cleanup(RERR_FILEIO); } - sum_len = sum_end(file_sum1); + if (sum_end(file_sum1) != checksum_len) + overflow_exit("checksum_len"); /* Impossible... */ if (mapbuf) unmap_file(mapbuf); - read_buf(f_in, file_sum2, sum_len); - if (DEBUG_GTE(CHKSUM, 2)) + read_buf(f_in, sender_file_sum, checksum_len); + if (DEBUG_GTE(DELTASUM, 2)) rprintf(FINFO,"got file_sum\n"); - if (fd != -1 && memcmp(file_sum1, file_sum2, sum_len) != 0) + if (fd != -1 && memcmp(file_sum1, sender_file_sum, checksum_len) != 0) return 0; return 1; }