|
Message-Id: <20211103124757.15214-1-marian.buschsieweke@ovgu.de> Date: Wed, 3 Nov 2021 13:47:57 +0100 From: Marian Buschsieweke <marian.buschsieweke@...u.de> To: musl@...ts.openwall.com Cc: Marian Buschsieweke <marian.buschsieweke@...u.de> Subject: [PATCH] fix error handling in getsubopt() The man page of getsubopt says > int getsubopt(char **restrict optionp, char *const *restrict tokens, > char **restrict valuep); > > [...] > RETURN VALUE > If the first suboption in optionp is recognized, getsubopt() > returns the index of the matching suboption element in tokens. > Otherwise, -1 is returned and *valuep is the entire name[=value] > string. This means, *val should be set to the value *opt had upon the call of getsubopt on failure, but this is not the case. This fixes the behavior. This fixes a segmentation fault in the option parsing in v4l2-ctl for the -c parameter. (E.g. v4l2-ctl -c foo=bar will segfault without this.) --- src/misc/getsubopt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/misc/getsubopt.c b/src/misc/getsubopt.c index 53ee9573..37cca186 100644 --- a/src/misc/getsubopt.c +++ b/src/misc/getsubopt.c @@ -19,5 +19,6 @@ int getsubopt(char **opt, char *const *keys, char **val) else if (s[l]) continue; return i; } + *val = s; return -1; } -- 2.33.1
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.