aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/devfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/devfs')
-rw-r--r--sys/fs/devfs/devfs_devs.c3
-rw-r--r--sys/fs/devfs/devfs_vnops.c5
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c
index bb6b3164b12a..30558ec8df5f 100644
--- a/sys/fs/devfs/devfs_devs.c
+++ b/sys/fs/devfs/devfs_devs.c
@@ -200,7 +200,8 @@ devfs_newdirent(char *name, int namelen)
de->de_dirent = (struct dirent *)(de + 1);
de->de_dirent->d_namlen = namelen;
de->de_dirent->d_reclen = GENERIC_DIRSIZ(&d);
- bcopy(name, de->de_dirent->d_name, namelen + 1);
+ bcopy(name, de->de_dirent->d_name, namelen);
+ de->de_dirent->d_name[namelen] = '\0';
nanotime(&de->de_ctime);
de->de_mtime = de->de_atime = de->de_ctime;
de->de_links = 1;
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index fad4ec7b8cf7..4337bd27c9ab 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -153,7 +153,10 @@ devfs_getattr(ap)
vap->va_uid = de->de_uid;
vap->va_gid = de->de_gid;
vap->va_mode = de->de_mode;
- vap->va_size = 0;
+ if (vp->v_type == VLNK)
+ vap->va_size = de->de_dirent->d_namlen;
+ else
+ vap->va_size = 0;
vap->va_blocksize = DEV_BSIZE;
vap->va_type = vp->v_type;
if (vp->v_type != VCHR) {