Accepting request 712877 from home:anicka:branches:Base:System
- port fixes for various bugs from upstream (bsc#1136245)
- add: libparted-dasd-correct-the-offset-where-the-first-pa.patch
4126d02, correct the offset where the first partition begins.
This patch implements libparted-dasd-do-not-use-first-tracks.patch
- remove: libparted-dasd-do-not-use-first-tracks.patch
- add: parted-fix-crash-due-to-improper-partition-number-in.patch
149f009, fix crash due to improper partition number input,
changed call to strtol, use base 0 to fit our parted-type.patch
- modify: parted-type.patch (removed ui.c part)
- add: parted-check-the-name-of-partition-first-when-to-nam.patch
d7a2ff1, check the name of partition first when to name a partition
- add: libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch
c11f5c0, 571e078, add test cases for the new fdasd functions
- add: libparted-dasd-add-an-exception-for-changing-DASD-LD.patch
ee2c0c2, add an exception for changing DASD-LDL partition table
- add: libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch
1545d6d, improve flag processing for DASD-LDL
- add: clean-the-disk-information-when-commands-fail-in-int.patch
5a61f15, clean the disk information when commands fail in
interactive mode
- add: parted-ui-remove-unneccesary-information-of-command.patch
0b7946a, remove unneccesary information of command line
- add: parted-fix-wrong-error-label-jump-in-mkpart.patch
af150f6, fix wrong error label jump in mkpart
- refresh: libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch
4f25d54, unify vtoc handling for cdl/ldl
- refresh: libparted-dasd-update-and-improve-fdasd-functions.patch
db37c8c, update and improve fdasd functions
- refresh: libparted-dasd-add-new-fdasd-functions.patch
b9e1281, add new fdasd functions
OBS-URL: https://build.opensuse.org/request/show/712877
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=142
2019-07-08 14:12:35 +02:00
|
|
|
From 149f009c3b4ab6bac8059b48142a1c3f698c8e53 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Wang Dong <dongdwdw@linux.vnet.ibm.com>
|
|
|
|
Date: Fri, 23 Dec 2016 06:53:36 +0100
|
|
|
|
Subject: [PATCH] parted: fix crash due to improper partition number input
|
|
|
|
|
|
|
|
When the user makes a new partition, if parted fails to add the
|
|
|
|
partition to disk, it jumps to wrong error label. In this
|
|
|
|
situation, this new partition actually is not a node in disk
|
|
|
|
data structure. But in the wrong error label, it pretends this
|
|
|
|
is a node and removes it as a list node, leading to other
|
|
|
|
partition in this disk deleted. This might lead to a memory leak.
|
|
|
|
Because if there are other partitions, it just removes them from
|
|
|
|
list without releasing the resource. And this also leads to different
|
|
|
|
disk information between memory and device. This is confusing.
|
|
|
|
|
|
|
|
But when the new partition is added to disk successfully and if
|
|
|
|
any operations followed fail, this partition should be removed from
|
|
|
|
disk and destroyed.
|
|
|
|
|
|
|
|
Signed-off-by: Wang Dong <dongdwdw@linux.vnet.ibm.com>
|
|
|
|
Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
|
|
|
|
---
|
|
|
|
parted/ui.c | 26 ++++++++++++++++++++++----
|
|
|
|
1 file changed, 22 insertions(+), 4 deletions(-)
|
|
|
|
|
2019-07-26 11:00:45 +02:00
|
|
|
Index: parted-3.2/parted/ui.c
|
|
|
|
===================================================================
|
|
|
|
--- parted-3.2.orig/parted/ui.c
|
|
|
|
+++ parted-3.2/parted/ui.c
|
Accepting request 712877 from home:anicka:branches:Base:System
- port fixes for various bugs from upstream (bsc#1136245)
- add: libparted-dasd-correct-the-offset-where-the-first-pa.patch
4126d02, correct the offset where the first partition begins.
This patch implements libparted-dasd-do-not-use-first-tracks.patch
- remove: libparted-dasd-do-not-use-first-tracks.patch
- add: parted-fix-crash-due-to-improper-partition-number-in.patch
149f009, fix crash due to improper partition number input,
changed call to strtol, use base 0 to fit our parted-type.patch
- modify: parted-type.patch (removed ui.c part)
- add: parted-check-the-name-of-partition-first-when-to-nam.patch
d7a2ff1, check the name of partition first when to name a partition
- add: libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch
c11f5c0, 571e078, add test cases for the new fdasd functions
- add: libparted-dasd-add-an-exception-for-changing-DASD-LD.patch
ee2c0c2, add an exception for changing DASD-LDL partition table
- add: libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch
1545d6d, improve flag processing for DASD-LDL
- add: clean-the-disk-information-when-commands-fail-in-int.patch
5a61f15, clean the disk information when commands fail in
interactive mode
- add: parted-ui-remove-unneccesary-information-of-command.patch
0b7946a, remove unneccesary information of command line
- add: parted-fix-wrong-error-label-jump-in-mkpart.patch
af150f6, fix wrong error label jump in mkpart
- refresh: libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch
4f25d54, unify vtoc handling for cdl/ldl
- refresh: libparted-dasd-update-and-improve-fdasd-functions.patch
db37c8c, update and improve fdasd functions
- refresh: libparted-dasd-add-new-fdasd-functions.patch
b9e1281, add new fdasd functions
OBS-URL: https://build.opensuse.org/request/show/712877
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=142
2019-07-08 14:12:35 +02:00
|
|
|
@@ -29,6 +29,8 @@
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <setjmp.h>
|
|
|
|
#include <assert.h>
|
|
|
|
+#include <limits.h>
|
|
|
|
+#include <errno.h>
|
|
|
|
|
|
|
|
#include "command.h"
|
|
|
|
#include "strlist.h"
|
2019-07-26 11:00:45 +02:00
|
|
|
@@ -912,16 +914,34 @@ command_line_get_integer (const char* pr
|
Accepting request 712877 from home:anicka:branches:Base:System
- port fixes for various bugs from upstream (bsc#1136245)
- add: libparted-dasd-correct-the-offset-where-the-first-pa.patch
4126d02, correct the offset where the first partition begins.
This patch implements libparted-dasd-do-not-use-first-tracks.patch
- remove: libparted-dasd-do-not-use-first-tracks.patch
- add: parted-fix-crash-due-to-improper-partition-number-in.patch
149f009, fix crash due to improper partition number input,
changed call to strtol, use base 0 to fit our parted-type.patch
- modify: parted-type.patch (removed ui.c part)
- add: parted-check-the-name-of-partition-first-when-to-nam.patch
d7a2ff1, check the name of partition first when to name a partition
- add: libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch
c11f5c0, 571e078, add test cases for the new fdasd functions
- add: libparted-dasd-add-an-exception-for-changing-DASD-LD.patch
ee2c0c2, add an exception for changing DASD-LDL partition table
- add: libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch
1545d6d, improve flag processing for DASD-LDL
- add: clean-the-disk-information-when-commands-fail-in-int.patch
5a61f15, clean the disk information when commands fail in
interactive mode
- add: parted-ui-remove-unneccesary-information-of-command.patch
0b7946a, remove unneccesary information of command line
- add: parted-fix-wrong-error-label-jump-in-mkpart.patch
af150f6, fix wrong error label jump in mkpart
- refresh: libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch
4f25d54, unify vtoc handling for cdl/ldl
- refresh: libparted-dasd-update-and-improve-fdasd-functions.patch
db37c8c, update and improve fdasd functions
- refresh: libparted-dasd-add-new-fdasd-functions.patch
b9e1281, add new fdasd functions
OBS-URL: https://build.opensuse.org/request/show/712877
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=142
2019-07-08 14:12:35 +02:00
|
|
|
{
|
|
|
|
char def_str [10];
|
|
|
|
char* input;
|
|
|
|
- int valid;
|
|
|
|
+ long ret;
|
|
|
|
|
|
|
|
snprintf (def_str, 10, "%d", *value);
|
|
|
|
input = command_line_get_word (prompt, *value ? def_str : NULL,
|
|
|
|
NULL, 1);
|
|
|
|
if (!input)
|
|
|
|
return 0;
|
|
|
|
- valid = sscanf (input, "%d", value);
|
|
|
|
+
|
|
|
|
+ errno = 0;
|
2019-07-26 11:00:45 +02:00
|
|
|
+
|
|
|
|
+ if (strstr(input, "0x") == input)
|
|
|
|
+ ret = strtol (input, (char**) NULL, 16);
|
|
|
|
+ else
|
|
|
|
+ ret = strtol (input, (char**) NULL, 10);
|
Accepting request 712877 from home:anicka:branches:Base:System
- port fixes for various bugs from upstream (bsc#1136245)
- add: libparted-dasd-correct-the-offset-where-the-first-pa.patch
4126d02, correct the offset where the first partition begins.
This patch implements libparted-dasd-do-not-use-first-tracks.patch
- remove: libparted-dasd-do-not-use-first-tracks.patch
- add: parted-fix-crash-due-to-improper-partition-number-in.patch
149f009, fix crash due to improper partition number input,
changed call to strtol, use base 0 to fit our parted-type.patch
- modify: parted-type.patch (removed ui.c part)
- add: parted-check-the-name-of-partition-first-when-to-nam.patch
d7a2ff1, check the name of partition first when to name a partition
- add: libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch
c11f5c0, 571e078, add test cases for the new fdasd functions
- add: libparted-dasd-add-an-exception-for-changing-DASD-LD.patch
ee2c0c2, add an exception for changing DASD-LDL partition table
- add: libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch
1545d6d, improve flag processing for DASD-LDL
- add: clean-the-disk-information-when-commands-fail-in-int.patch
5a61f15, clean the disk information when commands fail in
interactive mode
- add: parted-ui-remove-unneccesary-information-of-command.patch
0b7946a, remove unneccesary information of command line
- add: parted-fix-wrong-error-label-jump-in-mkpart.patch
af150f6, fix wrong error label jump in mkpart
- refresh: libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch
4f25d54, unify vtoc handling for cdl/ldl
- refresh: libparted-dasd-update-and-improve-fdasd-functions.patch
db37c8c, update and improve fdasd functions
- refresh: libparted-dasd-add-new-fdasd-functions.patch
b9e1281, add new fdasd functions
OBS-URL: https://build.opensuse.org/request/show/712877
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=142
2019-07-08 14:12:35 +02:00
|
|
|
+ if (errno)
|
|
|
|
+ goto error;
|
|
|
|
+
|
|
|
|
+ if ((ret > INT_MAX) || (ret < INT_MIN))
|
|
|
|
+ goto error;
|
|
|
|
+ else
|
|
|
|
+ *value = (int) ret;
|
|
|
|
+
|
|
|
|
free (input);
|
|
|
|
- return valid;
|
|
|
|
+ return 1;
|
|
|
|
+
|
|
|
|
+error:
|
|
|
|
+ free (input);
|
|
|
|
+ return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
2019-07-26 11:00:45 +02:00
|
|
|
@@ -1031,6 +1051,7 @@ command_line_get_partition (const char*
|
Accepting request 712877 from home:anicka:branches:Base:System
- port fixes for various bugs from upstream (bsc#1136245)
- add: libparted-dasd-correct-the-offset-where-the-first-pa.patch
4126d02, correct the offset where the first partition begins.
This patch implements libparted-dasd-do-not-use-first-tracks.patch
- remove: libparted-dasd-do-not-use-first-tracks.patch
- add: parted-fix-crash-due-to-improper-partition-number-in.patch
149f009, fix crash due to improper partition number input,
changed call to strtol, use base 0 to fit our parted-type.patch
- modify: parted-type.patch (removed ui.c part)
- add: parted-check-the-name-of-partition-first-when-to-nam.patch
d7a2ff1, check the name of partition first when to name a partition
- add: libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch
c11f5c0, 571e078, add test cases for the new fdasd functions
- add: libparted-dasd-add-an-exception-for-changing-DASD-LD.patch
ee2c0c2, add an exception for changing DASD-LDL partition table
- add: libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch
1545d6d, improve flag processing for DASD-LDL
- add: clean-the-disk-information-when-commands-fail-in-int.patch
5a61f15, clean the disk information when commands fail in
interactive mode
- add: parted-ui-remove-unneccesary-information-of-command.patch
0b7946a, remove unneccesary information of command line
- add: parted-fix-wrong-error-label-jump-in-mkpart.patch
af150f6, fix wrong error label jump in mkpart
- refresh: libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch
4f25d54, unify vtoc handling for cdl/ldl
- refresh: libparted-dasd-update-and-improve-fdasd-functions.patch
db37c8c, update and improve fdasd functions
- refresh: libparted-dasd-add-new-fdasd-functions.patch
b9e1281, add new fdasd functions
OBS-URL: https://build.opensuse.org/request/show/712877
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=142
2019-07-08 14:12:35 +02:00
|
|
|
PedPartition** value)
|
|
|
|
{
|
|
|
|
PedPartition* part;
|
|
|
|
+ int ret;
|
|
|
|
|
|
|
|
/* Flawed logic, doesn't seem to work?!
|
|
|
|
check = ped_disk_next_partition (disk, part);
|
2019-07-26 11:00:45 +02:00
|
|
|
@@ -1047,7 +1068,8 @@ command_line_get_partition (const char*
|
Accepting request 712877 from home:anicka:branches:Base:System
- port fixes for various bugs from upstream (bsc#1136245)
- add: libparted-dasd-correct-the-offset-where-the-first-pa.patch
4126d02, correct the offset where the first partition begins.
This patch implements libparted-dasd-do-not-use-first-tracks.patch
- remove: libparted-dasd-do-not-use-first-tracks.patch
- add: parted-fix-crash-due-to-improper-partition-number-in.patch
149f009, fix crash due to improper partition number input,
changed call to strtol, use base 0 to fit our parted-type.patch
- modify: parted-type.patch (removed ui.c part)
- add: parted-check-the-name-of-partition-first-when-to-nam.patch
d7a2ff1, check the name of partition first when to name a partition
- add: libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch
c11f5c0, 571e078, add test cases for the new fdasd functions
- add: libparted-dasd-add-an-exception-for-changing-DASD-LD.patch
ee2c0c2, add an exception for changing DASD-LDL partition table
- add: libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch
1545d6d, improve flag processing for DASD-LDL
- add: clean-the-disk-information-when-commands-fail-in-int.patch
5a61f15, clean the disk information when commands fail in
interactive mode
- add: parted-ui-remove-unneccesary-information-of-command.patch
0b7946a, remove unneccesary information of command line
- add: parted-fix-wrong-error-label-jump-in-mkpart.patch
af150f6, fix wrong error label jump in mkpart
- refresh: libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch
4f25d54, unify vtoc handling for cdl/ldl
- refresh: libparted-dasd-update-and-improve-fdasd-functions.patch
db37c8c, update and improve fdasd functions
- refresh: libparted-dasd-add-new-fdasd-functions.patch
b9e1281, add new fdasd functions
OBS-URL: https://build.opensuse.org/request/show/712877
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=142
2019-07-08 14:12:35 +02:00
|
|
|
*/
|
|
|
|
int num = (*value) ? (*value)->num : 0;
|
|
|
|
|
|
|
|
- if (!command_line_get_integer (prompt, &num)) {
|
|
|
|
+ ret = command_line_get_integer (prompt, &num);
|
|
|
|
+ if ((!ret) || (num < 0)) {
|
|
|
|
ped_exception_throw (PED_EXCEPTION_ERROR,
|
|
|
|
PED_EXCEPTION_CANCEL,
|
|
|
|
_("Expecting a partition number."));
|