blob: 5b84af2c3250798e5317dde695acd3aa04bb15aa [file] [log] [blame]
From f7a4b79b3323534460a63b3e6c58ebaf06adf207 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
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 <raj.khem@gmail.com>
---
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)