From nobody Mon Jul 07 17:23:02 2025 X-Original-To: dev-commits-src-main@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 4bbWKL6RMMz60kqZ; Mon, 07 Jul 2025 17:23: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bbWKL4DwDz3dJv; Mon, 07 Jul 2025 17:23:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751908982; 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=WUH7CrmpQGitXyfkhMpTF0xyjNwPmKZAFatBJobGNcA=; b=ZWXGenFPU35Ubcr7YAZ/hD2l9k/Bz+wYsstSo08zqY/Eij3um2kbzUG1ycn9p3qu6C4jJG Q2bfuTutpc7+9dN2cNyg/c3ZP0tFI7KzYTxpfMaKKI65WrrPWkPt7G1kyZjjNkWx0/eVRB YvlnDoLJofHHyl7YdnQVnA0kqsMWiLpzk0jWeEim2MO8ZbQWzRkydgUZDVRRljjESM2l/w i+c2bJm5WXyDrk1OUeC/pbwohz2indI2a/TUxboLuJ14bWnJBFPlSDFUIas2hhH77ok09e LyPmhafWnocGBJAmPJ6uihJJRcrLoxSX22SwwvCntqQVQuXuVYK8NptVJDY7Jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751908982; 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=WUH7CrmpQGitXyfkhMpTF0xyjNwPmKZAFatBJobGNcA=; b=B1DCDqbwBnQOzoMbTTduGu31K+4Xok5lyfBhVaQ1YIPQG2qKnNAIYMXRVSWFGzwgibQeJH hZfD5oq74yCNE6Zguezp1YDkW2TxV/0vT7AP/rwmiDr1BrRLulBv83G/ukSCRt3Rz49RVm SqAW27/vF7DXysITMSTuDVwXvOBM+uA0sL9o6cjZ3S+ZF5TooQWbc+Lg0ghnJ1hoI0LPGu kdSHxTeb9g2QgEKvDy1rob/917RVUrL2LwBOG4bKfUS7mWtzBpjrGP/2UpnhcS916PZJNY rjPmBci7Pw8brGj5tA453wVkugp/RzOGPe+Hfa9GgK0O1Wf0heZ76q88ygFjOg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1751908982; a=rsa-sha256; cv=none; b=xgSoWvj42tRFSlYFuxk1ywTVAYeuguPv8nbThlOU/DOcGOtHs+hOBGwJD0NjDHB+63I4ie hO7XtB8y5T6AbylQu9VgpVQPjI7VGevjB7RN1ezWClHkI9h8yqnShe1VCN9a6EvJOX2FLs Se9eRBoKOKukbkpneg9vNAdos7IIN8qXV2ni3QokaTb6ImMSfV6FBZX1gRtCZt+tcNpEPz R8qQjANgoaOFCjiKckURnNtbUvZ539wZYj5vJcBvwcMxRXGeJqYZFwUIIDrxLQ5UgJOk/3 FtRLxeNLkn9V0MMwlFVAGkGT6lK8jwbp+4pXH3EFbBGeFPj6H13MRUrFruTIGQ== 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 4bbWKL3hNKz10XC; Mon, 07 Jul 2025 17:23:02 +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 567HN2V9080665; Mon, 7 Jul 2025 17:23:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 567HN2Qr080662; Mon, 7 Jul 2025 17:23:02 GMT (envelope-from git) Date: Mon, 7 Jul 2025 17:23:02 GMT Message-Id: <202507071723.567HN2Qr080662@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 6b7b8575e979 - main - mfiutil: Use sbuf(3) to construct drive names in mfi_drive_name List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6b7b8575e97980166416886935e8cf376e50d88d Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6b7b8575e97980166416886935e8cf376e50d88d commit 6b7b8575e97980166416886935e8cf376e50d88d Author: John Baldwin AuthorDate: 2025-07-07 16:37:28 +0000 Commit: John Baldwin CommitDate: 2025-07-07 16:37:28 +0000 mfiutil: Use sbuf(3) to construct drive names in mfi_drive_name This replaces fragile uses of snprintf(). Note that I did not keep the truncation check for the space separator in the middle of the drive name since the same check was not applied to the second part, so the name was truncated anyway. Just truncate the entire result if it doesn't fit. Differential Revision: https://reviews.freebsd.org/D50883 --- usr.sbin/mfiutil/Makefile | 2 +- usr.sbin/mfiutil/mfi_drive.c | 34 ++++++++++++---------------------- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/usr.sbin/mfiutil/Makefile b/usr.sbin/mfiutil/Makefile index da1c9249f8cd..85b66d4b6f49 100644 --- a/usr.sbin/mfiutil/Makefile +++ b/usr.sbin/mfiutil/Makefile @@ -9,7 +9,7 @@ MLINKS= mfiutil.8 mrsasutil.8 CFLAGS.gcc+= -fno-builtin-strftime -LIBADD= util +LIBADD= sbuf util # Here be dragons .ifdef DEBUG diff --git a/usr.sbin/mfiutil/mfi_drive.c b/usr.sbin/mfiutil/mfi_drive.c index e8e945c566c4..c7c5aeb02f14 100644 --- a/usr.sbin/mfiutil/mfi_drive.c +++ b/usr.sbin/mfiutil/mfi_drive.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -56,9 +57,9 @@ const char * mfi_drive_name(struct mfi_pd_info *pinfo, uint16_t device_id, uint32_t def) { struct mfi_pd_info info; + struct sbuf sb; static char buf[16]; - char *p; - int error, fd, len; + int fd; if ((def & MFI_DNAME_HONOR_OPTS) != 0 && (mfi_opts & (MFI_DNAME_ES|MFI_DNAME_DEVICE_ID)) != 0) @@ -89,40 +90,29 @@ mfi_drive_name(struct mfi_pd_info *pinfo, uint16_t device_id, uint32_t def) pinfo = &info; } - p = buf; - len = sizeof(buf); + sbuf_new(&sb, buf, sizeof(buf), SBUF_FIXEDLEN); if (def & MFI_DNAME_DEVICE_ID) { if (device_id == 0xffff) - error = snprintf(p, len, "MISSING"); + sbuf_printf(&sb, "MISSING"); else - error = snprintf(p, len, "%2u", device_id); - if (error >= 0) { - p += error; - len -= error; - } + sbuf_printf(&sb, "%2u", device_id); } if ((def & (MFI_DNAME_ES|MFI_DNAME_DEVICE_ID)) == - (MFI_DNAME_ES|MFI_DNAME_DEVICE_ID) && len >= 2) { - *p++ = ' '; - len--; - *p = '\0'; - len--; + (MFI_DNAME_ES|MFI_DNAME_DEVICE_ID)) { + sbuf_cat(&sb, " "); } if (def & MFI_DNAME_ES) { if (pinfo->encl_device_id == 0xffff) - error = snprintf(p, len, "S%u", + sbuf_printf(&sb, "S%u", pinfo->slot_number); else if (pinfo->encl_device_id == pinfo->ref.v.device_id) - error = snprintf(p, len, "E%u", + sbuf_printf(&sb, "E%u", pinfo->encl_index); else - error = snprintf(p, len, "E%u:S%u", + sbuf_printf(&sb, "E%u:S%u", pinfo->encl_index, pinfo->slot_number); - if (error >= 0) { - p += error; - len -= error; - } } + sbuf_finish(&sb); return (buf); }