From: Kurt Zeilenga Date: Fri, 10 Sep 1999 01:55:46 +0000 (+0000) Subject: Allow replace with no values X-Git-Tag: TWEB_OL_BASE~4 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9d6c0aa00aef899dc2639f6d00e8be697614e65e;p=openldap Allow replace with no values dn: cn=foo changetype: modify replace: bar - --- diff --git a/clients/tools/ldapmodify.c b/clients/tools/ldapmodify.c index 62746cc508..043d3bbc3d 100644 --- a/clients/tools/ldapmodify.c +++ b/clients/tools/ldapmodify.c @@ -463,6 +463,7 @@ process_ldif_rec( char *rbuf, int count ) goto end_line; } else if ( strcasecmp( type, T_MODOPREPLACESTR ) == 0 ) { modop = LDAP_MOD_REPLACE; + addmodifyop( &pmods, modop, value, NULL, 0 ); goto end_line; } else if ( strcasecmp( type, T_MODOPDELETESTR ) == 0 ) { modop = LDAP_MOD_DELETE; diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index c5556a33dc..8e3521bfac 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -124,6 +124,9 @@ do_modify( (*modtail)->ml_op != LDAP_MOD_DELETE && (*modtail)->ml_op != LDAP_MOD_REPLACE ) { + Debug( LDAP_DEBUG_ANY, + "do_modify: invalid modify operation (%ld)\n", + (long) (*modtail)->ml_op, 0, 0 ); send_ldap_result( conn, op, LDAP_PROTOCOL_ERROR, NULL, "unrecognized modify operation", NULL, NULL ); free( ndn ); @@ -131,11 +134,16 @@ do_modify( return LDAP_PROTOCOL_ERROR; } - if ( (*modtail)->ml_bvalues == NULL - && (*modtail)->ml_op != LDAP_MOD_DELETE ) + if ( (*modtail)->ml_bvalues == NULL && ( + (*modtail)->ml_op != LDAP_MOD_REPLACE && + (*modtail)->ml_op != LDAP_MOD_DELETE ) ) { + Debug( LDAP_DEBUG_ANY, + "do_modify: invalid modify operation (%ld) without values\n", + (long) (*modtail)->ml_op, 0, 0 ); send_ldap_result( conn, op, LDAP_PROTOCOL_ERROR, - NULL, "unrecognized modify operation", NULL, NULL ); + NULL, "unrecognized modify operation without values", + NULL, NULL ); free( ndn ); modlist_free( modlist ); return LDAP_PROTOCOL_ERROR;