Haszlakiewicz, Eric
2010-03-08 22:55:49 UTC
I am using ldap_search_ext_s with an attrs parameter that looks
something like this:
const char* attrs[] = { "cn", "statusCode", NULL };
Previously, I did not have the const qualifier on there, but I increased
the warning level of my compiler, and it was (correctly) complaining
that I was treating string constants as non-constant.
Unfortunately, the ldap_search_ext_s function is declared *without* the
const qualifier:
LDAP_F( int )
ldap_search_ext_s LDAP_P((
LDAP *ld,
LDAP_CONST char *base,
int scope,
LDAP_CONST char *filter,
char **attrs, <------ here
int attrsonly,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
struct timeval *timeout,
int sizelimit,
LDAPMessage **res ));
Does this mean that I really do need to pass in mutable buffers, or is
the API incorrect? If it needs to be mutable, under what conditions
will those be changed, and do I need to re-initialize the values after
every call?
I notice that other ldap libraries (e.g. IBM's Tivoli Directory Server)
*do* use const for that parameter.
eric
something like this:
const char* attrs[] = { "cn", "statusCode", NULL };
Previously, I did not have the const qualifier on there, but I increased
the warning level of my compiler, and it was (correctly) complaining
that I was treating string constants as non-constant.
Unfortunately, the ldap_search_ext_s function is declared *without* the
const qualifier:
LDAP_F( int )
ldap_search_ext_s LDAP_P((
LDAP *ld,
LDAP_CONST char *base,
int scope,
LDAP_CONST char *filter,
char **attrs, <------ here
int attrsonly,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
struct timeval *timeout,
int sizelimit,
LDAPMessage **res ));
Does this mean that I really do need to pass in mutable buffers, or is
the API incorrect? If it needs to be mutable, under what conditions
will those be changed, and do I need to re-initialize the values after
every call?
I notice that other ldap libraries (e.g. IBM's Tivoli Directory Server)
*do* use const for that parameter.
eric