userlandfs: Fix GetVNodeName
- VNode names are now allowed to have a length of 1. This is common for Windows drives mounted through a shared filesystem. - Empty VNode names are now checked from the userland side, preventing the kernel driver to reject and not ACK a false B_OK from the userland server. Change-Id: If0a6fcea1387367d1492c9b94c62c03e381ce1c1 Reviewed-on: https://review.haiku-os.org/c/haiku/+/6276 Reviewed-by: waddlesplash <[email protected]> Tested-by: Automation <[email protected]> Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
committed by
waddlesplash
parent
7beba92388
commit
35212f7bef
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user