packages/libs/libv4l/patches/030-getsubopt.patch
Rosen Penev b266b21306
v4l-utils: Update to 1.16.5
Add Alpine Linux patch that fixes a crash under Musl.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2019-03-30 01:18:43 -07:00

36 lines
900 B
Diff

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)