Robbie Harwood wrote: > From: Colin Watson <[email protected]> > > [[email protected]: tweaked commit message] > Signed-off-by: Robbie Harwood <[email protected]> > --- > lib/argp-parse.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/argp-parse.c b/lib/argp-parse.c > index 053495ec0..4f1c65d73 100644 > --- a/lib/argp-parse.c > +++ b/lib/argp-parse.c > @@ -940,7 +940,7 @@ weak_alias (__argp_parse, argp_parse) > void * > __argp_input (const struct argp *argp, const struct argp_state *state) > { > - if (state) > + if (state && state->pstate) > { > struct group *group; > struct parser *parser = state->pstate;
I don't think this patch is needed, because: 1) The application cannot construct a 'struct argp_state' by itself, since [1] says that the 'struct argp_state' contains a member 'pstate' that is "Private, for use by the argp implementation.". 2) The only place in the gnulib / glibc code where a 'struct argp_state' is being constructed, is in function parser_init, invoked from 'argp_parse', and there a non-NULL value is assigned. In other words, there is no way, compliant with the documented API, that a NULL pointer can arise as state->pstate. Bruno [1] https://www.gnu.org/software/libc/manual/html_node/Argp-Parsing-State.html
