Received: by 2002:ab2:6d45:0:b0:1fb:d597:ff75 with SMTP id d5csp259314lqr; Wed, 5 Jun 2024 05:29:25 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXwPXO7KXsb0urXPws/a431eUuBhONSsdKGZ2ca14KOeK43ZLQwelIxyXlWciCyhDhAnJYTdTPN7oLxm/NrQepTfHvh6SeK/nM268B6Rw== X-Google-Smtp-Source: AGHT+IEljZPTFyxWyCvpbjNujzvACSlqbkUwS2pWS72FL9hXJQ7QyV+rQBFPzx1NUYvBE0Z7UgcQ X-Received: by 2002:a05:6870:e2cd:b0:250:866c:5bd6 with SMTP id 586e51a60fabf-25122750583mr2170377fac.33.1717590564909; Wed, 05 Jun 2024 05:29:24 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717590564; cv=pass; d=google.com; s=arc-20160816; b=XaAW8v0CcDokNZe5EiYP8RtJgBu908JZO5iU4D/o02I9LzMHJ4fCo/tuGInbQIIYyD gv24Wg2fLrvoH7TbS2DVWCx0V2tNDyL1Q2oA7Vihm4IOjKAQyVgDQsvMHOPmQ/yLZWUF 95lGuhYjY8hHGtXX/ppjbM27oMan8lo98vYT28nQcWQUUbbz/6Dk/85gPAocU4w+Joq2 O8SvZMaieaDH4ef7YPlZVZ4uvi58+tFkb0tUy9+XaxX41Ny895PrILS++ALnNVxTS67d Xqpxb1aY373X06Aet82JGP05r3e8XCTVkhR/BAV2Uxs/yCVh+U2auMlxosqu2M3hb34t O0TA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=EddNNtFXmYK/ZbBOTNsinXDBpijxzFng3hifLuCI0/g=; fh=Xjd/OQkm2jBpNVqU6zus7zzmXvF2+eN3fdKj9IAAs8U=; b=cBgeJP+3FZCKqpTQUe74pUDkgk3rWwQtxqTAQSW+rE/HnFDpj1wwk9IL8d6KZMD60j 0AjYCnhlpEJjf1AfgA2c6hdfx1xHUxV6srKBLaILlv++2dOoxTvwc3KJIDPYXBFFMCmr UXduIZEwoJxh6BYmLmAqTY46sly9nf7Pgx165Gbe+QVAOO6XtW9PNZzSYiu5Sn+o0iWi //BIhmX+L65Uadr419eCveHMkrMaq1PFJstZpvU/wFMc5+bzLK7DY8r/x6jSb9dKfyAa cBqzZq7TAs/7NNv2AlISt5/VMH9av47b6UKdpzLHSM8oPqc4QlaPfNVNNVhbVg5+cRO4 fP9Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=L4AGkMnt; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-202383-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202383-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id d2e1a72fcca58-7026f797585si5209746b3a.195.2024.06.05.05.29.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 05:29:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-202383-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=L4AGkMnt; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-202383-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202383-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 62ABB28CE7B for ; Wed, 5 Jun 2024 12:11:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DAFF41B0BEF; Wed, 5 Jun 2024 11:53:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="L4AGkMnt" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C7F4196DBF; Wed, 5 Jun 2024 11:53:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717588423; cv=none; b=cTy5GFfw4y/hvTboUIHo0xvCxxTFsAZ1Yv/NbgRp/usZPjFBveCYQulRjeSufAk9DZRwlrLPLJa8dO79k2r+3umWf48+gcRPgvZEVrJHD0zfwwgBnolA8IqvZVZvqcv8twHWqFQBMpl2+JR24cHD1qGYwClAoCn6Tys3ONw4I8I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717588423; c=relaxed/simple; bh=vZPl2Rg9MMjHgwCnAcC6p7mvcU/vcb8ipMfTFMNDETU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UvTrMm+hZKtIynPqXH68uY4kDZ45/z6Uzi8RSDSZbWjkadBnqyTDQRUCKANAVeWBkZftfILUtxQo3To54gANzyUK55SWEZCZjIag1ZHpBvqpzlUERSpa4EN2lWOSB7Dn1dzwa0asYLmF0PVer29IzMceLz+Lk25/iqVh+wJz9pc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=L4AGkMnt; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 236F5C4AF07; Wed, 5 Jun 2024 11:53:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717588422; bh=vZPl2Rg9MMjHgwCnAcC6p7mvcU/vcb8ipMfTFMNDETU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L4AGkMntvXb3kOxMnMqIsoamqXu/nH44GTMvGxUUtss2X9Lbs32av3r8bVTqnxJ6b lzOQxeld22hywFJkEiHjDua6iL1Xaayq22sM2LrVISvOucrkQA+tJOgo3zBhzSIP4v e+ewyPtt1buqD+TmrBWUcmmAYlbUmldbOVDw1Qm4KfwvZZxgQGWVqBB/m9gL0ngXOb k8YlOVqGwl2RogNbUU52nWRcgz5QWVlgCUyVXpCSg+a1dR0HDezRRKCqN+Q/H8cj2w 9XWmWd9Ne6kk2P8loSe0WlT0DokiIDAn/3z6cLXRr6wOSARkhpy5smSfCbvRNqWULW aFoMRTMeEARiw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Roman Smirnov , Jan Kara , Sergey Shtylyov , Sasha Levin , jack@suse.com Subject: [PATCH AUTOSEL 6.1 05/12] udf: udftime: prevent overflow in udf_disk_stamp_to_time() Date: Wed, 5 Jun 2024 07:53:10 -0400 Message-ID: <20240605115334.2963803-5-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240605115334.2963803-1-sashal@kernel.org> References: <20240605115334.2963803-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.1.92 Content-Transfer-Encoding: 8bit From: Roman Smirnov [ Upstream commit 3b84adf460381169c085e4bc09e7b57e9e16db0a ] An overflow can occur in a situation where src.centiseconds takes the value of 255. This situation is unlikely, but there is no validation check anywere in the code. Found by Linux Verification Center (linuxtesting.org) with Svace. Suggested-by: Jan Kara Signed-off-by: Roman Smirnov Reviewed-by: Sergey Shtylyov Signed-off-by: Jan Kara Message-Id: <20240327132755.13945-1-r.smirnov@omp.ru> Signed-off-by: Sasha Levin --- fs/udf/udftime.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/udf/udftime.c b/fs/udf/udftime.c index fce4ad976c8c2..26169b1f482c3 100644 --- a/fs/udf/udftime.c +++ b/fs/udf/udftime.c @@ -60,13 +60,18 @@ udf_disk_stamp_to_time(struct timespec64 *dest, struct timestamp src) dest->tv_sec = mktime64(year, src.month, src.day, src.hour, src.minute, src.second); dest->tv_sec -= offset * 60; - dest->tv_nsec = 1000 * (src.centiseconds * 10000 + - src.hundredsOfMicroseconds * 100 + src.microseconds); + /* * Sanitize nanosecond field since reportedly some filesystems are * recorded with bogus sub-second values. */ - dest->tv_nsec %= NSEC_PER_SEC; + if (src.centiseconds < 100 && src.hundredsOfMicroseconds < 100 && + src.microseconds < 100) { + dest->tv_nsec = 1000 * (src.centiseconds * 10000 + + src.hundredsOfMicroseconds * 100 + src.microseconds); + } else { + dest->tv_nsec = 0; + } } void -- 2.43.0