diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2018-07-18 23:50:41 -0500 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2018-07-18 23:50:41 -0500 |
commit | 5ca899dea9665001cbe401fbdc0c63364e434019 (patch) | |
tree | ce35eacf72219c139dd5ba0adf8622196766b9d0 /user/v4l-utils/getsubopt.patch | |
parent | 26310cd455ee446af79dae44cd1a845df6d3794d (diff) | |
download | packages-5ca899dea9665001cbe401fbdc0c63364e434019.tar.gz packages-5ca899dea9665001cbe401fbdc0c63364e434019.tar.bz2 packages-5ca899dea9665001cbe401fbdc0c63364e434019.tar.xz packages-5ca899dea9665001cbe401fbdc0c63364e434019.zip |
user/v4l-utils: pull in, bump to 1.14.2, fix
Diffstat (limited to 'user/v4l-utils/getsubopt.patch')
-rw-r--r-- | user/v4l-utils/getsubopt.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/user/v4l-utils/getsubopt.patch b/user/v4l-utils/getsubopt.patch new file mode 100644 index 000000000..c476e5ed7 --- /dev/null +++ b/user/v4l-utils/getsubopt.patch @@ -0,0 +1,36 @@ +POSIX says that behavior when subopts list is empty is undefined. +musl libs will set value to NULL which leads to crash. + +Simply avoid getsubopt, since we cannot rely on it. + +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) |