]> git.sur5r.net Git - openldap/commitdiff
find as early as possible that attribute delete cannot be performed; also fixes ITS...
authorPierangelo Masarati <ando@openldap.org>
Thu, 2 Dec 2004 12:17:33 +0000 (12:17 +0000)
committerPierangelo Masarati <ando@openldap.org>
Thu, 2 Dec 2004 12:17:33 +0000 (12:17 +0000)
CHANGES
servers/slapd/back-sql/add.c

diff --git a/CHANGES b/CHANGES
index 2b42da81b2324694c87bbe4a1b04e1c11c1eb240..10ff50d445acdd3ec92ad13045b69d4787ca678c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,7 +1,7 @@
 OpenLDAP 2.2 Change Log
 
 OpenLDAP 2.2.20 Engineering
-       <insert notes here>
+       Fixed back-sql segfault when logging and delete_rule is NULL (ITS#3407)
 
 OpenLDAP 2.2.19 Release
        Fixed slapd check for mandatory filter in authz-regexp URI (ITS#3396)
index 96bd88c191ff8ddb925ca579f741aebb4ad96e8f..76ff17cfce82a258f36997956ff48cbf98c9058f 100644 (file)
@@ -58,13 +58,29 @@ backsql_modify_delete_all_values(
        SQLHSTMT        asth;
        BACKSQL_ROW_NTS row;
 
+       assert( at );
+       if ( at->bam_delete_proc == NULL ) {
+               Debug( LDAP_DEBUG_TRACE,
+                       "   backsql_modify_delete_all_values(): "
+                       "missing attribute value delete procedure "
+                       "for attr \"%s\"\n",
+                       at->bam_ad->ad_cname.bv_val, 0, 0 );
+               if ( BACKSQL_FAIL_IF_NO_MAPPING( bi ) ) {
+                       rs->sr_text = "SQL-backend error";
+                       return rs->sr_err = LDAP_OTHER;
+               }
+
+               return LDAP_SUCCESS;
+       }
+
        rc = backsql_Prepare( dbh, &asth, at->bam_query, 0 );
        if ( rc != SQL_SUCCESS ) {
                Debug( LDAP_DEBUG_TRACE,
                        "   backsql_modify_delete_all_values(): "
-                       "error preparing query\n", 0, 0, 0 );
-               backsql_PrintErrors( bi->db_env, dbh, 
-                               asth, rc );
+                       "error preparing attribute value select query "
+                       "\"%s\"\n",
+                       at->bam_query, 0, 0 );
+               backsql_PrintErrors( bi->db_env, dbh, asth, rc );
 
                if ( BACKSQL_FAIL_IF_NO_MAPPING( bi ) ) {
                        rs->sr_text = "SQL-backend error";