flist_gen_dirent() does a fts_read and inside that tries to read the symlink information. Now since fts_open did not specifiy FTS_NOCHDIR the symlink_read call needs to use ent->fts_accpath instead of f->path which was based on ent->fts_path.
OK? -- :wq Claudio Index: flist.c =================================================================== RCS file: /cvs/src/usr.bin/rsync/flist.c,v retrieving revision 1.34 diff -u -p -r1.34 flist.c --- flist.c 2 Sep 2021 21:06:06 -0000 1.34 +++ flist.c 3 Sep 2021 13:09:13 -0000 @@ -992,7 +992,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_accpath); if (f->link == NULL) { ERRX1("symlink_read"); goto out;