gparted/include
Mike Fleetwood 1f2a50544d Prevent assert failure from OperationCheck::get_partition_new() (#767233)
Composing these operations caused GParted to abort on an assert failure:
(1) Check an existing partition,
(2) Create a new partition,
(3) Delete new partition.

    # ./gpartedbin
    ======================
    libparted : 2.4
    ======================
    **
    ERROR:OperationCheck.cc:40:virtual GParted::Partition& GParted::OperationCheck::get_partition_new(): assertion failed: (false)
    Aborted (core dumped)

    # gdb ./gpartedbin core.8876 --batch --quiet --ex backtrace -ex quit
    [New Thread 8876]
    [New Thread 8879]
    [Thread debugging using libthread_db enabled]
    Core was generated by `./gpartedbin'.
    Program terminated with signal 6, Aborted.
    #0  0x000000361f2325e5 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
    64	  return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
    #0  0x000000361f2325e5 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
    #1  0x000000361f233dc5 in abort () at abort.c:92
    #2  0x0000003620a67324 in g_assertion_message (domain=<value optimized out>, file=<value optimized out>, line=<value optimized out>, func=0x50f400 "virtual GParted::Partition& GParted::OperationCheck::get_partition_new()", message=0x1d37a00 "assertion failed: (false)") at gtestutils.c:1358
    #3  0x0000003620a678f0 in g_assertion_message_expr (domain=0x0, file=0x50f1a8 "OperationCheck.cc", line=40, func=0x50f400 "virtual GParted::Partition& GParted::OperationCheck::get_partition_new()", expr=<value optimized out>) at gtestutils.c:1369
    #4  0x0000000000498e21 in GParted::OperationCheck::get_partition_new (this=0x1d1bb30) at OperationCheck.cc:40
    #5  0x00000000004c66ec in GParted::Win_GParted::activate_delete (this=0x7fff031c3e30) at Win_GParted.cc:2068
    ...

When Win_GParted::activate_delete() was stepping through the operation
list removing operations (2 & 3 in the above recreation steps) which
related to the new partition never to be created it called
get_partition_new() on all operations in the list.  This included
calling get_partition_new() on the check operation (1 in the above
recreation steps).  As partition_new was not set or used by the check
operation get_partition_new() asserted false and crashed GParted.

Fix by populating the partition_new member in OperationCheck objects,
thus allowing get_partition_new() to be called on the object.  As a
check operation doesn't change any partition boundaries or file system
attributes, just duplicate the new partition from the original
partition.

Bug 767233 - GParted core dump on assert failure in
             OperationDelete::get_partition_new()
2016-06-05 13:14:34 -06:00
..
.cvsignore
Copy_Blocks.h Use a single progress bar for the internal block copy operation (#762367) 2016-02-23 10:41:20 -07:00
DMRaid.h Move DEV_MAPPER_PATH from DMRaid.h to Utils.h (#760080) 2016-01-29 13:41:40 -07:00
Device.h Use PartitionVector class throughout the code (#759726) 2016-01-26 10:11:35 -07:00
DialogFeatures.h
DialogManageFlags.h
Dialog_Base_Partition.h Remove unnecessary sector_size parameter from Get_New_Partition methods 2016-01-26 10:11:35 -07:00
Dialog_Disklabel.h
Dialog_FileSystem_Label.h
Dialog_Partition_Copy.h Remove unnecessary sector_size parameter from Get_New_Partition methods 2016-01-26 10:11:35 -07:00
Dialog_Partition_Info.h Add encryption section into the Information dialog (#760080) 2016-01-29 13:41:41 -07:00
Dialog_Partition_Name.h
Dialog_Partition_New.h Remove unnecessary sector_size parameter from Get_New_Partition methods 2016-01-26 10:11:35 -07:00
Dialog_Partition_Resize_Move.h Use pointer to Partition in Dialog_Base_Partition and derived classes (#759726) 2016-01-26 10:11:35 -07:00
Dialog_Progress.h
Dialog_Rescue_Data.h Use PartitionVector class throughout the code (#759726) 2016-01-26 10:11:35 -07:00
DrawingAreaVisualDisk.h Use PartitionVector class throughout the code (#759726) 2016-01-26 10:11:35 -07:00
FS_Info.h
FileSystem.h Replace 32-bit member variable "index" with wider local variables (#764658) 2016-04-07 09:56:00 -06:00
Frame_Resizer_Base.h
Frame_Resizer_Extended.h
GParted_Core.h Populate encrypted Partition member inside PartitionLUKS (#760080) 2016-01-29 13:41:40 -07:00
HBoxOperations.h
LUKS_Info.h Implement demand loading of LUKS_Info cache (#760080) 2016-01-29 13:41:40 -07:00
LVM2_PV_Info.h Display list of Logical Volumes in the Partition Information dialog (754649) 2015-09-15 20:12:12 +01:00
Makefile.am Write a generic progress bar class (#760709) 2016-02-12 09:09:56 -07:00
Operation.h Use pointers to Partitions in Operation classes (#759726) 2016-01-26 10:11:35 -07:00
OperationChangeUUID.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
OperationCheck.h Prevent assert failure from OperationCheck::get_partition_new() (#767233) 2016-06-05 13:14:34 -06:00
OperationCopy.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
OperationCreate.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
OperationDelete.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
OperationDetail.h Remove unused OperationDetail members (#760709) 2016-02-12 09:09:57 -07:00
OperationFormat.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
OperationLabelFileSystem.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
OperationNamePartition.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
OperationResizeMove.h Add virtual qualifier to derived Operation class destructors 2016-01-26 10:11:36 -07:00
Partition.h Record file system block size where known (#760709) 2016-02-12 09:09:57 -07:00
PartitionLUKS.h Display messages for encrypted file systems (#760080) 2016-01-29 13:41:41 -07:00
PartitionVector.h Replace all Partition object copy assignment (#759726) 2016-01-26 10:11:35 -07:00
PipeCapture.h
Proc_Partitions_Info.h
ProgressBar.h Write a generic progress bar class (#760709) 2016-02-12 09:09:56 -07:00
SWRaid_Info.h Ensure SWRaid_Info cache is loaded at least once (#756829) 2015-11-02 10:03:45 -07:00
TreeView_Detail.h Use PartitionVector class throughout the code (#759726) 2016-01-26 10:11:35 -07:00
Utils.h Update ext2 resize progress tracker to use the new ProgressBar (#760709) 2016-02-12 09:09:56 -07:00
Win_GParted.h Change copied_partition into a pointer (#759726) 2016-01-26 10:11:35 -07:00
btrfs.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
exfat.h
ext2.h Only enable ext4 64bit feature when required (#766910) 2016-06-05 09:40:11 -06:00
f2fs.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
fat16.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
hfs.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
hfsplus.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
i18n.h
jfs.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
linux_swap.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
luks.h Populate LUKS partition usage (#760080) 2016-01-29 13:41:40 -07:00
lvm2_pv.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
nilfs2.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
ntfs.h Display progress of NTFS file system specific copy operation (#762366) 2016-02-23 10:02:03 -07:00
reiser4.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
reiserfs.h Include Partition.h header everywhere it's used 2016-01-26 10:11:35 -07:00
ufs.h
xfs.h Display progress of XFS file system specific copy operation (#760709) 2016-02-12 09:09:57 -07:00