Date: Fri, 25 Dec 2009 18:05:06 +0000 (UTC) From: Markus Brueffer <markus@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r200992 - head/lib/libc/posix1e Message-ID: <200912251805.nBPI56DZ067940@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markus Date: Fri Dec 25 18:05:06 2009 New Revision: 200992 URL: http://svn.freebsd.org/changeset/base/200992 Log: Use a local copy of entry_d for finding matches. Otherwise, if entry_d pointed to an entry of 'acl', all ACL entries starting with entry_d would be deleted. Reviewed by: trasz Approved by: emax (mentor) MFC after: 3 days Modified: head/lib/libc/posix1e/acl_delete_entry.c Modified: head/lib/libc/posix1e/acl_delete_entry.c ============================================================================== --- head/lib/libc/posix1e/acl_delete_entry.c Fri Dec 25 17:34:43 2009 (r200991) +++ head/lib/libc/posix1e/acl_delete_entry.c Fri Dec 25 18:05:06 2009 (r200992) @@ -75,6 +75,7 @@ int acl_delete_entry(acl_t acl, acl_entry_t entry_d) { struct acl *acl_int; + struct acl_entry entry_int; int i, j, found = 0; if (acl == NULL || entry_d == NULL) { @@ -94,8 +95,12 @@ acl_delete_entry(acl_t acl, acl_entry_t errno = EINVAL; return (-1); } + + /* Use a local copy to prevent deletion of more than this entry */ + entry_int = *entry_d; + for (i = 0; i < acl->ats_acl.acl_cnt;) { - if (_entry_matches(&(acl->ats_acl.acl_entry[i]), entry_d)) { + if (_entry_matches(&(acl->ats_acl.acl_entry[i]), &entry_int)) { /* ...shift the remaining entries... */ for (j = i; j < acl->ats_acl.acl_cnt - 1; ++j) acl->ats_acl.acl_entry[j] =
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912251805.nBPI56DZ067940>