From f7a4b79b3323534460a63b3e6c58ebaf06adf207 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 14 Jul 2017 13:20:05 -0700 Subject: [PATCH] v4l2-ctl: Do not use getsubopt POSIX says that behavior when subopts list is empty is undefined. musl libs will set value to NULL which leads to crash. Taken from AlpineLinux Signed-off-by: Khem Raj --- utils/v4l2-ctl/v4l2-ctl-common.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp index 3ea6cd3..291fb3e 100644 --- a/utils/v4l2-ctl/v4l2-ctl-common.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp @@ -692,16 +692,17 @@ static bool parse_subset(char *optarg) static bool parse_next_subopt(char **subs, char **value) { - static char *const subopts[] = { - NULL - }; - int opt = getsubopt(subs, subopts, value); + char *p = *subs; + *value = *subs; - if (opt < 0 || *value) - return false; - fprintf(stderr, "No value given to suboption <%s>\n", - subopts[opt]); - return true; + while (*p && *p != ',') + p++; + + if (*p) + *p++ = '\0'; + + *subs = p; + return false; } void common_cmd(int ch, char *optarg)