Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
buffer overflow patches from mhpower@mit.edu (Matt Power)
[rsync/rsync.git]
/
rsync.c
diff --git
a/rsync.c
b/rsync.c
index
80bc59a
..
6e7f936
100644
(file)
--- a/
rsync.c
+++ b/
rsync.c
@@
-416,6
+416,7
@@
void recv_generator(char *fname,struct file_list *flist,int i,int f_out)
if (fd == -1) {
fprintf(FERROR,"failed to open %s : %s\n",fname,strerror(errno));
if (fd == -1) {
fprintf(FERROR,"failed to open %s : %s\n",fname,strerror(errno));
+ fprintf(FERROR,"skipping %s\n",fname);
return;
}
return;
}
@@
-802,6
+803,11
@@
off_t send_files(struct file_list *flist,int f_out,int f_in)
if (file->dir) {
strncpy(fname,file->dir,MAXPATHLEN-1);
fname[MAXPATHLEN-1] = 0;
if (file->dir) {
strncpy(fname,file->dir,MAXPATHLEN-1);
fname[MAXPATHLEN-1] = 0;
+ if (strlen(fname) == MAXPATHLEN-1) {
+ fprintf(FERROR, "send_files failed on long-named directory %s\n",
+ fname);
+ return -1;
+ }
strcat(fname,"/");
}
strncat(fname,file->name,MAXPATHLEN-strlen(fname));
strcat(fname,"/");
}
strncat(fname,file->name,MAXPATHLEN-strlen(fname));