From nobody Wed Mar 15 22:36:59 2023 X-Original-To: dev-commits-src-branches@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 4PcQHb41mFz3xtTw; Wed, 15 Mar 2023 22:36:59 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PcQHb3Ys9z47CQ; Wed, 15 Mar 2023 22:36:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1678919819; 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=6zqLsSPczd3LJ1o9NrOAeidM2Bn6y9RlZZ/ZieOUVz0=; b=H7Dw1aXPTG8xblmuMzDCa0+11B38WLxkrsOAQ2R8+VdeopxgbXuQbe6HZioedrNtzDVU61 tGo5Up1Lw+uLOqlkqqfsMgq6UC6zcVtJFwzkemo4TWKcMVazQhmdqGfA8+V/X5TQpBIbJx ptRef6hV4codu7CsY1DcRSQOzeIhmHvVCwQUxFr0EFSTB0kLL7n0uErkQJ4mnw1HHc8isk GimAvlsKicm/t1+jnGJfSw1AMs7zUnw4Z4NGXxc80X7yed5NaNjXe1cwOfovU11mrp5Pfe jx9mszNo57VqdndAIZAffvIoE67vJPv3u2d2rVojVJl0z8B6zqNN4AgElFZGHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1678919819; 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=6zqLsSPczd3LJ1o9NrOAeidM2Bn6y9RlZZ/ZieOUVz0=; b=QpnCPWR8O84l1CNlqtEDv09o7x7lCK4nNPGvryHhyS9iGkojB5Y/tJg0MELWhOL0V96Cxg NCwTouYJge13jzw14OH/t7yErBKMZunrLoPv0Z4bGnIVIPd1bRE+Q4ie7lCVl0jgN6Zp9I Pjg+mea90p3IROIDlsYf5WS2z913lh3lcZ07gkZ5g61JRzXg3JI5py5dcqzj/pSeLVDHtb /CNWgX+Y7tKv0ZPfiDnt+0gXZ+UwbQw8kFJWh4vu/ReGMbhW92ulDPLgmcqDSMVytBU7hZ HQ9MByGM2j9PKuyH/PYNbUqteHp37kli7LkxQzkvlHDrJSETkk/NJP6GPhmrmg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1678919819; a=rsa-sha256; cv=none; b=MAdfaGPDJ9a2Xp4PVDWXkOlGEdvvgz6IJ/N69RJuolSgR31b0I5m8hyKxBt6O28KdT6eKf 2HBFGynNhU3JxLbxjOGxSBuRdfQSHkgD63HR6cLp/VSFC0IoAhjBzoHwYHA8/SkErEpYQ0 pagsNknNsrXcJl0tcRNoZXExHtiCxECNCdiTuQ0gR057FIfv2yuL/NL5n8ujQghlyJwUAZ lG4zmBNtxupYQ6hr9jn+hhNdgy/b6jQhnhdV01SLGvBKPGOLxH0eWutet/JpdbGLDofoNG kizQsRs4DiB3dfmFcHv/lW3FjC6T3OkvwLBufmBpULIa4fS3sKccEgT8/w8q1Q== 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 4PcQHb2c3CzKJy; Wed, 15 Mar 2023 22:36:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 32FMaxo5033434; Wed, 15 Mar 2023 22:36:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 32FMaxaW033433; Wed, 15 Mar 2023 22:36:59 GMT (envelope-from git) Date: Wed, 15 Mar 2023 22:36:59 GMT Message-Id: <202303152236.32FMaxaW033433@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: bd66219c6dc1 - stable/13 - sesutil: don't malloc in a tight loop List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: bd66219c6dc10178cfcda8beedc39b92e95bdaad Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=bd66219c6dc10178cfcda8beedc39b92e95bdaad commit bd66219c6dc10178cfcda8beedc39b92e95bdaad Author: Alan Somers AuthorDate: 2023-02-09 22:23:51 +0000 Commit: Alan Somers CommitDate: 2023-03-15 22:35:49 +0000 sesutil: don't malloc in a tight loop Reported by: mav Sponsored by: Axcient Reviwed by: mav Differential Revision: https://reviews.freebsd.org/D38473 (cherry picked from commit 4bd4e4b45e8bfbe855406098f393bdf4eda7104d) --- usr.sbin/sesutil/sesutil.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/usr.sbin/sesutil/sesutil.c b/usr.sbin/sesutil/sesutil.c index fe74a8d8ce90..47aa85a60a2e 100644 --- a/usr.sbin/sesutil/sesutil.c +++ b/usr.sbin/sesutil/sesutil.c @@ -417,6 +417,17 @@ objmap(int argc, char **argv __unused) usage(stderr, "map"); } + memset(&e_desc, 0, sizeof(e_desc)); + /* SES4r02 allows element descriptors of up to 65536 characters */ + e_desc.elm_desc_str = calloc(UINT16_MAX, sizeof(char)); + if (e_desc.elm_desc_str == NULL) + xo_err(EXIT_FAILURE, "calloc()"); + + e_devname.elm_devnames = calloc(128, sizeof(char)); + if (e_devname.elm_devnames == NULL) + xo_err(EXIT_FAILURE, "calloc()"); + e_devname.elm_names_size = 128; + /* Get the list of ses devices */ if (glob(uflag, 0, NULL, &g) == GLOB_NOMATCH) { globfree(&g); @@ -481,28 +492,16 @@ objmap(int argc, char **argv __unused) xo_err(EXIT_FAILURE, "ENCIOC_GETELMSTAT"); } /* Get the description of the element */ - memset(&e_desc, 0, sizeof(e_desc)); e_desc.elm_idx = e_ptr[j].elm_idx; e_desc.elm_desc_len = UINT16_MAX; - e_desc.elm_desc_str = calloc(UINT16_MAX, sizeof(char)); - if (e_desc.elm_desc_str == NULL) { - close(fd); - xo_err(EXIT_FAILURE, "calloc()"); - } if (ioctl(fd, ENCIOC_GETELMDESC, (caddr_t) &e_desc) < 0) { close(fd); xo_err(EXIT_FAILURE, "ENCIOC_GETELMDESC"); } + e_desc.elm_desc_str[e_desc.elm_desc_len] = '\0'; /* Get the device name(s) of the element */ - memset(&e_devname, 0, sizeof(e_devname)); e_devname.elm_idx = e_ptr[j].elm_idx; - e_devname.elm_names_size = 128; - e_devname.elm_devnames = calloc(128, sizeof(char)); - if (e_devname.elm_devnames == NULL) { - close(fd); - xo_err(EXIT_FAILURE, "calloc()"); - } if (ioctl(fd, ENCIOC_GETELMDEVNAMES, (caddr_t) &e_devname) <0) { /* Continue even if we can't look up devnames */ @@ -525,14 +524,14 @@ objmap(int argc, char **argv __unused) } print_extra_status(e_ptr[j].elm_type, e_status.cstat, PRINT_STYLE_DASHED); xo_close_instance("elements"); - free(e_desc.elm_desc_str); - free(e_devname.elm_devnames); } xo_close_list("elements"); free(e_ptr); close(fd); } globfree(&g); + free(e_devname.elm_devnames); + free(e_desc.elm_desc_str); xo_close_list("enclosures"); xo_close_container("sesutil"); xo_finish(); @@ -727,6 +726,10 @@ show(int argc, char **argv __unused) first_ses = true; + e_desc.elm_desc_str = calloc(UINT16_MAX, sizeof(char)); + if (e_desc.elm_desc_str == NULL) + xo_err(EXIT_FAILURE, "calloc()"); + /* Get the list of ses devices */ if (glob(uflag, 0, NULL, &g) == GLOB_NOMATCH) { globfree(&g); @@ -808,19 +811,14 @@ show(int argc, char **argv __unused) continue; /* Get the description of the element */ - memset(&e_desc, 0, sizeof(e_desc)); e_desc.elm_idx = e_ptr[j].elm_idx; e_desc.elm_desc_len = UINT16_MAX; - e_desc.elm_desc_str = calloc(UINT16_MAX, sizeof(char)); - if (e_desc.elm_desc_str == NULL) { - close(fd); - xo_err(EXIT_FAILURE, "calloc()"); - } if (ioctl(fd, ENCIOC_GETELMDESC, (caddr_t) &e_desc) < 0) { close(fd); xo_err(EXIT_FAILURE, "ENCIOC_GETELMDESC"); } + e_desc.elm_desc_str[e_desc.elm_desc_len] = '\0'; switch (e_ptr[j].elm_type) { case ELMTYP_DEVICE: @@ -853,7 +851,6 @@ show(int argc, char **argv __unused) */ break; } - free(e_desc.elm_desc_str); } if (prev_type != (elm_type_t)-1 && prev_type != ELMTYP_DEVICE && prev_type != ELMTYP_ARRAY_DEV) @@ -863,6 +860,7 @@ show(int argc, char **argv __unused) close(fd); } globfree(&g); + free(e_desc.elm_desc_str); xo_close_list("enclosures"); xo_close_container("sesutil"); xo_finish();