summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgpt/cgpt_add.c4
-rwxr-xr-xtests/run_cgpt_tests.sh25
2 files changed, 27 insertions, 2 deletions
diff --git a/cgpt/cgpt_add.c b/cgpt/cgpt_add.c
index f72b4de5..319754ac 100644
--- a/cgpt/cgpt_add.c
+++ b/cgpt/cgpt_add.c
@@ -297,7 +297,7 @@ int cgpt_add(CgptAddParams *params) {
if (params->set_begin)
entry->starting_lba = params->begin;
if (params->set_size)
- entry->ending_lba = params->begin + params->size - 1;
+ entry->ending_lba = entry->starting_lba + params->size - 1;
if (params->set_type)
memcpy(&entry->type, &params->type_guid, sizeof(Guid));
if (params->set_unique)
@@ -323,7 +323,7 @@ int cgpt_add(CgptAddParams *params) {
if (0 != CheckEntries((GptEntry*)drive.gpt.primary_entries,
(GptHeader*)drive.gpt.primary_header)) {
memcpy(entry, &backup, sizeof(*entry));
- Error("At least a parameter is not allowed:\n");
+ Error("At least one parameter is not allowed:\n");
Error(DumpCgptAddParams(params));
goto bad;
}
diff --git a/tests/run_cgpt_tests.sh b/tests/run_cgpt_tests.sh
index 97f540ce..445070a4 100755
--- a/tests/run_cgpt_tests.sh
+++ b/tests/run_cgpt_tests.sh
@@ -105,6 +105,31 @@ Y=$($CGPT show -s -i $RANDOM_NUM ${DEV})
[ "$X $Y" = "$RANDOM_START $RANDOM_SIZE" ] || error
+echo "Change the beginning..."
+DATA_START=$((DATA_START + 10))
+$CGPT add -i 1 -b ${DATA_START} ${DEV} || error
+X=$($CGPT show -b -i 1 ${DEV})
+[ "$X" = "$DATA_START" ] || error
+
+echo "Change the size..."
+DATA_SIZE=$((DATA_SIZE + 10))
+$CGPT add -i 1 -s ${DATA_SIZE} ${DEV} || error
+X=$($CGPT show -s -i 1 ${DEV})
+[ "$X" = "$DATA_SIZE" ] || error
+
+echo "Change the type..."
+$CGPT add -i 1 -t reserved ${DEV} || error
+X=$($CGPT show -t -i 1 ${DEV} | tr 'A-Z' 'a-z')
+[ "$X" = "$FUTURE_GUID" ] || error
+# arbitrary value
+$CGPT add -i 1 -t 610a563a-a55c-4ae0-ab07-86e5bb9db67f ${DEV} || error
+X=$($CGPT show -t -i 1 ${DEV})
+[ "$X" = "610A563A-A55C-4AE0-AB07-86E5BB9DB67F" ] || error
+$CGPT add -i 1 -t data ${DEV} || error
+X=$($CGPT show -t -i 1 ${DEV} | tr 'A-Z' 'a-z')
+[ "$X" = "$DATA_GUID" ] || error
+
+
echo "Set the boot partition.."
$CGPT boot -i ${KERN_NUM} ${DEV} >/dev/null