Wipe existing signatures when creating partition table

As the sfdisk man page says on the option '--wipe' that
specifies whether or not to wipe signatures in order
to avoid collisions:

> When this option is not given, the default is auto,
> in which case signatures are wiped only when in interactive mode

but sfdisk is not run in interactive mode here, since
stdin does not refer to a terminal, and the sfdisk
man page says:

> It [i.e. sfdisk] runs in interactive mode if executed on terminal
> (stdin refers to a terminal).

Therefore, explicitly pass the '--wipe=always' option to
sfdisk so that old signatures are wiped when a new partition
table is created.

Bug: 431628
This commit is contained in:
Michael Weghorn 2021-01-15 09:14:57 +01:00
parent 31706cffdc
commit 813e574001
1 changed files with 1 additions and 1 deletions

View File

@ -60,7 +60,7 @@ bool SfdiskDevice::createPartitionTable(Report& report, const PartitionTable& pt
else
tableType = ptable.typeName().toLocal8Bit();
ExternalCommand createCommand(report, QStringLiteral("sfdisk"), { m_device->deviceNode() } );
ExternalCommand createCommand(report, QStringLiteral("sfdisk"), { QStringLiteral("--wipe=always"), m_device->deviceNode() } );
if ( createCommand.write(QByteArrayLiteral("label: ") + tableType +
QByteArrayLiteral("\nwrite\n")) && createCommand.start(-1) ) {
return createCommand.output().contains(QStringLiteral("Script header accepted."));