[lvm-devel] master - cmdline: fix missing NULL at end of array of args

Zdenek Kabelac zkabelac at sourceware.org
Mon Jun 26 18:08:31 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=52f4042f1a3b21054041298d7e50ded7ae366f44
Commit:        52f4042f1a3b21054041298d7e50ded7ae366f44
Parent:        4e4067dd94f52f90f0aaae30c522102ccbaa2826
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Mon Jun 26 20:03:05 2017 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Jun 26 20:07:21 2017 +0200

cmdline: fix missing NULL at end of array of args

lvm_run needs to place NULL as the last element into argv[].
Otherwise we get:

Conditional jump or move depends on uninitialised value(s)
 _command_required_pos_matches (lvmcmdline.c:1443)
 _find_command (lvmcmdline.c:1610)
 lvm_run_command (lvmcmdline.c:2770)
 lvm2_run (lvmcmdlib.c:91)
---
 WHATS_NEW          |    1 +
 test/api/test.c    |    3 +++
 tools/lvmcmdline.c |    3 +++
 3 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index 6a60f0b..2872dbb 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.172 - 
 ===============================
+  Add missing NULL to argv array when spliting cmdline arguments.
   Add display_percent helper function for printing percent values.
   Lvconvert --repair handles failing raid legs (present but marked 'D'ead).
   Do not lvdisplay --maps unset settings of cache pool.
diff --git a/test/api/test.c b/test/api/test.c
index 1413030..a79afc1 100644
--- a/test/api/test.c
+++ b/test/api/test.c
@@ -51,6 +51,9 @@ static int lvm_split(char *str, int *argc, char **argv, int max)
 			break;
 	}
 
+	if (*argc < max)
+		argv[*argc] = NULL;
+
 	return *argc;
 }
 
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 9e77d48..0aca37a 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -3045,6 +3045,9 @@ int lvm_split(char *str, int *argc, char **argv, int max)
 			break;
 	}
 
+	if (*argc < max)
+		argv[*argc] = NULL;
+
 	return *argc;
 }
 




More information about the lvm-devel mailing list