Hit this today while doing some tests. symlink_read() needs to use just
the filename and not the full path because fts_read(3) does chdir
internally.

Without this I got:
openrsync: error: ./obj/openrsync.1: readlink: No such file or directory
openrsync: error: symlink_read
openrsync: error: flist_gen_dirent
openrsync: error: flist_gen
openrsync: error: rsync_sender

-- 
:wq Claudio

Index: flist.c
===================================================================
RCS file: /cvs/src/usr.bin/rsync/flist.c,v
retrieving revision 1.32
diff -u -p -r1.32 flist.c
--- flist.c     30 Jun 2021 13:10:04 -0000      1.32
+++ flist.c     2 Jul 2021 13:14:01 -0000
@@ -972,7 +972,7 @@ flist_gen_dirent(struct sess *sess, char
                /* Optionally copy link information. */
 
                if (S_ISLNK(ent->fts_statp->st_mode)) {
-                       f->link = symlink_read(f->path);
+                       f->link = symlink_read(ent->fts_name);
                        if (f->link == NULL) {
                                ERRX1("symlink_read");
                                goto out;

Reply via email to