Received: by 2002:ab2:6d45:0:b0:1fb:d597:ff75 with SMTP id d5csp256262lqr; Wed, 5 Jun 2024 05:23:25 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCV0P+MMiDff/PXcBeZpp7ekmuZFP9nG9Pz3FRRqUm3GQusjxTQJ6yG/oztAAmo7O+DP5MFANwdocmkiqsZCGRlbdUdciaxr3ermlso6bg== X-Google-Smtp-Source: AGHT+IF+2OJ1d0blWdPjhjerouucWJQqAC5NMxKbr+rCgBbldiUMJw7Y2Ow1m73vDoUECffgZFql X-Received: by 2002:a05:6358:5327:b0:18f:9dda:502d with SMTP id e5c5f4694b2df-19c6c8fa955mr266359055d.22.1717590205002; Wed, 05 Jun 2024 05:23:25 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717590204; cv=pass; d=google.com; s=arc-20160816; b=et+4soT9IxI/m09Alj2WbCwxihG7bHqIAFI5zQueXf0ZHlPFGkiA+uG+KBV/cg2avc zOoB8WOTSNqkWl5wcAxYRi7zRZQc7aceS6IAYmahGlsxQjqqKxYC9ZvDnqbwfM6eafUF lAoo24vYZd4EWKSFqsT0EdvrhkdOL0DzoMEcGs3oaWmO7XAw1prJKYKyaZedl6up0Zy5 x7MY2pBcQFvI0mxJHZr+57LAIXr2s8kUDO/1fQCEqrwCZGlI841ODnposR3w4hToXrA5 J/WpDHg+SSfKAEPJnNmAwXZxFicVnYKNzl/IMjjNY3N6TiEgeC9Tbr7eQQKNV4MmoKW9 uxBQ== 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=F3JXctsbuc03GdCavCVKjZQgbUSxBSGkGZdkAE1KTJmxexB3F2c7yr0hGCfBEeEZMn SYQQrL5TsloG3EoUNK3dCGOdI4f+Aaw/BHhNTpBJkRCi2ewSiDuqXFSZMW2VCgVUrapa ipUscDa//s4dodv1UO1TmiOI8gDFp/Nu9LsphdwCyym0nbtJAxm7qe668eiZpVB0LF0o WZcynsEqBeieCXmHEY4xsjHeeHyrKjD3q7heSDaMGA9bBJyTJTob4ZtjksSCI6NdT9Mq t36l8jusL/UTLGRW8PyDbx5BGeEIfoWIsFinkvCGS1cSEVjlinI+sxI3xNj/8AwgIpsG pUXg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="Fv4gK/2T"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-202403-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202403-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 41be03b00d2f7-6c359e05385si9750609a12.285.2024.06.05.05.23.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 05:23:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-202403-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="Fv4gK/2T"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-202403-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202403-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 55665293714 for ; Wed, 5 Jun 2024 12:16:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 46872198A1C; Wed, 5 Jun 2024 11:54:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Fv4gK/2T" 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 68B7D198A0A; Wed, 5 Jun 2024 11:54:49 +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=1717588489; cv=none; b=uIY5ukySwpcGu4QWqUQ2o7TtdJ3t9JCCz/MTHEijoXzWtE14XlJzdYj3+xfqd7kRI2SMe7VM2xSHoRPBa6nCFl01OTUDOlcMLa4vW+xOeclF3M/0xy8N0AjP9vOQUZ7U2I7hsO+fyAdOEjhWNSmtT/ZwET59o+LFnnHyzKwRq4g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717588489; c=relaxed/simple; bh=vZPl2Rg9MMjHgwCnAcC6p7mvcU/vcb8ipMfTFMNDETU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HcKCwRaxWRHnKWY4JTRX4FbO1w/dQPeMYf0tPClmRpb8/Vyz2KK/AgiW7wjPqE8XG9EsUSswJctDU7S+QNe2ozfufwaPySwkZR69/XTcVVtQN5ZGhKjpzV3FAT5+pBj6wSBVwQzGnUsNSfYwXoAIMbU58INzaClqxlG/zOUwYkA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Fv4gK/2T; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42030C4AF07; Wed, 5 Jun 2024 11:54:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717588489; bh=vZPl2Rg9MMjHgwCnAcC6p7mvcU/vcb8ipMfTFMNDETU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Fv4gK/2TaOcisB72KzmrfetYGsm4wspqz0YqHL7f5IZxtlearIdlFn7xk0zAejtWM O42+3bIdQfWILZehaPyYx0Oa3EG4tpRTeFkqXc2uxP0I/Ve604Rn1IWC12dgbkvVK8 +J7L2Lo8ED//6d889tIPOODRwzFHRvkSzlvsR3U3qLwIqTAmCMGO/ZP6yGzv4kyaZ9 um/5DEDEqCM/D3tKTc2Y+UmNMVM7n03lGyoPE7jRvt051AC5ulWj/thSijV2fSmMyh 5KjJoMDRAqSCEwhLJq5bgi5apz9AjaUpWOdbOIGj7L8u2OnFe/x0MG+YrEvsbf/bLi bG6VsToeHe0Pw== 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 5.10 3/7] udf: udftime: prevent overflow in udf_disk_stamp_to_time() Date: Wed, 5 Jun 2024 07:54:32 -0400 Message-ID: <20240605115442.2964376-3-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240605115442.2964376-1-sashal@kernel.org> References: <20240605115442.2964376-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 5.10.218 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