git: 8845eea6e288 - stable/13 - Fix leak in libc NFSv4 ACL flags parsing

Ryan Moeller freqlabs at FreeBSD.org
Fri Apr 23 10:41:59 UTC 2021


The branch stable/13 has been updated by freqlabs:

URL: https://cgit.FreeBSD.org/src/commit/?id=8845eea6e288e96e7114f41fb3d8e25aae810a2d

commit 8845eea6e288e96e7114f41fb3d8e25aae810a2d
Author:     Andrew Walker <walker.aj325_gmail.com>
AuthorDate: 2021-04-20 19:34:44 +0000
Commit:     Ryan Moeller <freqlabs at FreeBSD.org>
CommitDate: 2021-04-23 10:41:23 +0000

    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)
---
 lib/libc/posix1e/acl_support_nfs4.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/libc/posix1e/acl_support_nfs4.c b/lib/libc/posix1e/acl_support_nfs4.c
index 3962eaa6daa8..92ec666b2313 100644
--- a/lib/libc/posix1e/acl_support_nfs4.c
+++ b/lib/libc/posix1e/acl_support_nfs4.c
@@ -142,9 +142,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;
 
@@ -166,12 +167,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);
 }
 


More information about the dev-commits-src-all mailing list