When copy file by rcp command, if the file > 2GB, it will not work.

On host(Ubuntu 12.04.4 LTS):
root@wl:/build#du -sh file2_2G_h.img
2.1G    file2_2G_h.img
root@wl:/build#$rcp file2_2G_h.img root@target_ip:/media/sda4/test
rcp: lost connection

On target(inetutils has installed):
root@17287:/media/sda4/test1# rcp root@host_ip:/build/file2_2G_h.img .
rcp: rcp[970]: segfault at 22 ip 000000391dc47ec7 sp 00007ffd858e2d50 error 4 
in libc-2.18.so[391dc00000+1a3000]
Segmentation fault

The cause is that it used incorrect data type on file size in sink() of rcp.
The patch also references the follow link:
https://bugzilla.redhat.com/attachment.cgi?id=89423

Signed-off-by: wlkang2...@126.com
Signed-off-by: Wenlin Kang <wenlin.k...@windriver.com>
---
 src/rcp.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/rcp.c b/src/rcp.c
index 21f55b6..bafa35f 100644
--- a/src/rcp.c
+++ b/src/rcp.c
@@ -876,9 +876,9 @@ sink (int argc, char *argv[])
   enum
   { YES, NO, DISPLAYED } wrerr;
   BUF *bp;
-  off_t i, j;
+  off_t i, j, size;
   int amt, count, exists, first, mask, mode, ofd, omode;
-  int setimes, size, targisdir, wrerrno;
+  int setimes, targisdir, wrerrno;
   char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ];
   const char *why;
 
-- 
1.7.9.5


Reply via email to