diff mbox series

[18/33] sandbox: Ensure that long-options array is terminated

Message ID 20200112120216.18.I6168badb553fa92db60d2539b78087eac6dfc68e@changeid
State Superseded
Delegated to: Simon Glass
Headers show
Series sandbox: Move to SDL2 | expand

Commit Message

Simon Glass Jan. 12, 2020, 7:06 p.m. UTC
The last member of this array is supposed to be all zeroes according to
the getopt_long() man page. Fix the function to do this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/sandbox/cpu/os.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
index 60011f7abc..f7c73e3a0b 100644
--- a/arch/sandbox/cpu/os.c
+++ b/arch/sandbox/cpu/os.c
@@ -284,7 +284,7 @@  int os_parse_args(struct sandbox_state *state, int argc, char *argv[])
 
 	/* dynamically construct the arguments to the system getopt_long */
 	short_opts = malloc(sizeof(*short_opts) * num_options * 2 + 1);
-	long_opts = malloc(sizeof(*long_opts) * num_options);
+	long_opts = malloc(sizeof(*long_opts) * (num_options + 1));
 	if (!short_opts || !long_opts)
 		return 1;
 
@@ -314,6 +314,7 @@  int os_parse_args(struct sandbox_state *state, int argc, char *argv[])
 	/* we need to handle output ourselves since u-boot provides printf */
 	opterr = 0;
 
+	memset(&long_opts[num_options], '\0', sizeof(*long_opts));
 	/*
 	 * walk all of the options the user gave us on the command line,
 	 * figure out what u-boot option structure they belong to (via