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; }