diff options
author | Andrew Tridgell <tridge@samba.org> | 2000-01-06 00:26:00 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2000-01-06 00:26:00 +0000 |
commit | a5827a28d296b62cd9b20a221991903601938448 (patch) | |
tree | f4f2ac5f2081da0770b82dde9f363f4940048044 /rsync.c | |
parent | dcc875e41e1c9865755dbd0cc839e74ac878910e (diff) | |
download | rsync-a5827a28d296b62cd9b20a221991903601938448.tar.gz rsync-a5827a28d296b62cd9b20a221991903601938448.tar.bz2 rsync-a5827a28d296b62cd9b20a221991903601938448.zip |
when we do a lchown() on a file we have to flush the cached perms on
the file if the file has the setuid or setgid bits set as the chown
has a side effect of removing the setuid and setgid bits.
we re-do the stat in this case
Diffstat (limited to 'rsync.c')
-rw-r--r-- | rsync.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -195,6 +195,12 @@ int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st, rprintf(FERROR,"chown %s : %s\n", fname,strerror(errno)); return 0; } + /* a lchown had been done - we have to re-stat if the + destination had the setuid or setgid bits set due + to the side effect of the chown call */ + if (st->st_mode & (S_ISUID | S_ISGID)) { + link_stat(fname, st); + } updated = 1; } |