aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Walker <walker.aj325_gmail.com>2021-04-20 19:34:44 +0000
committerRyan Moeller <freqlabs@FreeBSD.org>2021-04-23 10:43:51 +0000
commit550fcd830db7e8d644795e5fc9bd83ef4604a1c1 (patch)
tree681f858c103eec2a602379241fb7e3a04b380bb6
parentf974af4e59ee533906437b22a5b8b41219bde005 (diff)
downloadsrc-550fcd830db7e8d644795e5fc9bd83ef4604a1c1.tar.gz
src-550fcd830db7e8d644795e5fc9bd83ef4604a1c1.zip
Fix leak in libc NFSv4 ACL 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 Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D29871 (cherry picked from commit dd559118ab3f065ae230b324c3fe4bb1c9b7ca56)
-rw-r--r--lib/libc/posix1e/acl_support_nfs4.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libc/posix1e/acl_support_nfs4.c b/lib/libc/posix1e/acl_support_nfs4.c
index 7dd7f04daaf3..ffed4446c1b2 100644
--- a/lib/libc/posix1e/acl_support_nfs4.c
+++ b/lib/libc/posix1e/acl_support_nfs4.c
@@ -141,9 +141,10 @@ parse_flags_verbose(const char *strp, uint32_t *var,
int *try_compact)
{
int i, found, ever_found = 0;
- char *str, *flag;
+ char *str, *flag, *to_free;
str = strdup(strp);
+ to_free = str;
*try_compact = 0;
*var = 0;
@@ -165,12 +166,12 @@ parse_flags_verbose(const char *strp, uint32_t *var,
"invalid flag \"%s\"", flags_name, flag);
else
*try_compact = 1;
- free(str);
+ free(to_free);
return (-1);
}
}
- free(str);
+ free(to_free);
return (0);
}