From nobody Tue Jan 14 21:08:01 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YXhYG1cgkz5kR52; Tue, 14 Jan 2025 21:08:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YXhYG02G3z4Nf3; Tue, 14 Jan 2025 21:08:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736888882; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XMRVIa2jjxKAe9lV0jVizjRgCI+XaL10JrML13dPUHg=; b=eI0bkfpCQvETiUYFUVc7Oe0wR2VNsiT3CqaBQQDTKrtZEjkIXEjJbG7EOWSk77LRp1TeE7 1t3lcHQdRVoYKuCK1M3GBtwuKJJEJ5FPz4TOOmkAu7VAxvLXhxjDpbbAjvEz+7Ow3AEwB6 9H50nfuUrbpl8++XfKPZ+x/DIUf9zLw601/Nnisl7PhK25sU4VqDSBsIrT5UTKGmswblMb vpNAuVyuLuwHvlSx0tbp+lIqkSghytMV0VyVF2tb/hbRPrvXaX3mtzRLJpTNKr7d7M/AcK nN2cEgsHLAr6Da+hmjqpYOOTQZI2hLQh20UJTFO2W+pZK9GHtUN0IfUhspAp1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736888882; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XMRVIa2jjxKAe9lV0jVizjRgCI+XaL10JrML13dPUHg=; b=EEIFJkfC3H9Yv/lYe0mq0EdRCL4S2vAaOOSEskuqOazxN8WACVvi2HACz5ZboVl6oW1X7g yAYY0VSF0fmUs7JkY1G7kbfZwSFfGxx7qmzae2wBuur1OFsS5adIoqbqe+nafCqd4jmEH9 Skv9svnXl4pvJOjb6pnmAI9+jT1BCJv8j4lm8v5xrIx5A5zimdC4HAoPxCxpxdv5ksKja8 5H4tlfwFXeBAPoRStWQNuXoQufvDBZMu27Nnsi5soudV8d7lLL1QrgBWcpixbLpOga6nc8 Xf5FgmoycTPmpXN69qqKhfW1B9qKZi0IdnT7zbLlDOz6lSeSTYLZK2Wk8mlH3w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1736888882; a=rsa-sha256; cv=none; b=QgDBvTC0yRZIs9dqDyyb9RCIYtzM8J6Cou7eXE6tdaPBiVf/K7sDl5uYO5W5fP/TEwbMxx YB0+1RF+9dokxhwPSvVYyEndaz4gpuXVnCcYYlixqc3qx2K1w0t9A4iN0baLhGXsQ5ctQD tz4X2nwij1aUoLraBSRoQU1HX5KqPQ34/VnqQR/vJkzAKjtTNNeFnWu/RJOeWhaOT84nEM KkONVC57RKKupwx8SgER4JFeKeBLTibqW5g47+Rvr1VhM2fK4MsPrDVWw3Ell8XFezpp7J ++RP3lijvZ6/CYzlEqnJgHBxwZlrwAAH/Sm0D7CUc0utR4BgDyTdXyxpCPLPRw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YXhYF6cMpz2H5; Tue, 14 Jan 2025 21:08:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50EL81PG029894; Tue, 14 Jan 2025 21:08:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50EL810F029891; Tue, 14 Jan 2025 21:08:01 GMT (envelope-from git) Date: Tue, 14 Jan 2025 21:08:01 GMT Message-Id: <202501142108.50EL810F029891@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 999c7a888f4f - stable/14 - makefs: Fix cd9660 filename buffer maximum length List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 999c7a888f4fbe74573bc342052f3146b8d756c9 Auto-Submitted: auto-generated The branch stable/14 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=999c7a888f4fbe74573bc342052f3146b8d756c9 commit 999c7a888f4fbe74573bc342052f3146b8d756c9 Author: Ed Maste AuthorDate: 2024-12-24 16:08:10 +0000 Commit: Ed Maste CommitDate: 2025-01-14 21:07:39 +0000 makefs: Fix cd9660 filename buffer maximum length The maximum length is 30 characters for name and extension, two separators (. and ;) and 5 characters for file version from 1 to 32767, which is 37 characters. Add one for the null term as we treat these buffers as C strings. This is not an issue in practice, as the file version is always 1 in makefs. While here, drop `_WITH_PADDING` from the macro name and update the previously-unused ISO_FILENAME_MAXLENGTH for the corrected length. A 0x00 padding byte is used by ISO9660 when needed for alignment, which can be the null byte at the end of the string. Use sizeof where appropriate. Reviewed by: kevans Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48193 (cherry picked from commit 2e09cef8dc6f46faba8bab87c42c3f19ba2ffe87) --- usr.sbin/makefs/cd9660.c | 16 +++++++--------- usr.sbin/makefs/cd9660.h | 9 ++++----- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/usr.sbin/makefs/cd9660.c b/usr.sbin/makefs/cd9660.c index 0263970bba89..5fc3ae4d8b2a 100644 --- a/usr.sbin/makefs/cd9660.c +++ b/usr.sbin/makefs/cd9660.c @@ -502,7 +502,7 @@ cd9660_makefs(const char *image, const char *dir, fsnode *root, real_root->isoDirRecord = emalloc(sizeof(*real_root->isoDirRecord)); /* Leave filename blank for root */ memset(real_root->isoDirRecord->name, 0, - ISO_FILENAME_MAXLENGTH_WITH_PADDING); + sizeof(real_root->isoDirRecord->name)); real_root->level = 0; diskStructure->rootNode = real_root; @@ -805,10 +805,10 @@ static int cd9660_translate_node_common(iso9660_disk *diskStructure, cd9660node *newnode) { u_char flag; - char temp[ISO_FILENAME_MAXLENGTH_WITH_PADDING]; + char temp[ISO_FILENAME_MAXLENGTH]; /* Now populate the isoDirRecord structure */ - memset(temp, 0, ISO_FILENAME_MAXLENGTH_WITH_PADDING); + memset(temp, 0, sizeof(temp)); (void)cd9660_convert_filename(diskStructure, newnode->node->name, temp, sizeof(temp), !(S_ISDIR(newnode->node->type))); @@ -1053,7 +1053,7 @@ cd9660_rename_filename(iso9660_disk *diskStructure, cd9660node *iter, int num, else maxlength = ISO_FILENAME_MAXLENGTH_BEFORE_VERSION; - tmp = emalloc(ISO_FILENAME_MAXLENGTH_WITH_PADDING); + tmp = emalloc(ISO_FILENAME_MAXLENGTH); while (i < num && iter) { powers = 1; @@ -1114,8 +1114,7 @@ cd9660_rename_filename(iso9660_disk *diskStructure, cd9660node *iter, int num, while (digits > 0) { digit = (int)(temp / powers); temp = temp - digit * powers; - snprintf(&tmp[numbts], - ISO_FILENAME_MAXLENGTH_WITH_PADDING - numbts, + snprintf(&tmp[numbts], ISO_FILENAME_MAXLENGTH - numbts, "%d", digit); digits--; numbts++; @@ -1162,8 +1161,7 @@ cd9660_copy_filenames(iso9660_disk *diskStructure, cd9660node *node) TAILQ_FOREACH(cn, &node->cn_children, cn_next_child) { cd9660_copy_filenames(diskStructure, cn); - memcpy(cn->o_name, cn->isoDirRecord->name, - ISO_FILENAME_MAXLENGTH_WITH_PADDING); + memcpy(cn->o_name, cn->isoDirRecord->name, sizeof(cn->o_name)); } } @@ -1286,7 +1284,7 @@ cd9660_rrip_move_directory(iso9660_disk *diskStructure, cd9660node *dir) /* TODO: Inherit permissions / ownership (basically the entire inode) */ /* Set the new name */ - memset(dir->isoDirRecord->name, 0, ISO_FILENAME_MAXLENGTH_WITH_PADDING); + memset(dir->isoDirRecord->name, 0, sizeof(dir->isoDirRecord->name)); strncpy(dir->isoDirRecord->name, newname, 8); dir->isoDirRecord->length[0] = 34 + 8; dir->isoDirRecord->name_len[0] = 8; diff --git a/usr.sbin/makefs/cd9660.h b/usr.sbin/makefs/cd9660.h index b7324322d383..2892d6d206c2 100644 --- a/usr.sbin/makefs/cd9660.h +++ b/usr.sbin/makefs/cd9660.h @@ -72,8 +72,7 @@ /*30 for name and extension, as well as version number and padding bit*/ #define ISO_FILENAME_MAXLENGTH_BEFORE_VERSION 30 -#define ISO_FILENAME_MAXLENGTH 36 -#define ISO_FILENAME_MAXLENGTH_WITH_PADDING 37 +#define ISO_FILENAME_MAXLENGTH 38 #define ISO_FLAG_CLEAR 0x00 #define ISO_FLAG_HIDDEN 0x01 @@ -118,7 +117,7 @@ typedef struct _iso_directory_record_cd9660 { u_char interleave [ISODCL (28, 28)]; /* 711 */ u_char volume_sequence_number [ISODCL (29, 32)]; /* 723 */ u_char name_len [ISODCL (33, 33)]; /* 711 */ - char name [ISO_FILENAME_MAXLENGTH_WITH_PADDING]; + char name [ISO_FILENAME_MAXLENGTH]; } iso_directory_record_cd9660; /* TODO: Lots of optimization of this structure */ @@ -154,7 +153,7 @@ typedef struct _cd9660node { int fileRecordSize;/*copy of a variable, int for quicker calculations*/ /* Old name, used for renaming - needs to be optimized but low priority */ - char o_name [ISO_FILENAME_MAXLENGTH_WITH_PADDING]; + char o_name [ISO_FILENAME_MAXLENGTH]; /***** SPACE RESERVED FOR EXTENSIONS *****/ /* For memory efficiency's sake - we should move this to a separate struct @@ -194,7 +193,7 @@ typedef struct _path_table_entry u_char extended_attribute_length[ISODCL (2, 2)]; u_char first_sector[ISODCL (3, 6)]; u_char parent_number[ISODCL (7, 8)]; - char name[ISO_FILENAME_MAXLENGTH_WITH_PADDING]; + char name[ISO_FILENAME_MAXLENGTH]; } path_table_entry; typedef struct _volume_descriptor