Skip to content
Snippets Groups Projects
Commit 44996b23 authored by Roman Smirnov's avatar Roman Smirnov Committed by Frieder Schrempf
Browse files

udf: udftime: prevent overflow in udf_disk_stamp_to_time()


[ Upstream commit 3b84adf4 ]

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: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarRoman Smirnov <r.smirnov@omp.ru>
Reviewed-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
Message-Id: <20240327132755.13945-1-r.smirnov@omp.ru>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 2411e930
No related branches found
No related tags found
1 merge request!157🤖 Sync Bot: Update v6.1-ktn to Latest Stable Kernel (v6.1.97)
...@@ -60,13 +60,18 @@ udf_disk_stamp_to_time(struct timespec64 *dest, struct timestamp src) ...@@ -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, dest->tv_sec = mktime64(year, src.month, src.day, src.hour, src.minute,
src.second); src.second);
dest->tv_sec -= offset * 60; 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 * Sanitize nanosecond field since reportedly some filesystems are
* recorded with bogus sub-second values. * 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 void
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment