X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/fb01d1fb07f6efd3752ff895fe8a77e26a2b2055..886df221c1ce1660a2b6cd274b13952b482fe5bf:/receiver.c diff --git a/receiver.c b/receiver.c index 05ac184c..ffaf3e40 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; @@ -52,6 +53,7 @@ extern struct stats stats; extern char *tmpdir; extern char *partial_dir; extern char *basis_dir[]; +extern char sender_file_sum[]; 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; @@ -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); + read_buf(f_in, sender_file_sum, checksum_len); if (DEBUG_GTE(CHKSUM, 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; }