git: a8178eb7264b - main - sysutils/gdisk: fix memory corruption while using sgdisk command
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 22 Nov 2022 10:42:56 UTC
The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/ports/commit/?id=a8178eb7264b6be494206d37141bd67827883488 commit a8178eb7264b6be494206d37141bd67827883488 Author: Baptiste Daroussin <bapt@FreeBSD.org> AuthorDate: 2022-11-22 10:08:49 +0000 Commit: Baptiste Daroussin <bapt@FreeBSD.org> CommitDate: 2022-11-22 10:10:42 +0000 sysutils/gdisk: fix memory corruption while using sgdisk command while parsing arguments, the device (last argument) variable is reset before being used. --- sysutils/gdisk/Makefile | 2 +- sysutils/gdisk/files/patch-gptcl.cc | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/sysutils/gdisk/Makefile b/sysutils/gdisk/Makefile index e3e3a34d3a94..52443cd3ee63 100644 --- a/sysutils/gdisk/Makefile +++ b/sysutils/gdisk/Makefile @@ -1,6 +1,6 @@ PORTNAME= gdisk PORTVERSION= 1.0.9 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= sysutils MASTER_SITES= SF/gptfdisk/gptfdisk/${PORTVERSION} DISTNAME= gptfdisk-${PORTVERSION} diff --git a/sysutils/gdisk/files/patch-gptcl.cc b/sysutils/gdisk/files/patch-gptcl.cc new file mode 100644 index 000000000000..19e73564d9d0 --- /dev/null +++ b/sysutils/gdisk/files/patch-gptcl.cc @@ -0,0 +1,33 @@ +--- gptcl.cc.orig 2022-11-22 09:31:13 UTC ++++ gptcl.cc +@@ -71,7 +71,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { + uint64_t low, high, startSector, endSector, sSize, mainTableLBA; + uint64_t temp; // temporary variable; free to use in any case + char *device; +- string cmd, typeGUID, name; ++ string cmd, typeGUID, name, devstr; + PartType typeHelper; + + struct poptOption theOptions[] = +@@ -156,9 +156,11 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { + + // Assume first non-option argument is the device filename.... + device = (char*) poptGetArg(poptCon); ++ if (device != NULL) ++ devstr = device; + poptResetContext(poptCon); + +- if (device != NULL) { ++ if (devstr.empty()) { + JustLooking(); // reset as necessary + BeQuiet(); // Tell called functions to be less verbose & interactive + if (LoadPartitions(devstr)) { +@@ -498,7 +500,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { + cerr << "Error encountered; not saving changes.\n"; + retval = 4; + } // if +- } // if (device != NULL) ++ } // if (devstr empty) + poptFreeContext(poptCon); + return retval; + } // GPTDataCL::DoOptions()