]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC r337456:
authorpfg <pfg@FreeBSD.org>
Wed, 22 Aug 2018 04:20:20 +0000 (04:20 +0000)
committerpfg <pfg@FreeBSD.org>
Wed, 22 Aug 2018 04:20:20 +0000 (04:20 +0000)
commit55956d181c3ae887614c81f374bfc1dc8f9b554f
treecd6d4e8c7fbff36e553dc7d468de81d45ab7f708
parent32d6dc51da95caf862cb415fd8e045763b7959e0
MFC r337456:
msdosfs: fixes for Undefined Behavior.

These were found by the Undefined Behaviour GsoC project at NetBSD:

Do not change signedness bit with left shift.
While there avoid signed integer overflow.
Address both issues with using unsigned type.

msdosfs_fat.c:512:42, left shift of 1 by 31 places cannot be represented
in type 'int'
msdosfs_fat.c:521:44, left shift of 1 by 31 places cannot be represented
in type 'int'
msdosfs_fat.c:744:14, left shift of 1 by 31 places cannot be represented
in type 'int'
msdosfs_fat.c:744:24, signed integer overflow: -2147483648 - 1 cannot be
represented in type 'int [20]'
msdosfs_fat.c:840:13, left shift of 1 by 31 places cannot be represented
in type 'int'
msdosfs_fat.c:840:36, signed integer overflow: -2147483648 - 1 cannot be
represented in type 'int [20]'

Detected with micro-UBSan in the user mode.

Hinted from: NetBSD (CVS 1.33)
sys/fs/msdosfs/msdosfs_fat.c