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
Some daemon security improvements, including the new parameters
[rsync/rsync.git]
/
generator.c
diff --git
a/generator.c
b/generator.c
index
bf11275
..
4eb5325
100644
(file)
--- a/
generator.c
+++ b/
generator.c
@@
-278,10
+278,10
@@
static enum delret delete_dir_contents(char *fname, int flags)
}
strlcpy(p, fp->basename, remainder);
}
strlcpy(p, fp->basename, remainder);
- if (F_OWNER(fp) == our_uid)
+ if (
!uid_ndx || (uid_t)
F_OWNER(fp) == our_uid)
flags |= DEL_OWNED_BY_US;
else
flags |= DEL_OWNED_BY_US;
else
- flags &= DEL_OWNED_BY_US;
+ flags &=
~
DEL_OWNED_BY_US;
/* Save stack by recursing to ourself directly. */
if (S_ISDIR(fp->mode)) {
if (!am_root && !(fp->mode & S_IWUSR) && flags & DEL_OWNED_BY_US)
/* Save stack by recursing to ourself directly. */
if (S_ISDIR(fp->mode)) {
if (!am_root && !(fp->mode & S_IWUSR) && flags & DEL_OWNED_BY_US)
@@
-503,7
+503,7
@@
static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
}
if (flist_find(cur_flist, fp) < 0) {
int flags = DEL_RECURSE
}
if (flist_find(cur_flist, fp) < 0) {
int flags = DEL_RECURSE
- | (F_OWNER(fp) == our_uid ? DEL_OWNED_BY_US : 0);
+ | (
!uid_ndx || (uid_t)
F_OWNER(fp) == our_uid ? DEL_OWNED_BY_US : 0);
f_name(fp, delbuf);
if (delete_during == 2) {
if (!remember_delete(fp, delbuf, flags))
f_name(fp, delbuf);
if (delete_during == 2) {
if (!remember_delete(fp, delbuf, flags))
@@
-1229,11
+1229,9
@@
static void recv_generator(char *fname, struct file_struct *file, int ndx,
excluded_dir = file;
}
skipping:
excluded_dir = file;
}
skipping:
- if (verbose) {
- rprintf(FINFO,
- "skipping server-excluded file \"%s\"\n",
- fname);
- }
+ rprintf(FERROR_XFER,
+ "skipping daemon-excluded file \"%s\"\n",
+ fname);
return;
}
}
return;
}
}
@@
-1316,7
+1314,7
@@
static void recv_generator(char *fname, struct file_struct *file, int ndx,
return;
}
return;
}
- if (statret == 0 &&
F_OWNER(file)
== our_uid)
+ if (statret == 0 &&
sx.st.st_uid
== our_uid)
del_opts |= DEL_OWNED_BY_US;
if (S_ISDIR(file->mode)) {
del_opts |= DEL_OWNED_BY_US;
if (S_ISDIR(file->mode)) {