svn commit: r205796 - head/lib/libc/posix1e

Edward Tomasz Napierala trasz at FreeBSD.org
Sun Mar 28 17:29:16 UTC 2010


Author: trasz
Date: Sun Mar 28 17:29:15 2010
New Revision: 205796
URL: http://svn.freebsd.org/changeset/base/205796

Log:
  Make acl_to_text_np(3) not crash on long group or user names in NFSv4 ACLs.
  
  PR:		amd64/145091
  MFC after:	2 weeks

Modified:
  head/lib/libc/posix1e/acl_to_text_nfs4.c

Modified: head/lib/libc/posix1e/acl_to_text_nfs4.c
==============================================================================
--- head/lib/libc/posix1e/acl_to_text_nfs4.c	Sun Mar 28 17:17:32 2010	(r205795)
+++ head/lib/libc/posix1e/acl_to_text_nfs4.c	Sun Mar 28 17:29:15 2010	(r205796)
@@ -167,7 +167,7 @@ format_additional_id(char *str, size_t s
 static int
 format_entry(char *str, size_t size, const acl_entry_t entry, int flags)
 {
-	size_t off = 0, padding_length, maximum_who_field_length = 18;
+	size_t off = 0, min_who_field_length = 18;
 	acl_permset_t permset;
 	acl_flagset_t flagset;
 	int error, len;
@@ -188,12 +188,9 @@ format_entry(char *str, size_t size, con
 	if (error)
 		return (error);
 	len = strlen(buf);
-	padding_length = maximum_who_field_length - len;
-	if (padding_length > 0) {
-		memset(str, ' ', padding_length);
-		off += padding_length;
-	}
-	off += snprintf(str + off, size - off, "%s:", buf);
+	if (len < min_who_field_length)
+		len = min_who_field_length;
+	off += snprintf(str + off, size - off, "%*s:", len, buf);
 
 	error = _nfs4_format_access_mask(buf, sizeof(buf), *permset,
 	    flags & ACL_TEXT_VERBOSE);


More information about the svn-src-head mailing list