diff --git a/syslinux-4.04-geometry.diff b/syslinux-4.04-geometry.diff new file mode 100644 index 0000000..08074ed --- /dev/null +++ b/syslinux-4.04-geometry.diff @@ -0,0 +1,38 @@ +From 73cd9bf26066cad0d4a483e31e1d89802a7ca1f9 Mon Sep 17 00:00:00 2001 +From: Gene Cumm +Date: Wed, 11 May 2011 16:03:30 +0000 +Subject: extlinux/main.c: Fix geometry handling + +1) ioctl HDIO_GETGEO expects a pointer to a struct hd_geometry +2) struct stat's st_dev is the parent file used; st_rdev is what we want + +Reported-by: Michael Tokarev +Tested-By: Michael Tokarev +Signed-off-by: Gene Cumm +--- +(limited to 'extlinux/main.c') + +diff --git a/extlinux/main.c b/extlinux/main.c +index e5212a9..6aa6202 100755 +--- a/extlinux/main.c ++++ b/extlinux/main.c +@@ -112,7 +112,7 @@ static int sysfs_get_offset(int devfd, unsigned long *start) + + if ((size_t)snprintf(sysfs_name, sizeof sysfs_name, + "/sys/dev/block/%u:%u/start", +- major(st.st_dev), minor(st.st_dev)) ++ major(st.st_rdev), minor(st.st_rdev)) + >= sizeof sysfs_name) + return -1; + +@@ -153,7 +153,7 @@ int get_geometry(int devfd, uint64_t totalbytes, struct hd_geometry *geo) + + memset(geo, 0, sizeof *geo); + +- if (!ioctl(devfd, HDIO_GETGEO, &geo)) { ++ if (!ioctl(devfd, HDIO_GETGEO, geo)) { + goto ok; + } else if (!ioctl(devfd, FDGETPRM, &fd_str)) { + geo->heads = fd_str.head; +-- +cgit v0.9.2 diff --git a/syslinux.changes b/syslinux.changes index bf544e5..fe1b1f0 100644 --- a/syslinux.changes +++ b/syslinux.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Nov 28 16:12:44 UTC 2013 - rhafer@suse.com + +- geometry.diff: Fix segfault caused by a bug in geometry handling + (bnc#852856) + ------------------------------------------------------------------- Fri Apr 5 11:03:29 UTC 2013 - idonmez@suse.com diff --git a/syslinux.spec b/syslinux.spec index 3df57f0..11c05d0 100644 --- a/syslinux.spec +++ b/syslinux.spec @@ -46,6 +46,7 @@ Patch8: %{name}-%{version}-isohybrid_efi.diff Patch9: %{name}-%{version}-isohybrid_efi_optional.diff Patch10: %{name}-%{version}-isohybrid_mbr.diff Patch11: %{name}-%{version}-localboot.diff +Patch12: %{name}-%{version}-geometry.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -73,6 +74,7 @@ Authors: %patch9 -p1 %patch10 -p1 %patch11 -p1 +%patch12 -p1 %build cp %{SOURCE2} .