Received: by 2002:ab2:6d45:0:b0:1fb:d597:ff75 with SMTP id d5csp253007lqr; Wed, 5 Jun 2024 05:17:29 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWxCobRTJNb3C7yOETYkSCcD3cGMIBcAS5QaciKPK+n6wY0HsJWoVLN24ZNO3Cyr9B8wRHOle9mJnBkkz2mEiXXjPz10j78MW2VvuLzCg== X-Google-Smtp-Source: AGHT+IG/btdpS6l/XDlXVgN8GibILgVAY5y8Fzbjp8VkZcH+Nexbyy+n9WanZU4oRXzWMGhVDycT X-Received: by 2002:a05:620a:47de:b0:794:f011:7a2a with SMTP id af79cd13be357-79523b084c7mr264767685a.0.1717589849190; Wed, 05 Jun 2024 05:17:29 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717589849; cv=pass; d=google.com; s=arc-20160816; b=Oqsdfk7RnXOOYniGJZt4MdsNKjbQgbD5utm41wIkNitp4wj772GB5EobM/9H2Htn7B d/WGJKhoemOymizB7T4Rwz+L+dkoKzWjiRmHxpEiQixan3vTOlYvRfI+mUzKdUEV7Nme 6uZs/IsvkQtIilzNfYm8AwWDWtBFb7V0n2Y39vNQu/HXFZ+44qIUK4Hjnp0oDUnRyBpm 4wdJiZs1O+bKuyQ9Fn3xNaWsBEVWhN52oLoJl95SWCzuFpPNKXxjsMpQrw7mVY077r+h cspoNq09S0CxdUOIG1E489mwnQ7O0x+oxW/ReokTG2nTRaX+o6WBUTOnZWR9kUWqHj0j jHHg== 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=Pb+QXlig0JBBQ7kA0lCvZ4AWc5RaYJ2qoL4IPZZLlkmJmTZUUJDWI0nnkAx2LN2txD XxV4zqv5rmvBK/aSzJO3g7d48fHV6KxZ9xpEosztKgDwx5rOPtNIW3kWFpbH53eJcHYz GLfgQ4V0wp1vSmaHKFKMvx1BmHAR11EsAKGUARkDDvL7DbODAruPmc37+IqLDKzf7ZxO 8kD3XgznpNy2mhzf42XLBmMtsiElnjnKH7GgIto2YNTs453aEWnMJWRm7O05YJAuIPpT Teks9hy3v3jdaHQkDTMgZF/csUL6/718WRd+yJ97gkT6thrNx+z9vQ/TIcduXdz1PlI5 DGVA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="AU/GMtN1"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-202409-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202409-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id af79cd13be357-794f318cb18si467344885a.520.2024.06.05.05.17.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 05:17:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-202409-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="AU/GMtN1"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-202409-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202409-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 ny.mirrors.kernel.org (Postfix) with ESMTPS id E3A101C234AB for ; Wed, 5 Jun 2024 12:17:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 17CA1198856; Wed, 5 Jun 2024 11:55:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AU/GMtN1" 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 438B4198E9F; Wed, 5 Jun 2024 11:55:07 +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=1717588507; cv=none; b=KLY+hvdylm+a93T53Q+nsO6nFBsU8RjkQ7nFV2l2/jV7j6WEnBehmmT0jlZQoyQSnlIKc9rWvParNoQT9YAit6YiBDPQleu2s+f0vtGU/41Q00BhSVGHspkU932gSNGdCD0qKvIoafHAXj86IPMeGYElPE/SNLj9IVZd2xpebzs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717588507; c=relaxed/simple; bh=vZPl2Rg9MMjHgwCnAcC6p7mvcU/vcb8ipMfTFMNDETU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uQxqXkSGvLC/kI8FdV3+uBmSFtU5N8y23OJH8PuoEUuu401S5PrKj+atEQb1t6q0ttNEiiISdpKrNL4Kz7LRXQH1qL9ADbpaz+TGCB9te4j5EKGpihs8+e4BErpXkiKqsNKsPE1YZbGgjSE653Vh/dIwgq2jcmj7k45GVqPDA7o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AU/GMtN1; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5292DC3277B; Wed, 5 Jun 2024 11:55:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717588507; bh=vZPl2Rg9MMjHgwCnAcC6p7mvcU/vcb8ipMfTFMNDETU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AU/GMtN1lXUyNSVhJRO2E6HlWJ+Mq5Uk0NGIiH8dFvCKzGJu4ER41STlVyLGz2VbT 30sQZYX3ODJDLoVtNbZQyHxaPrIDqZlMMqrDjykDIvSseOWT2n5ONinbrBWZ5omssn nxcovO0h3PQGkVI467bKcTxZgyRk+nHWnjlgFttxPZw8R5oF23Pu9YaLMZvf8S/iw8 JnuuShd+2KIqnyIoyCOfmN35dPIkUhIlT/ViIO49bMXDL3VD+vU1HN2F43AsPjhZsz hLWpbm5GsAby2AaMwB6Pd6quN5McdVlX4LabTjawxNyL8wZL2GQuYLEgZ/d84j18E+ jgf9C4Rp2dwjA== 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.4 2/5] udf: udftime: prevent overflow in udf_disk_stamp_to_time() Date: Wed, 5 Jun 2024 07:54:55 -0400 Message-ID: <20240605115504.2964549-2-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240605115504.2964549-1-sashal@kernel.org> References: <20240605115504.2964549-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.4.277 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