git: 978aaa72f319 - main - cd9660: Unbreak symbolic links
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 10 Nov 2025 13:58:38 UTC
The branch main has been updated by des:
URL: https://cgit.FreeBSD.org/src/commit/?id=978aaa72f3196f5489630052762cac5a7863e774
commit 978aaa72f3196f5489630052762cac5a7863e774
Author: Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2025-11-10 13:58:11 +0000
Commit: Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2025-11-10 13:58:20 +0000
cd9660: Unbreak symbolic links
Since the introduction of permission masks, cd9660_getattr() returns a
size of zero for all symbolic links, because the code to retrieve the
length of the link target (as required by POSIX) is dead, since we strip
away the type bits before we try to use them to identify the file as a
link. Address this by checking the vnode type instead.
PR: 290556
MFC after: 3 days
Fixes: 82f2275b73e5 ("cd9660: Add support for mask,dirmask,uid,gid options")
Reviewed by: olce
Differential Revision: https://reviews.freebsd.org/D53598
---
sys/fs/cd9660/cd9660_vnops.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c
index 4a2b80a7ccdd..92ea6d2b4501 100644
--- a/sys/fs/cd9660/cd9660_vnops.c
+++ b/sys/fs/cd9660/cd9660_vnops.c
@@ -193,8 +193,8 @@ cd9660_getattr(struct vop_getattr_args *ap)
vap->va_ctime = ip->inode.iso_ctime;
vap->va_rdev = VN_ISDEV(vp) ? ip->inode.iso_rdev : NODEV;
- vap->va_size = (u_quad_t) ip->i_size;
- if (ip->i_size == 0 && (vap->va_mode & S_IFMT) == S_IFLNK) {
+ vap->va_size = ip->i_size;
+ if (ip->i_size == 0 && vp->v_type == VLNK) {
struct vop_readlink_args rdlnk;
struct iovec aiov;
struct uio auio;