Subject: Re: bug#34218: Partition name is not set by mkpart if compiled with --disable-debug

From: "Brian C. Lane" <[email-masked]>
Date: Thu, 31 Jan 2019 11:30:05 -0800

On Sun, Jan 27, 2019 at 11:34:40AM +0100, Oliver Mangold wrote:
> Hi,
> 
> I noticed a long-standing bug, that the 'name' argument of mkpart seems to be ignored. It happens only with debug disabled on compilation '--disable-debug' (as e.g. Arch Linux does for its package). The reason is, that from parted.c the function ped_partition_set_name is called within an assert. I believe the code should be rather something like this (which works for me):
> 
> --- parted/parted.c.orig	2019-01-27 11:27:54.742081238 +0100
> +++ parted/parted.c	2019-01-27 11:28:18.049039748 +0100
> @@ -806,7 +806,8 @@
>  
>          /* set minor attributes */
>          if (part_name)
> -                PED_ASSERT (ped_partition_set_name (part, part_name));
> +            if (!ped_partition_set_name (part, part_name))
> +                goto error;
>          free (part_name);  /* avoid double-free upon failure */
>          part_name = NULL;
>          if (!ped_partition_set_system (part, fs_type))

Thanks, I've applied this to master with a small change, it needs to
jump to error_remove_part

I'm also not sure it's a good idea to run parted without debug, when I
added --disable-debug to my fedora build pretty much all the tests fail
with segfaults.

But either way, an assert shouldn't be wrapping function calls that have
side-effects.

-- 
Brian C. Lane (PST8PDT)