From 9d6c0aa00aef899dc2639f6d00e8be697614e65e Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Fri, 10 Sep 1999 01:55:46 +0000 Subject: [PATCH] Allow replace with no values dn: cn=foo changetype: modify replace: bar - --- clients/tools/ldapmodify.c | 1 + servers/slapd/modify.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) 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; -- 2.39.5