libblkid: ntfs: avoid UB in signed shift

Fix OSS-Fuzz issue 53142 ( #1886 )
Fix OSS-Fuzz issue 53160 ( #1888 )
This commit is contained in:
Thomas Weißschuh 2022-11-10 18:35:00 +01:00 committed by su-fang
parent 6519b62644
commit 4e3c40279a
1 changed files with 7 additions and 3 deletions

View File

@ -135,11 +135,15 @@ static int __probe_ntfs(blkid_probe pr, const struct blkid_idmag *mag, int save_
}
}
if (ns->clusters_per_mft_record > 0)
if (ns->clusters_per_mft_record > 0) {
mft_record_size = ns->clusters_per_mft_record *
sectors_per_cluster * sector_size;
else
mft_record_size = 1 << (0 - ns->clusters_per_mft_record);
} else {
int8_t mft_record_size_shift = 0 - ns->clusters_per_mft_record;
if (mft_record_size_shift < 0 || mft_record_size_shift >= 31)
return 1;
mft_record_size = 1 << mft_record_size_shift;
}
nr_clusters = le64_to_cpu(ns->number_of_sectors) / sectors_per_cluster;