From 3ea7d1fcbe15d798f9891c3b8a547bd049de3709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 27 Feb 2006 13:23:29 +0000 Subject: [PATCH] Minor cleanup, now returns B_NAME_TOO_LONG if the query string or mount parameters were longer than 64k. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16527 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/fs/vfs.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp index ff00b92eb3..427c3b9bf1 100644 --- a/src/system/kernel/fs/vfs.cpp +++ b/src/system/kernel/fs/vfs.cpp @@ -6226,16 +6226,18 @@ _user_mount(const char *userPath, const char *userDevice, const char *userFileSy return B_BAD_ADDRESS; if (userArgs != NULL && argsLength > 0) { + // this is a safety restriction if (argsLength >= 65536) - return B_BAD_VALUE; + return B_NAME_TOO_LONG; + args = (char *)malloc(argsLength + 1); if (args == NULL) return B_NO_MEMORY; + if (user_strlcpy(args, userArgs, argsLength + 1) < B_OK) { free(args); return B_BAD_ADDRESS; } - } path.UnlockBuffer(); device.UnlockBuffer(); @@ -7093,9 +7095,13 @@ _user_open_query(dev_t device, const char *userQuery, size_t queryLength, { char *query; - if (device < 0 || userQuery == NULL || queryLength == 0 || queryLength >= 65536) + if (device < 0 || userQuery == NULL || queryLength == 0) return B_BAD_VALUE; + // this is a safety restriction + if (queryLength >= 65536) + return B_NAME_TOO_LONG; + query = (char *)malloc(queryLength + 1); if (query == NULL) return B_NO_MEMORY;