[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