diff options
author | Jeroen Roovers <jer@gentoo.org> | 2015-10-10 06:01:34 +0200 |
---|---|---|
committer | Jeroen Roovers <jer@gentoo.org> | 2015-10-10 06:01:34 +0200 |
commit | 3a1036332df73333e2b01d5e6fedd91dad7415de (patch) | |
tree | 2cc8dcfd5dc14e4f9c74af02840a333c74ee3b91 /sys-block/parted/files | |
parent | dev-php/PEAR-DB_DataObject: Stable for PPC64 (bug #546654). (diff) | |
download | gentoo-3a1036332df73333e2b01d5e6fedd91dad7415de.tar.gz gentoo-3a1036332df73333e2b01d5e6fedd91dad7415de.tar.bz2 gentoo-3a1036332df73333e2b01d5e6fedd91dad7415de.zip |
sys-block/parted: Fix crash on resizing FAT16 (bug #562136 by Nico R.).
Package-Manager: portage-2.2.22
Diffstat (limited to 'sys-block/parted/files')
-rw-r--r-- | sys-block/parted/files/parted-3.2-fix-resizing-FAT16.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/sys-block/parted/files/parted-3.2-fix-resizing-FAT16.patch b/sys-block/parted/files/parted-3.2-fix-resizing-FAT16.patch new file mode 100644 index 000000000000..2a5a2311f1dd --- /dev/null +++ b/sys-block/parted/files/parted-3.2-fix-resizing-FAT16.patch @@ -0,0 +1,64 @@ +From 1e9e770f4bc7f3d80e09ecd1df58575fad064163 Mon Sep 17 00:00:00 2001 +From: Mike Fleetwood <mike.fleetwood@googlemail.com> +Date: Sun, 28 Sep 2014 15:15:48 +0000 +Subject: lib-fs-resize: Prevent crash resizing FAT16 file systems + +Resizing FAT16 file system crashes in libparted/fs/r/fat/resize.c +create_resize_context() because it was dereferencing NULL pointer +fs_info->info_sector to copy the info_sector. + +Only FAT32 file systems have info_sector populated by fat_open() -> +fat_info_sector_read(). FAT12 and FAT16 file systems don't have an +info_sector so pointer fs_info->info_sector remains assigned NULL from +fat_alloc(). When resizing a FAT file system create_resize_context() +was always dereferencing fs_info->info_sector to memory copy the +info_sector, hence it crashed for FAT12 and FAT16. + +Make create_resize_context() only copy the info_sector for FAT32 file +systems. + +Reported by Christian Hesse in +https://bugzilla.gnome.org/show_bug.cgi?id=735669 +--- +diff --git a/NEWS b/NEWS +index 297b0a5..da7db50 100644 +--- a/NEWS ++++ b/NEWS +@@ -2,6 +2,10 @@ GNU parted NEWS -*- outline -*- + + * Noteworthy changes in release ?.? (????-??-??) [?] + ++** Bug Fixes ++ ++ libparted-fs-resize: Prevent crash resizing FAT16 file systems. ++ + + * Noteworthy changes in release 3.2 (2014-07-28) [stable] + +diff --git a/libparted/fs/r/fat/resize.c b/libparted/fs/r/fat/resize.c +index 919acf0..bfe60a0 100644 +--- a/libparted/fs/r/fat/resize.c ++++ b/libparted/fs/r/fat/resize.c +@@ -668,11 +668,17 @@ create_resize_context (PedFileSystem* fs, const PedGeometry* new_geom) + + /* preserve boot code, etc. */ + new_fs_info->boot_sector = ped_malloc (new_geom->dev->sector_size); +- new_fs_info->info_sector = ped_malloc (new_geom->dev->sector_size); + memcpy (new_fs_info->boot_sector, fs_info->boot_sector, + new_geom->dev->sector_size); +- memcpy (new_fs_info->info_sector, fs_info->info_sector, +- new_geom->dev->sector_size); ++ new_fs_info->info_sector = NULL; ++ if (fs_info->fat_type == FAT_TYPE_FAT32) ++ { ++ PED_ASSERT (fs_info->info_sector != NULL); ++ new_fs_info->info_sector = ++ ped_malloc (new_geom->dev->sector_size); ++ memcpy (new_fs_info->info_sector, fs_info->info_sector, ++ new_geom->dev->sector_size); ++ } + + new_fs_info->logical_sector_size = fs_info->logical_sector_size; + new_fs_info->sector_count = new_geom->length; +-- +cgit v0.9.0.2 |