summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch')
-rw-r--r--meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
new file mode 100644
index 000000000..ac704c72d
--- /dev/null
+++ b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
@@ -0,0 +1,48 @@
1From 4a10eab0e31d69948161241b1801c41201a5d081 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 30 Nov 2019 18:50:34 -0800
4Subject: [PATCH] Do not use getsubopt
5
6POSIX says that behavior when subopts list is empty is undefined.
7musl libs will set value to NULL which leads to crash.
8
9Simply avoid getsubopt, since we cannot rely on it.
10
11Imported from Alpine Linux
12
13Upstream-Status: Pending
14Signed-off-by: Khem Raj <raj.khem@gmail.com>
15---
16 utils/v4l2-ctl/v4l2-ctl-common.cpp | 18 ++++++++++--------
17 1 file changed, 10 insertions(+), 8 deletions(-)
18
19diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp
20index 651917e..cea57b7 100644
21--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
22+++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
23@@ -782,15 +782,17 @@ static bool parse_subset(char *optarg)
24
25 static bool parse_next_subopt(char **subs, char **value)
26 {
27- static char *const subopts[] = {
28- NULL
29- };
30- int opt = getsubopt(subs, subopts, value);
31+ char *p = *subs;
32+ *value = *subs;
33
34- if (opt < 0 || *value)
35- return false;
36- fprintf(stderr, "Missing suboption value\n");
37- return true;
38+ while (*p && *p != ',')
39+ p++;
40+
41+ if (*p)
42+ *p++ = '\0';
43+
44+ *subs = p;
45+ return false;
46 }
47
48 void common_cmd(const std::string &media_bus_info, int ch, char *optarg)