diff --git a/src/add-ons/kernel/file_systems/fat/attr.c b/src/add-ons/kernel/file_systems/fat/attr.c index 3042278f05..850f959e2c 100644 --- a/src/add-ons/kernel/file_systems/fat/attr.c +++ b/src/add-ons/kernel/file_systems/fat/attr.c @@ -233,11 +233,13 @@ dosfs_read_attr(fs_volume *_vol, fs_vnode *_node, void *_cookie, off_t pos, return EINVAL; } - if (user_strlcpy(buffer, node->mime + pos, *_length) < B_OK) { + ssize_t length = user_strlcpy(buffer, node->mime + pos, *_length); + if (length < B_OK) { UNLOCK_VOL(vol); return B_BAD_ADDRESS; } - *_length = strlen(buffer) + 1; + if (length < *_length) + *_length = length + 1; UNLOCK_VOL(vol); return 0;