From 0843085384620b855ccf458e9ef329264306933d Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 17 Nov 2022 17:15:57 -0500 Subject: [PATCH] FAT: Limit volume names to 11 characters, not 10. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rest of the code does a memcpy(..., ..., min(11, strlen(...)) so clearly no NULL terminator is needed and 11 is the real limit. Should fix #18074. Change-Id: I6aea166899eab2bab9511ca52981ccc9172b6c17 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5823 Tested-by: Commit checker robot Reviewed-by: Jérôme Duval --- src/add-ons/kernel/file_systems/fat/mkdos.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/file_systems/fat/mkdos.cpp b/src/add-ons/kernel/file_systems/fat/mkdos.cpp index a11a974d3b..ce8adf6ab9 100644 --- a/src/add-ons/kernel/file_systems/fat/mkdos.cpp +++ b/src/add-ons/kernel/file_systems/fat/mkdos.cpp @@ -41,10 +41,12 @@ create_volume_label_sector(void *sector, const char *label) status_t check_volume_name(const char* name) { - if (name == NULL || strlen(name) >= 11 - || strchr(name, '/') != NULL) { + if (name == NULL) + return B_BAD_VALUE; + if (strlen(name) > 11) + return B_NAME_TOO_LONG; + if (strchr(name, '/') != NULL) return B_BAD_VALUE; - } return B_OK; }