From nobody Sat Mar 12 10:43:28 2022 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 0A17A1A0C6B0; Sat, 12 Mar 2022 10:43:29 +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 4KFzt86NtJz3Ckb; Sat, 12 Mar 2022 10:43:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647081808; 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=uMBttbT8Yvk/vi7kR/vvfSS2Z+38Ln/VPGdz4DubwOE=; b=u0f4TiGUttzHAigPPv64RsCJ5alEkU4vjmgtKgBxAGK7PjVo1oNyx+cvsIaN9o4hLt4hC9 GQwUNf//0bUTfOTE68MBH/pp7yx4QqK2UGF2QOY/qErrc7t48UxIUO8QYOcs6NgoodIoIq ssvLUwou/VGf/himvs81dUtqg9zHqZLvIeW8R666fVflMg4uRyibVrMXCHCCYkn2qw5cL7 Qd9MYCPYGNuJ9jrDzoTW68m6YKSP9dah6qXoIyng9MPCRE+G4PR2/2CiCTFkad1OwsYlTP QylUJyGa8aJoPAhwB4eqEKMgZpXklXlw/uAzO1YHXNHR3AWc/RnhxhHAevc7zA== 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 BB1312BB06; Sat, 12 Mar 2022 10:43:28 +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 22CAhSM1057369; Sat, 12 Mar 2022 10:43:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 22CAhStN057368; Sat, 12 Mar 2022 10:43:28 GMT (envelope-from git) Date: Sat, 12 Mar 2022 10:43:28 GMT Message-Id: <202203121043.22CAhStN057368@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mariusz Zaborski Subject: git: cb54c500d0e1 - main - touch: don't leak descriptor if fstat(2) fails 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: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cb54c500d0e1a2c52270b15c6db6a88ca3feb86a Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647081808; 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=uMBttbT8Yvk/vi7kR/vvfSS2Z+38Ln/VPGdz4DubwOE=; b=imZphP1fgTboW+GQGIu6Oq65aYA2RQ1v8emui6tvjRVKgLDBWeKs2LuJQlSBZKCEMQxKkZ P6njuKFcn3ksTvQy1ZA5zaFjYCkAQS4xM5YsvkPs0Ng9oVHL7M5+edngaEXMRrwyRERayE XvRlZJZqQqEnc1e/ir1RJb0EECQ1qgLVGlNM74II8Zpivzv6Zydp7wW58GWEkmeEFl28SC 3zoHe4c1rn5kTZcK8mTP1JCVyLUDA55+avJVCsbyhLbsTcoCyjFq3jJYDR2+DypmDIGqku c/8JJsP2bKBgWwcmcN3vFZm8wywZPb1+ie01eEqgAPiOkKLKIJs5xR2sQvJrZA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1647081808; a=rsa-sha256; cv=none; b=Qwm/svC0+LP8dE24wUGVOxPr/JiMJUXFfmhXezc8lIPfbvG2THJTqOK1Yv5cQ9cB8ylpSp jRBiRf0JV28ccjbWkobHIi4L+Pnjq5QNXTdY/uEZ2jQzRRoD4QgWq/aXKNuDf6C+V1QxDf gKNfrSwgbN7NXzYfukXaf6XC0S07QnTA45Y4nmVMV7Fi6hW3WFAZbV1EDapI8sqXzoLN9o HFiLCwta/u9hQ07mle63BI28Of/Cf1/O1LL1z4P+J+77IrSc4NAM+l/7LZmXrnRdeRxhZh nV19amFwHf3jsGGnjqmVl6nCoSdCPw8CnOFIyRGFqS7ooCHrrQ0m36UjSpU9HQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=cb54c500d0e1a2c52270b15c6db6a88ca3feb86a commit cb54c500d0e1a2c52270b15c6db6a88ca3feb86a Author: Mariusz Zaborski AuthorDate: 2022-03-12 10:38:12 +0000 Commit: Mariusz Zaborski CommitDate: 2022-03-12 10:38:12 +0000 touch: don't leak descriptor if fstat(2) fails If fstat(2) fails the close(2) won't be called, which will leak the file descriptor. The idea was borrowed from OpenBSD, where similar patch was applied for futimens(2). MFC after: 1 week --- usr.bin/touch/touch.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/usr.bin/touch/touch.c b/usr.bin/touch/touch.c index 62f77d46e429..1594eacb67d0 100644 --- a/usr.bin/touch/touch.c +++ b/usr.bin/touch/touch.c @@ -177,11 +177,19 @@ main(int argc, char *argv[]) /* Create the file. */ fd = open(*argv, O_WRONLY | O_CREAT, DEFFILEMODE); - if (fd == -1 || fstat(fd, &sb) || close(fd)) { + if (fd == -1) { rval = 1; warn("%s", *argv); continue; } + if (fstat(fd, &sb) < 0) { + warn("%s", *argv); + rval = 1; + } + if (close(fd) < 0) { + warn("%s", *argv); + rval = 1; + } /* If using the current time, we're done. */ if (!timeset)