From bc231fc7824aba2ecad7a9b2491618a03b00c747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 20 May 2020 19:02:06 +0200 Subject: [PATCH] kernel/fs: rootfs and devfs readlink behavior change Change-Id: I23ec687965493162594924c32f8ff31e7da396d7 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2753 Reviewed-by: waddlesplash --- src/system/kernel/device_manager/devfs.cpp | 7 ++++--- src/system/kernel/fs/rootfs.cpp | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/system/kernel/device_manager/devfs.cpp b/src/system/kernel/device_manager/devfs.cpp index 4fc5d3102d..65b9ce7cc6 100644 --- a/src/system/kernel/device_manager/devfs.cpp +++ b/src/system/kernel/device_manager/devfs.cpp @@ -1185,10 +1185,11 @@ devfs_read_link(fs_volume* _volume, fs_vnode* _link, char* buffer, if (!S_ISLNK(link->stream.type)) return B_BAD_VALUE; - if (link->stream.u.symlink.length < *_bufferSize) - *_bufferSize = link->stream.u.symlink.length; + memcpy(buffer, link->stream.u.symlink.path, min_c(*_bufferSize, + link->stream.u.symlink.length)); + + *_bufferSize = link->stream.u.symlink.length; - memcpy(buffer, link->stream.u.symlink.path, *_bufferSize); return B_OK; } diff --git a/src/system/kernel/fs/rootfs.cpp b/src/system/kernel/fs/rootfs.cpp index b60ef39927..fa255fe461 100644 --- a/src/system/kernel/fs/rootfs.cpp +++ b/src/system/kernel/fs/rootfs.cpp @@ -867,10 +867,11 @@ rootfs_read_link(fs_volume* _volume, fs_vnode* _link, char* buffer, if (!S_ISLNK(link->stream.type)) return B_BAD_VALUE; - if (link->stream.symlink.length < *_bufferSize) - *_bufferSize = link->stream.symlink.length; + memcpy(buffer, link->stream.symlink.path, min_c(*_bufferSize, + link->stream.symlink.length)); + + *_bufferSize = link->stream.symlink.length; - memcpy(buffer, link->stream.symlink.path, *_bufferSize); return B_OK; }