From nobody Sun May 18 19:10:37 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 4b0r4Y6qLHz5wfyk; Sun, 18 May 2025 19:10:37 +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 4b0r4Y6BTYz3WKK; Sun, 18 May 2025 19:10:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747595437; 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=ue4bnI0lAA4KHCPo3W27CP6dZZA2CUWjK/yi5fYQgLk=; b=RKPQOeg0fJHea9glJjMT/OGRAWSNcd1nOJK3BydgTwNTPgrAwN7PqfqrjH/pFRdw/BH769 K8AtoZ3j5S2fSDnLW3xD975eNT6X0la460nmmeqcfV8e3xnZVoQyfJUy3Wlvvx0gyVgtpe 323FUUOpBe3oytSjSayRo8P9O1YThZ+iNaFCJ7Ko7gmoja7Xug53CCAKSlLE9+OzOtAvtW OAuKEoEo1MZEdpyAKP1m5XEimd12FMi0OMsn6ms4zoio7XF3GsxCEgFhxdwX7Ic3SIa0MJ gHmCsek41DgOXJr8ZZifnF2ESimo7tq0tRBFkIeswnMQuI3bYykMwk8WYFWgIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747595437; 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=ue4bnI0lAA4KHCPo3W27CP6dZZA2CUWjK/yi5fYQgLk=; b=bXGSiklgofEOdxrC5TfuTtDWExqzD8YWx+Q1ebp7CxcQtyvrgf52KpfTmHus4MMp9qVKVY sEYCFUIyvwyjgEIvbkx/7yJqUk7CcCFzxMOVDJjLd1YsJQNZnUdxfufeobVaO2J5o0Znaj kqYp8PZA521VGzu0cJr9286D/Koo6dvLYqSviLGfD4f5TypRV5Id6KBKWe6DLg1Bv5n9/K g+OXh/NCYHy9EolbaaJDrrqNylgkGJtzlTSWphP0N3Y7cFotAQHbwc+P7tapDShWAnDzrz ch/60SEGwNnv+tmUOI2hmFYwc+effV/0Oc1JSey/NUzaWS4Fa3be8HmGZba2Ng== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1747595437; a=rsa-sha256; cv=none; b=OG5xEF0hiKJTHj65vzijkUflfyCG9Ek5+lEv3xkeIlxrnqu8anLmoWnp78LJIkSELzKMoA sXTCqS1XBw51CiKl9TkMdpjSxhbmThFmKLr8OFSApwUmVbP1Z/igPo9EUJQ6+waULBSL8E Cszrii3ngEd2lKkGQsdncYDYUx6nIeECh0rhrYEJAemGdL4UlMbW17U4rtdA/G3YGUIFcX qCiQe4D42PwOHsC54ZUX+I5b1DjaGY+YwzN+hp5YguI23kAVtsVjn7YNeoaK2IzxeBv6JY IvexRPKv4kl1w9GF08taf05T31gWmS7nHmLizW5KWl+8ULA7thm0N3k41IPAvA== 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 4b0r4Y5W4qzWgC; Sun, 18 May 2025 19:10:37 +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 54IJAbW5011272; Sun, 18 May 2025 19:10:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 54IJAbTg011269; Sun, 18 May 2025 19:10:37 GMT (envelope-from git) Date: Sun, 18 May 2025 19:10:37 GMT Message-Id: <202505181910.54IJAbTg011269@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: a8aaf8039f2d - main - cp: Avoid closing an invalid file descriptor. 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: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a8aaf8039f2dd029ddf7fd396e047eb0bd3c8904 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a8aaf8039f2dd029ddf7fd396e047eb0bd3c8904 commit a8aaf8039f2dd029ddf7fd396e047eb0bd3c8904 Author: Dag-Erling Smørgrav AuthorDate: 2025-05-18 19:09:58 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-05-18 19:10:08 +0000 cp: Avoid closing an invalid file descriptor. * At the end of copy(), we always close to.dir, even though it can be AT_FDCWD (in the file-to-file case) or even -1 (if we failed to open or create the destination directory). While closing an invalid file descriptor is harmless, it's still bad form. * In the DIR_TO_DNE case, initialize to.dir to -1 to guard against the case where mkdir() fails so we never assign anything to to.dir and end up (harmlessly, luckily) closing stdin on our way to the exit. Coverity ID: 1609954 Fixes: 82fc0d09e862 Sponsored by: Klara, Inc. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D50391 --- bin/cp/cp.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bin/cp/cp.c b/bin/cp/cp.c index c76654f7df41..03b3a7a7bf41 100644 --- a/bin/cp/cp.c +++ b/bin/cp/cp.c @@ -296,6 +296,11 @@ copy(char *argv[], enum op type, int fts_options, struct stat *root_stat) sep = strchr(to.base, '\0'); sep[0] = '/'; sep[1] = '\0'; + } else { + /* + * We will create the destination directory imminently. + */ + to.dir = -1; } if ((ftsp = fts_open(argv, fts_options, NULL)) == NULL) @@ -633,8 +638,9 @@ copy(char *argv[], enum op type, int fts_options, struct stat *root_stat) } if (errno) err(1, "fts_read"); - fts_close(ftsp); - close(to.dir); + (void)fts_close(ftsp); + if (to.dir != AT_FDCWD && to.dir >= 0) + (void)close(to.dir); free(recpath); return (rval); }