Hi, all,
I'm trying to understand the internal workflow of the attribute type
checking and syntax validation in OpenLDAP. For example, if I use an
attribute whose syntax is not implemented like "presentationAddress", the
log message "no validator for syntax" will occur.
I trace this message in the source code and find this's done by checking
"pretty" and "validate", as follows:
-------------------------------------servers/slapd/modify.c--------------------------------
slap_syntax_validate_func *validate
= ad->ad_type->sat_syntax->ssyn_validate;
slap_syntax_transform_func *pretty = ad->ad_type->sat_syntax->ssyn_pretty;
if( !pretty && !validate ) {
*text = "no validator for syntax";
snprintf( textbuf, textlen,
"%s: no validator for syntax %s",
ml->sml_type.bv_val,
ad->ad_type->sat_syntax->ssyn_oid );
*text = textbuf;
return LDAP_INVALID_SYNTAX;
}
-----------------------------------------------------------------------------------------------------
Moreover, the pretty function and validate function are treat differently
in the latter code like:
if ( pretty ) {
rc = ordered_value_pretty( ad, &ml->sml_values[nvals], &pval, ctx );
// wrapper for pretty function
} else {
rc = ordered_value_validate( ad, &ml->sml_values[nvals], ml->sml_op );
// wrapper for validate function
}
I'm very confused on the "pretty" function and the "validate"
function. I
tried to google but no related results.
Could anyone tell me WHAT is the pretty function and what is the validate
function? And HOW can OpenLDAP knows which function is pretty and which is
validate?
Sorry for the newbie question. Thanks a lot!!!
Best,
Tianyin
--
Tianyin XU,
http://cseweb.ucsd.edu/~tixu/