diff options
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.patch | 48 |
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 @@ | |||
1 | From 4a10eab0e31d69948161241b1801c41201a5d081 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 30 Nov 2019 18:50:34 -0800 | ||
4 | Subject: [PATCH] Do not use getsubopt | ||
5 | |||
6 | POSIX says that behavior when subopts list is empty is undefined. | ||
7 | musl libs will set value to NULL which leads to crash. | ||
8 | |||
9 | Simply avoid getsubopt, since we cannot rely on it. | ||
10 | |||
11 | Imported from Alpine Linux | ||
12 | |||
13 | Upstream-Status: Pending | ||
14 | Signed-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 | |||
19 | diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp | ||
20 | index 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) | ||