udf: potential integer overflow
bloc->logicalBlockNum is unsigned so it's never less than zero. When I saw that, it made me worry that "bloc->logicalBlockNum + count" could overflow. That's why I changed the check for less than zero to an overflow check. (The test works because "count" is also unsigned.) Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
Родитель
0fdf86754f
Коммит
69ecbbedac
|
@ -125,9 +125,8 @@ static void udf_bitmap_free_blocks(struct super_block *sb,
|
|||
|
||||
mutex_lock(&sbi->s_alloc_mutex);
|
||||
partmap = &sbi->s_partmaps[bloc->partitionReferenceNum];
|
||||
if (bloc->logicalBlockNum < 0 ||
|
||||
(bloc->logicalBlockNum + count) >
|
||||
partmap->s_partition_len) {
|
||||
if (bloc->logicalBlockNum + count < count ||
|
||||
(bloc->logicalBlockNum + count) > partmap->s_partition_len) {
|
||||
udf_debug("%d < %d || %d + %d > %d\n",
|
||||
bloc->logicalBlockNum, 0, bloc->logicalBlockNum,
|
||||
count, partmap->s_partition_len);
|
||||
|
@ -393,9 +392,8 @@ static void udf_table_free_blocks(struct super_block *sb,
|
|||
|
||||
mutex_lock(&sbi->s_alloc_mutex);
|
||||
partmap = &sbi->s_partmaps[bloc->partitionReferenceNum];
|
||||
if (bloc->logicalBlockNum < 0 ||
|
||||
(bloc->logicalBlockNum + count) >
|
||||
partmap->s_partition_len) {
|
||||
if (bloc->logicalBlockNum + count < count ||
|
||||
(bloc->logicalBlockNum + count) > partmap->s_partition_len) {
|
||||
udf_debug("%d < %d || %d + %d > %d\n",
|
||||
bloc->logicalBlockNum, 0, bloc->logicalBlockNum, count,
|
||||
partmap->s_partition_len);
|
||||
|
|
Загрузка…
Ссылка в новой задаче