summaryrefslogtreecommitdiff
path: root/fs/udf/udftime.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2017-12-19 10:11:01 +0300
committerJan Kara <jack@suse.cz>2017-12-19 10:11:01 +0300
commitd5bd821350e69f5f464c175455135727f986f793 (patch)
tree40866df095024cb2078f511a72a0593b30c71476 /fs/udf/udftime.c
parent1291a0d5049dbc06baaaf66a9ff3f53db493b19b (diff)
downloadlinux-d5bd821350e69f5f464c175455135727f986f793.tar.xz
udf: Sanitize nanoseconds for time stamps
Reportedly some UDF filesystems are recorded with bogus subsecond values resulting in nanoseconds being over 10^9. Sanitize nanoseconds in time stamps when loading them from disk. Reported-by: Ian Turner <vectro@vectro.org> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf/udftime.c')
-rw-r--r--fs/udf/udftime.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/udf/udftime.c b/fs/udf/udftime.c
index 14626b34d13e..0927a4b2ecaf 100644
--- a/fs/udf/udftime.c
+++ b/fs/udf/udftime.c
@@ -62,6 +62,11 @@ udf_disk_stamp_to_time(struct timespec *dest, struct timestamp src)
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;
return dest;
}