- Use an int32 for the each block-size variable.
authorWayne Davison <wayned@samba.org>
Sat, 1 Jan 2005 21:08:17 +0000 (21:08 +0000)
committerWayne Davison <wayned@samba.org>
Sat, 1 Jan 2005 21:08:17 +0000 (21:08 +0000)
- Fixed a potential overflow in the map_size calculation.

receiver.c
sender.c

index 70978fd..f10f25d 100644 (file)
@@ -209,17 +209,17 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
        static char file_sum2[MD4_SUM_LENGTH];
        struct map_struct *mapbuf;
        struct sum_struct sum;
        static char file_sum2[MD4_SUM_LENGTH];
        struct map_struct *mapbuf;
        struct sum_struct sum;
-       unsigned int len;
+       int32 len;
        OFF_T offset = 0;
        OFF_T offset2;
        char *data;
        OFF_T offset = 0;
        OFF_T offset2;
        char *data;
-       int i;
+       int32 i;
        char *map = NULL;
 
        read_sum_head(f_in, &sum);
 
        if (fd_r >= 0 && size_r > 0) {
        char *map = NULL;
 
        read_sum_head(f_in, &sum);
 
        if (fd_r >= 0 && size_r > 0) {
-               OFF_T map_size = MAX(sum.blength * 2, 16*1024);
+               OFF_T map_size = MAX((OFF_T)sum.blength * 2, 16*1024);
                mapbuf = map_file(fd_r, size_r, map_size, sum.blength);
                if (verbose > 2) {
                        rprintf(FINFO, "recv mapped %s of size %.0f\n",
                mapbuf = map_file(fd_r, size_r, map_size, sum.blength);
                if (verbose > 2) {
                        rprintf(FINFO, "recv mapped %s of size %.0f\n",
@@ -243,7 +243,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
                        stats.literal_data += i;
                        cleanup_got_literal = 1;
 
                        stats.literal_data += i;
                        cleanup_got_literal = 1;
 
-                       sum_update(data,i);
+                       sum_update(data, i);
 
                        if (fd != -1 && write_file(fd,data,i) != i)
                                goto report_write_error;
 
                        if (fd != -1 && write_file(fd,data,i) != i)
                                goto report_write_error;
@@ -252,22 +252,24 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
                }
 
                i = -(i+1);
                }
 
                i = -(i+1);
-               offset2 = i*(OFF_T)sum.blength;
+               offset2 = i * (OFF_T)sum.blength;
                len = sum.blength;
                if (i == (int)sum.count-1 && sum.remainder != 0)
                        len = sum.remainder;
 
                stats.matched_data += len;
 
                len = sum.blength;
                if (i == (int)sum.count-1 && sum.remainder != 0)
                        len = sum.remainder;
 
                stats.matched_data += len;
 
-               if (verbose > 3)
-                       rprintf(FINFO,"chunk[%d] of size %d at %.0f offset=%.0f\n",
-                               i,len,(double)offset2,(double)offset);
+               if (verbose > 3) {
+                       rprintf(FINFO,
+                               "chunk[%d] of size %ld at %.0f offset=%.0f\n",
+                               i, (long)len, (double)offset2, (double)offset);
+               }
 
                if (mapbuf) {
                        map = map_ptr(mapbuf,offset2,len);
 
                        see_token(map, len);
 
                if (mapbuf) {
                        map = map_ptr(mapbuf,offset2,len);
 
                        see_token(map, len);
-                       sum_update(map,len);
+                       sum_update(map, len);
                }
 
                if (inplace) {
                }
 
                if (inplace) {
index a59910e..80b7096 100644 (file)
--- a/sender.c
+++ b/sender.c
@@ -72,8 +72,8 @@ static struct sum_struct *receive_sums(int f)
        s->sums = NULL;
 
        if (verbose > 3) {
        s->sums = NULL;
 
        if (verbose > 3) {
-               rprintf(FINFO, "count=%ld n=%u rem=%u\n",
-                       (long)s->count, s->blength, s->remainder);
+               rprintf(FINFO, "count=%.0f n=%ld rem=%ld\n",
+                       (double)s->count, (long)s->blength, (long)s->remainder);
        }
 
        if (s->count == 0)
        }
 
        if (s->count == 0)
@@ -214,7 +214,7 @@ void send_files(struct file_list *flist, int f_out, int f_in)
                }
 
                if (st.st_size) {
                }
 
                if (st.st_size) {
-                       OFF_T map_size = MAX(s->blength * 3, MAX_MAP_SIZE);
+                       OFF_T map_size = MAX((OFF_T)s->blength * 3, MAX_MAP_SIZE);
                        mbuf = map_file(fd, st.st_size, map_size, s->blength);
                } else
                        mbuf = NULL;
                        mbuf = map_file(fd, st.st_size, map_size, s->blength);
                } else
                        mbuf = NULL;