Fix leak in libc NFSv4 flags parsing

Free memory allocated by strdup() in parse_flags_verbose().

Submitted by:	Andrew Walker <walker.aj325_gmail.com>
Reported by:	valgrind
Reviewed by:	allanjude, freqlabs, rpokala
MFC after:	3 days
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D29871
This commit is contained in:
Andrew Walker 2021-04-20 15:34:44 -04:00 committed by Ryan Moeller
parent b8be809495
commit dd559118ab

View File

@ -142,9 +142,10 @@ parse_flags_verbose(const char *strp, uint32_t *var,
int *try_compact) int *try_compact)
{ {
int i, found, ever_found = 0; int i, found, ever_found = 0;
char *str, *flag; char *str, *flag, *to_free;
str = strdup(strp); str = strdup(strp);
to_free = str;
*try_compact = 0; *try_compact = 0;
*var = 0; *var = 0;
@ -166,12 +167,12 @@ parse_flags_verbose(const char *strp, uint32_t *var,
"invalid flag \"%s\"", flags_name, flag); "invalid flag \"%s\"", flags_name, flag);
else else
*try_compact = 1; *try_compact = 1;
free(str); free(to_free);
return (-1); return (-1);
} }
} }
free(str); free(to_free);
return (0); return (0);
} }