diff --git a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp index 770752e964..f31966accd 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp @@ -1045,7 +1045,7 @@ Volume::GetVNodeName(void* _node, char* buffer, size_t bufferSize) char* readBuffer = (char*)reply->buffer.GetData(); size_t nameLen = reply->buffer.GetSize(); nameLen = strnlen(readBuffer, nameLen); - if (nameLen <= 1 || nameLen >= bufferSize) + if (nameLen <= 0 || nameLen >= bufferSize) RETURN_ERROR(B_BAD_DATA); memcpy(buffer, readBuffer, nameLen); diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp b/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp index 9709820791..fa182ef37f 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp @@ -959,6 +959,9 @@ FUSEVolume::GetVNodeName(void* _node, char* buffer, size_t bufferSize) if (entry == NULL) RETURN_ERROR(B_ENTRY_NOT_FOUND); + if (entry->name == NULL || entry->name[0] == '\0') + RETURN_ERROR(B_BAD_DATA); + if (strlcpy(buffer, entry->name, bufferSize) >= bufferSize) RETURN_ERROR(B_NAME_TOO_LONG);