HP-UX Directory Server 8.1 plug-in reference

Table Of Contents
As part of the process of determining if the user has access rights, the “slapi_acl_check_mods()”
function does the following:
Checks if access control for the directory is disabled (for example, if the dse.ldif file
contains the directive access control off).
If access control is disabled, the function returns LDAP_SUCCESS.
For each value in each attribute specified in the LDAPMod array, the function determines if
the user has permissions to write to that value. Essentially, the function calls
“slapi_acl_check_mods()” with SLAPI_ACL_WRITE as the access right to check.
If for some reason the function cannot determine which operation is being requested,
the function returns LDAP_OPERATIONS_ERROR.
If no connection to a client exists (in other words, if the request for the operation was
made by the server orits back end), the function returns LDAP_SUCCESS. (The server
and its back end are not restricted by access control lists.)
If the back end database is read-only and the request is checking for write access
(SLAPI_ACL_WRITE), the function returns LDAP_UNWILLING_TO_PERFORM.
Syntax
#include "slapi-plugin.h"
int slapi_acl_check_mods( Slapi_PBlock *pb, Slapi_Entry *e, LDAPMod
**mods, char **errbuf );
Parameters This function takes the following parameters:
Parameter block passed into this function.
pb
Entry for which you want to check the access rights.
e
Array of LDAPMod structures that represent the modifications to be made to
the entry.
mods
Pointer to a string containing an error message if an error occurs during the
processing of this function.
errbuf
Returns This function returns one of the following values:
LDAP_SUCCESS if the user has write permission to the values in the specified attributes.
LDAP_INSUFFICIENT_ACCESS if the user does not have write permission to the values of
the specified attribute.
If a problem occurs during processing, the function will return one of the following error
codes:
An error occurred while executing the operation.
LDAP_OPERATIONS_ERROR
Invalid syntax was specified. This error can occur if the ACL associated with
an entry, attribute, or value uses the wrong syntax.
LDAP_INVALID_SYNTAX
The Directory Server is unable to perform the specified operation. This error
can occur if, for example, you are requesting write access to a read-only
database.
LDAP_UNWILLING_TO_PERFORM
Memory concerns You must free the errbuf buffer by calling “slapi_ch_free()” when you are
finished using the error message.
See also
“slapi_access_allowed()”
“slapi_ch_free()”
16.2 slapi_acl_check_mods() 157