X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/e42c9458c2f1e3a78d6d45e99741d6edb38fc0cc..de5fb3744da115dbdb66c7fbb894bf2ad9317fb7:/flist.c diff --git a/flist.c b/flist.c index bc1ceba9..d3c07edc 100644 --- a/flist.c +++ b/flist.c @@ -262,6 +262,12 @@ static void receive_file_entry(struct file_struct **fptr, clean_fname(thisname); + if (relative_paths && thisname[0] == '/') { + /* strip / off absolute paths in destination */ + memmove(thisname, thisname+1, strlen(thisname)); + if (!thisname[0]) strcpy(thisname,"."); + } + if ((p = strrchr(thisname,'/'))) { static char *lastdir; *p = 0; @@ -616,7 +622,7 @@ struct file_list *send_file_list(int f,int argc,char *argv[]) thus getting their permissions right */ *p = 0; if (strcmp(lastpath,fname)) { - strcpy(lastpath, fname); + strlcpy(lastpath, fname, sizeof(lastpath)-1); *p = '/'; for (p=fname+1; (p=strchr(p,'/')); p++) { *p = 0;