Subject: Re: bug#22920: [PATCH] libparted/disk.c(ped_disk_get_partition): Fix assert error

From: Phillip Susi <[email-masked]>
Date: Mon, 11 Apr 2016 20:21:51 -0400

The patch is not correct because as a library, libparted can not
simply write directly to stderr; it must throw an exception instead.
In all probability the bug lies in parted itself, which should not be
calling ped_disk_get_partition on a NULL disk pointer.  I'll work on a
proper fix for this.

On 03/06/2016 01:48 AM, lu4nx wrote:
> From: Xi Lu <[email-masked]>
> 
> if forget create a partition, and execute:
> 
> `name 1 grub`
> 
> ped_disk_get_partition() will trigger an exception:
> 
> Assertion (disk != NULL) --- libparted/disk.c | 5 ++++- 1 file
> changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/libparted/disk.c b/libparted/disk.c index
> fe82f44..9f36d10 100644 --- a/libparted/disk.c +++
> b/libparted/disk.c @@ -1594,7 +1594,10 @@ ped_disk_get_partition
> (const PedDisk* disk, int num) { PedPartition*	walk;
> 
> -	PED_ASSERT (disk != NULL); +        if (disk == NULL) { +
> fprintf(stderr, "you must specify partition."); +          return
> NULL; +        }
> 
> for (walk = disk->part_list; walk; walk = ped_disk_next_partition
> (disk, walk)) {
>