diff options
author | Jan Kara <jack@suse.cz> | 2017-12-19 08:11:01 +0100 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2017-12-19 08:11:01 +0100 |
commit | d5bd821350e69f5f464c175455135727f986f793 (patch) | |
tree | 40866df095024cb2078f511a72a0593b30c71476 /fs/udf | |
parent | 1291a0d5049dbc06baaaf66a9ff3f53db493b19b (diff) | |
download | op-kernel-dev-d5bd821350e69f5f464c175455135727f986f793.zip op-kernel-dev-d5bd821350e69f5f464c175455135727f986f793.tar.gz |
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')
-rw-r--r-- | fs/udf/udftime.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/udf/udftime.c b/fs/udf/udftime.c index 14626b3..0927a4b 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; } |