Merged in the security fixes from 2.5.7.
[rsync/rsync.git] / sender.c
index f0dc1a1..a9c31bb 100644 (file)
--- a/sender.c
+++ b/sender.c
@@ -58,7 +58,7 @@ static struct sum_struct *receive_sums(int f)
        int i;
        OFF_T offset = 0;
 
-       s = (struct sum_struct *)malloc(sizeof(*s));
+       s = new(struct sum_struct);
        if (!s) out_of_memory("receive_sums");
 
        read_sum_head(f, s);
@@ -73,7 +73,7 @@ static struct sum_struct *receive_sums(int f)
        if (s->count == 0)
                return(s);
 
-       s->sums = (struct sum_buf *)malloc(sizeof(s->sums[0])*s->count);
+       s->sums = new_array(struct sum_buf, s->count);
        if (!s->sums) out_of_memory("receive_sums");
 
        for (i = 0; i < (int) s->count; i++) {
@@ -158,7 +158,7 @@ void send_files(struct file_list *flist, int f_out, int f_in)
                        if (strlen(fname) == MAXPATHLEN-1) {
                                io_error = 1;
                                rprintf(FERROR, "send_files failed on long-named directory %s\n",
-                                       fname);
+                                       full_fname(fname));
                                return;
                        }
                        strlcat(fname, "/", MAXPATHLEN);
@@ -194,7 +194,7 @@ void send_files(struct file_list *flist, int f_out, int f_in)
                        if (fd == -1) {
                                io_error = 1;
                                rprintf(FERROR, "send_files failed to open %s: %s\n",
-                                       fname, strerror(errno));
+                                       full_fname(fname), strerror(errno));
                                free_sums(s);
                                continue;
                        }
@@ -202,7 +202,7 @@ void send_files(struct file_list *flist, int f_out, int f_in)
                        /* map the local file */
                        if (do_fstat(fd, &st) != 0) {
                                io_error = 1;
-                               rprintf(FERROR, "fstat failed : %s\n", strerror(errno));
+                               rprintf(FERROR, "fstat failed: %s\n", strerror(errno));
                                free_sums(s);
                                close(fd);
                                return;
@@ -277,7 +277,17 @@ void send_files(struct file_list *flist, int f_out, int f_in)
                }
 
                if (!read_batch) { /* dw */
-                       if (buf) unmap_file(buf);
+                       if (buf) {
+                               j = unmap_file(buf);
+                               if (j) {
+                                       io_error = 1;
+                                       rprintf(FERROR,
+                                           "read errors mapping %s: (%d) %s\n",
+                                           full_fname(fname),
+                                           j,
+                                           strerror(j));
+                               }
+                       }
                        close(fd);
                }