diff options
author | Rich Megginson <rmeggins@redhat.com> | 2009-07-06 12:11:01 -0600 |
---|---|---|
committer | Rich Megginson <rmeggins@redhat.com> | 2009-07-07 08:32:42 -0600 |
commit | 209521323f731daad54682fd98715f7b22c88c78 (patch) | |
tree | 74a1fa8df06641fe543c8518e4db4357ab610828 /ldap/servers/slapd/modify.c | |
parent | 3116dbec570b65d2d0a1df5bd000f6e63439e8ee (diff) | |
download | ds-cleanup.tar.gz ds-cleanup.tar.xz ds-cleanup.zip |
OpenLDAP supportcleanup
These changes allow the server to be built with OpenLDAP (2.4.17+). A brief summary of the changes:
* #defines not provided by OpenLDAP were copied into slapi-plugin.h and protected with #ifndef blocks
* where it made sense, I created slapi wrapper functions for things like URL and LDIF processing to abstract way the differences in the APIs
* I created a new file utf8.c which contains the UTF8 functions from MozLDAP - this is only compiled when using OpenLDAP
* I tried to clean up the code - use the _ext versions of LDAP functions everywhere since the older versions should be considered deprecated
* I removed some unused code
NOTE that this should still be considered a work in progress since it depends on functionality not yet present in a released version of OpenLDAP, for NSS crypto and for the LDIF public API.
Diffstat (limited to 'ldap/servers/slapd/modify.c')
-rw-r--r-- | ldap/servers/slapd/modify.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ldap/servers/slapd/modify.c b/ldap/servers/slapd/modify.c index d90d2b49..1eac8489 100644 --- a/ldap/servers/slapd/modify.c +++ b/ldap/servers/slapd/modify.c @@ -179,6 +179,7 @@ do_modify( Slapi_PBlock *pb ) /* collect modifications & save for later */ slapi_mods_init(&smods, 0); + len = -1; for ( tag = ber_first_element( ber, &len, &last ); tag != LBER_ERROR && tag != LBER_END_OF_SEQORSET; tag = ber_next_element( ber, &len, last ) ) @@ -186,6 +187,7 @@ do_modify( Slapi_PBlock *pb ) ber_int_t mod_op; mod = (LDAPMod *) slapi_ch_malloc( sizeof(LDAPMod) ); mod->mod_bvalues = NULL; + len = -1; /* reset - len is not used */ if ( ber_scanf( ber, "{i{a[V]}}", &mod_op, &type, &mod->mod_bvalues ) == LBER_ERROR ) @@ -264,7 +266,7 @@ do_modify( Slapi_PBlock *pb ) } /* check for decoding error */ - if ( tag == LBER_ERROR ) + if ( (tag != LBER_END_OF_SEQORSET) && (len != -1) ) { op_shared_log_error_access (pb, "MOD", dn, "decoding error"); send_ldap_result( pb, LDAP_PROTOCOL_ERROR, NULL, "decoding error", 0, NULL ); |