summaryrefslogtreecommitdiffstats
path: root/lib/libc/posix1e/acl_to_text_nfs4.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/posix1e/acl_to_text_nfs4.c')
-rw-r--r--lib/libc/posix1e/acl_to_text_nfs4.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/lib/libc/posix1e/acl_to_text_nfs4.c b/lib/libc/posix1e/acl_to_text_nfs4.c
index 3adbfb4..f9945ab 100644
--- a/lib/libc/posix1e/acl_to_text_nfs4.c
+++ b/lib/libc/posix1e/acl_to_text_nfs4.c
@@ -50,7 +50,7 @@ format_who(char *str, size_t size, const acl_entry_t entry, int numeric)
acl_tag_t tag;
struct passwd *pwd;
struct group *grp;
- id_t *id;
+ uid_t *id;
error = acl_get_tag_type(entry, &tag);
if (error)
@@ -62,7 +62,7 @@ format_who(char *str, size_t size, const acl_entry_t entry, int numeric)
break;
case ACL_USER:
- id = (id_t *)acl_get_qualifier(entry);
+ id = (uid_t *)acl_get_qualifier(entry);
if (id == NULL)
return (-1);
/* XXX: Thread-unsafe. */
@@ -81,7 +81,7 @@ format_who(char *str, size_t size, const acl_entry_t entry, int numeric)
break;
case ACL_GROUP:
- id = (id_t *)acl_get_qualifier(entry);
+ id = (uid_t *)acl_get_qualifier(entry);
if (id == NULL)
return (-1);
/* XXX: Thread-unsafe. */
@@ -141,7 +141,7 @@ format_additional_id(char *str, size_t size, const acl_entry_t entry)
{
int error;
acl_tag_t tag;
- id_t *id;
+ uid_t *id;
error = acl_get_tag_type(entry, &tag);
if (error)
@@ -155,7 +155,7 @@ format_additional_id(char *str, size_t size, const acl_entry_t entry)
break;
default:
- id = (id_t *)acl_get_qualifier(entry);
+ id = (uid_t *)acl_get_qualifier(entry);
if (id == NULL)
return (-1);
snprintf(str, size, ":%d", (unsigned int)*id);
@@ -167,7 +167,7 @@ format_additional_id(char *str, size_t size, const acl_entry_t entry)
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, const acl_entry_t entry, int flags)
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);
@@ -249,6 +246,7 @@ _nfs4_acl_to_text_np(const acl_t aclp, ssize_t *len_p, int flags)
error = format_entry(str + off, size - off, entry, flags);
if (error) {
+ free(str);
errno = EINVAL;
return (NULL);
}
OpenPOWER on IntegriCloud