blob: fb844acbe46fa68528ae5302c4976141cd759a19 [file] [log] [blame]
Patrick Williams8dd68482022-10-04 07:57:18 -05001From 6e7e52de7afe29597016952a7317faf9c3ea3268 Mon Sep 17 00:00:00 2001
Brad Bishope42b3e32020-01-15 22:08:42 -05002From: 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
Patrick Williams8dd68482022-10-04 07:57:18 -050014
Brad Bishope42b3e32020-01-15 22:08:42 -050015Signed-off-by: Khem Raj <raj.khem@gmail.com>
Andrew Geissler9aee5002022-03-30 16:27:02 +000016
Patrick Williams8dd68482022-10-04 07:57:18 -050017Adapt patch to 1.23.0.
18
19(v4l-utils rev fd544473800d02e90bc289434cc44e5aa8fadd0f).
20
21%% original patch: 0007-Do-not-use-getsubopt.patch
22
23Signed-off-by: Daniel Gomez <daniel@qtec.com>
Brad Bishope42b3e32020-01-15 22:08:42 -050024---
25 utils/v4l2-ctl/v4l2-ctl-common.cpp | 18 ++++++++++--------
26 1 file changed, 10 insertions(+), 8 deletions(-)
27
28diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp
Patrick Williams8dd68482022-10-04 07:57:18 -050029index d77f7104..838c297d 100644
Brad Bishope42b3e32020-01-15 22:08:42 -050030--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
31+++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
Patrick Williams8dd68482022-10-04 07:57:18 -050032@@ -994,15 +994,17 @@ static bool parse_subset(char *optarg)
Brad Bishope42b3e32020-01-15 22:08:42 -050033
34 static bool parse_next_subopt(char **subs, char **value)
35 {
36- static char *const subopts[] = {
Andrew Geissler9aee5002022-03-30 16:27:02 +000037- nullptr
Brad Bishope42b3e32020-01-15 22:08:42 -050038- };
Patrick Williams8dd68482022-10-04 07:57:18 -050039- int opt = v4l_getsubopt(subs, subopts, value);
Brad Bishope42b3e32020-01-15 22:08:42 -050040+ char *p = *subs;
41+ *value = *subs;
42
43- if (opt < 0 || *value)
44- return false;
45- fprintf(stderr, "Missing suboption value\n");
46- return true;
47+ while (*p && *p != ',')
48+ p++;
49+
50+ if (*p)
51+ *p++ = '\0';
52+
53+ *subs = p;
54+ return false;
55 }
56
57 void common_cmd(const std::string &media_bus_info, int ch, char *optarg)
Patrick Williams8dd68482022-10-04 07:57:18 -050058--
592.35.1
60