We don't need to complain about --inplace being combined with one
[rsync/rsync.git] / receiver.c
index 8c91ea6..10673ca 100644 (file)
@@ -40,6 +40,7 @@ extern int io_error;
 extern char *tmpdir;
 extern char *partial_dir;
 extern char *basis_dir[];
+extern int basis_dir_cnt;
 extern int make_backups;
 extern int do_progress;
 extern char *backup_dir;
@@ -219,8 +220,8 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
        read_sum_head(f_in, &sum);
 
        if (fd_r >= 0 && size_r > 0) {
-               OFF_T map_size = MAX((OFF_T)sum.blength * 2, 16*1024);
-               mapbuf = map_file(fd_r, size_r, map_size, sum.blength);
+               int32 read_size = MAX(sum.blength * 2, 16*1024);
+               mapbuf = map_file(fd_r, size_r, read_size, sum.blength);
                if (verbose > 2) {
                        rprintf(FINFO, "recv mapped %s of size %.0f\n",
                                safe_fname(fname_r), (double)size_r);
@@ -453,8 +454,13 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
                        case FNAMECMP_BACKUP:
                                fnamecmp = get_backup_name(fname);
                                break;
-                       case FNAMECMP_BASIS_DIR:
                        default:
+                               if (j >= basis_dir_cnt) {
+                                       rprintf(FERROR,
+                                               "invalid basis_dir index: %d.\n",
+                                               j);
+                                       exit_cleanup(RERR_PROTOCOL);
+                               }
                                pathjoin(fnamecmpbuf, sizeof fnamecmpbuf,
                                         basis_dir[j], fname);
                                fnamecmp = fnamecmpbuf;