diff options
author | Wayne Davison <wayned@samba.org> | 2014-03-02 16:37:44 -0800 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2014-03-02 16:47:01 -0800 |
commit | 371242e4e8150d4f9cc74cdf2d75d8250535175e (patch) | |
tree | 6accc8964723b66946640b2dc60b906011bc7d44 | |
parent | e1bfdf67f3944e4f23202943cc5f535b4b66ee57 (diff) | |
download | rsync-371242e4e8150d4f9cc74cdf2d75d8250535175e.tar.gz rsync-371242e4e8150d4f9cc74cdf2d75d8250535175e.tar.bz2 rsync-371242e4e8150d4f9cc74cdf2d75d8250535175e.zip |
Have receiver strip bogus leading slashes on filenames.
If the receiver is running without --relative, it shouldn't be receiving
any filenames with a leading slash. To ensure that the sender doesn't
try to pull a fast one on us, we now make flist_sort_and_clean() strip a
leading slash even if --relative isn't specified.
-rw-r--r-- | flist.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -2553,7 +2553,11 @@ struct file_list *recv_file_list(int f) rprintf(FINFO, "[%s] flist_eof=1\n", who_am_i()); } - flist_sort_and_clean(flist, relative_paths); + /* The --relative option sends paths with a leading slash, so we need + * to specify the strip_root option here. We also want to ensure that + * a non-relative transfer doesn't have any leading slashes or it might + * cause the client a security issue. */ + flist_sort_and_clean(flist, 1); if (protocol_version < 30) { /* Recv the io_error flag */ |