From f5de3401b974ce103ffd93af8f9d43505a04aaf9 Mon Sep 17 00:00:00 2001 From: Damian Kurek Date: Thu, 7 Jul 2022 03:39:16 +0000 Subject: [PATCH] Fix NULL dereference when duplicating string argument poptGetArg can return NULL if there are no additional arguments, which makes strdup dereference NULL on strlen --- gptcl.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gptcl.cc b/gptcl.cc index 0d578eb..ab95239 100644 --- a/gptcl.cc +++ b/gptcl.cc @@ -155,10 +155,11 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { } // while // Assume first non-option argument is the device filename.... - device = strdup((char*) poptGetArg(poptCon)); - poptResetContext(poptCon); + device = (char*) poptGetArg(poptCon); if (device != NULL) { + device = strdup(device); + poptResetContext(poptCon); JustLooking(); // reset as necessary BeQuiet(); // Tell called functions to be less verbose & interactive if (LoadPartitions((string) device)) { @@ -498,6 +499,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) { cerr << "Error encountered; not saving changes.\n"; retval = 4; } // if + free(device); } // if (device != NULL) poptFreeContext(poptCon); return retval;