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
changed the name of the temporary filename to include a leading . so
[rsync/rsync.git]
/
rsync.c
diff --git
a/rsync.c
b/rsync.c
index
9d3b1c5
..
9d11b72
100644
(file)
--- a/
rsync.c
+++ b/
rsync.c
@@
-111,7
+111,7
@@
static int delete_file(char *fname)
if (strcmp(dname,".")==0 ||
strcmp(dname,"..")==0)
continue;
if (strcmp(dname,".")==0 ||
strcmp(dname,"..")==0)
continue;
- str
n
cpy(buf, fname, (MAXPATHLEN-strlen(dname))-2);
+ str
l
cpy(buf, fname, (MAXPATHLEN-strlen(dname))-2);
strcat(buf, "/");
strcat(buf, dname);
buf[MAXPATHLEN-1] = 0;
strcat(buf, "/");
strcat(buf, dname);
buf[MAXPATHLEN-1] = 0;
@@
-818,12
+818,6
@@
int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
}
/* open tmp file */
}
/* open tmp file */
- if (strlen(fname) > (MAXPATHLEN-8)) {
- rprintf(FERROR,"filename too long\n");
- if (buf) unmap_file(buf);
- close(fd1);
- continue;
- }
if (tmpdir) {
char *f;
f = strrchr(fname,'/');
if (tmpdir) {
char *f;
f = strrchr(fname,'/');
@@
-831,9
+825,22
@@
int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
f = fname;
else
f++;
f = fname;
else
f++;
- sprintf(fnametmp,"%s/%s.XXXXXX",tmpdir,f);
+ if (strlen(tmpdir)+strlen(f)+10 > MAXPATHLEN) {
+ rprintf(FERROR,"filename too long\n");
+ if (buf) unmap_file(buf);
+ close(fd1);
+ continue;
+ }
+ sprintf(fnametmp,"%s/.%s.XXXXXX",tmpdir,f);
} else {
} else {
- sprintf(fnametmp,"%s.XXXXXX",fname);
+ if (strlen(fname)+9 > MAXPATHLEN) {
+ rprintf(FERROR,"filename too long\n");
+ if (buf) unmap_file(buf);
+ close(fd1);
+ continue;
+ }
+
+ sprintf(fnametmp,".%s.XXXXXX",fname);
}
if (NULL == do_mktemp(fnametmp)) {
rprintf(FERROR,"mktemp %s failed\n",fnametmp);
}
if (NULL == do_mktemp(fnametmp)) {
rprintf(FERROR,"mktemp %s failed\n",fnametmp);
@@
-976,8
+983,7
@@
void send_files(struct file_list *flist,int f_out,int f_in)
fname[0] = 0;
if (file->basedir) {
fname[0] = 0;
if (file->basedir) {
- strncpy(fname,file->basedir,MAXPATHLEN-1);
- fname[MAXPATHLEN-1] = 0;
+ strlcpy(fname,file->basedir,MAXPATHLEN-1);
if (strlen(fname) == MAXPATHLEN-1) {
io_error = 1;
rprintf(FERROR, "send_files failed on long-named directory %s\n",
if (strlen(fname) == MAXPATHLEN-1) {
io_error = 1;
rprintf(FERROR, "send_files failed on long-named directory %s\n",