[parted-devel] [PATCH] fdasd.c: Safeguard against geometry misprobing
Brian C. Lane
bcl at redhat.com
Wed Feb 10 01:47:42 UTC 2016
On Fri, Feb 05, 2016 at 02:47:11PM +0100, Viktor Mihajlovski wrote:
> Fixes an issue with parted print being run against a logical
> volume realised by extents on a physical volume residing on
> a DASD.
> We must make sure that geometry, device blocksize and DASD
> attributes are present before we start format verifications
> If any of it is missing this is not a DASD.
>
> Signed-off-by: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
> ---
> libparted/labels/fdasd.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c
> index 7e6a77a..968b332 100644
> --- a/libparted/labels/fdasd.c
> +++ b/libparted/labels/fdasd.c
> @@ -1021,13 +1021,20 @@ fdasd_get_geometry (const PedDevice *dev, fdasd_anchor_t *anc, int f)
> goto error;
> }
>
> - if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0)
> + if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0 ||
> + anc->geo.heads == 0 ||
> + anc->geo.sectors == 0 ||
> + anc->geo.cylinders == 0 ) {
> fdasd_error(anc, unable_to_ioctl,
> _("Could not retrieve disk geometry information."));
> + goto error;
> + }
>
> - if (ioctl(f, BLKSSZGET, &blksize) != 0)
> + if (ioctl(f, BLKSSZGET, &blksize) != 0) {
> fdasd_error(anc, unable_to_ioctl,
> _("Could not retrieve blocksize information."));
> + goto error;
> + }
>
> /* get disk type */
> if (ioctl(f, BIODASDINFO, &dasd_info) != 0) {
> --
> 1.9.1
>
>
Ack, thanks!
--
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)
More information about the parted-devel
mailing list