Bug#781233: unblock: parted/3.2-7
Control: tags -1 d-i
On 2015-03-26 11:21, Colin Watson wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: unblock
>
> Please unblock package parted; this fixes a crash when trying to resize
> fat16 filesystems. CCing debian-boot since this would need a d-i ack
> too.
>
Ack from here, just needs a d-i from here. (Quoting in full for KiBi's
convenience)
Thanks,
~Niels
> diff -Nru parted-3.2/debian/.git-dpm parted-3.2/debian/.git-dpm
> --- parted-3.2/debian/.git-dpm 2014-09-19 15:41:38.000000000 +0100
> +++ parted-3.2/debian/.git-dpm 2014-11-06 12:21:49.000000000 +0000
> @@ -1,6 +1,6 @@
> # see git-dpm(1) from git-dpm package
> -5e4e122454ac8ecf5b5fc006c0b03f0e8adc6c7c
> -5e4e122454ac8ecf5b5fc006c0b03f0e8adc6c7c
> +bdfd201a2f5b8090c7ba1208fe5531d0dceecf49
> +bdfd201a2f5b8090c7ba1208fe5531d0dceecf49
> a3803540db7f12359a111d6449159b91032c253f
> a3803540db7f12359a111d6449159b91032c253f
> parted_3.2.orig.tar.xz
> diff -Nru parted-3.2/debian/changelog parted-3.2/debian/changelog
> --- parted-3.2/debian/changelog 2014-09-19 15:44:41.000000000 +0100
> +++ parted-3.2/debian/changelog 2015-03-19 10:58:59.000000000 +0000
> @@ -1,3 +1,15 @@
> +parted (3.2-7) unstable; urgency=medium
> +
> + [ Phillip Susi ]
> + * Cherry pick upstream patch to fix a crash when resizing fat16
> + (LP: #1342255).
> +
> + [ Colin Watson ]
> + * Drop libparted2's alternative Suggests on nparted, which has not been in
> + Debian for a decade or so.
> +
> + -- Colin Watson <cjwatson@debian.org> Thu, 19 Mar 2015 10:58:55 +0000
> +
> parted (3.2-6) unstable; urgency=medium
>
> [ Steven Chamberlain ]
> diff -Nru parted-3.2/debian/control parted-3.2/debian/control
> --- parted-3.2/debian/control 2014-09-19 15:38:08.000000000 +0100
> +++ parted-3.2/debian/control 2015-03-19 10:52:48.000000000 +0000
> @@ -68,7 +68,7 @@
> Section: libs
> Pre-Depends: ${misc:Pre-Depends}
> Depends: ${shlibs:Depends}, ${misc:Depends}
> -Suggests: parted | nparted, libparted-dev, libparted-i18n (= ${source:Version})
> +Suggests: parted, libparted-dev, libparted-i18n (= ${source:Version})
> Conflicts: parted (<< 1.4.13+14pre1), libparted1 (<< 2.2)
> Replaces: libparted0 (<< 2.2-4), libparted1 (<< 2.2), libparted1.4 (<< 1.4.24-2)
> Provides: libparted
> diff -Nru parted-3.2/debian/patches/fat16-resize-crash.patch parted-3.2/debian/patches/fat16-resize-crash.patch
> --- parted-3.2/debian/patches/fat16-resize-crash.patch 1970-01-01 01:00:00.000000000 +0100
> +++ parted-3.2/debian/patches/fat16-resize-crash.patch 2014-11-06 12:21:49.000000000 +0000
> @@ -0,0 +1,56 @@
> +From bdfd201a2f5b8090c7ba1208fe5531d0dceecf49 Mon Sep 17 00:00:00 2001
> +From: Mike Fleetwood <mike.fleetwood@googlemail.com>
> +Date: Sun, 28 Sep 2014 16:15:48 +0100
> +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
> +
> +Origin: upstream, http://git.savannah.gnu.org/cgit/parted.git/commit/?id=1e9e770f4bc7f3d80e09ecd1df58575fad064163
> +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=735669
> +Last-Update: 2014-11-06
> +
> +Patch-Name: fat16-resize-crash.patch
> +---
> + libparted/fs/r/fat/resize.c | 12 +++++++++---
> + 1 file changed, 9 insertions(+), 3 deletions(-)
> +
> +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;
> diff -Nru parted-3.2/debian/patches/series parted-3.2/debian/patches/series
> --- parted-3.2/debian/patches/series 2014-09-19 15:38:08.000000000 +0100
> +++ parted-3.2/debian/patches/series 2014-11-06 12:21:49.000000000 +0000
> @@ -13,3 +13,4 @@
> fat-resize-large-sectors.patch
> align-new-partitions-on-fresh-disks.patch
> probe-lvs-again.patch
> +fat16-resize-crash.patch
>
> unblock parted/3.2-7
>
> Thanks,
>
Reply to: