]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/dds.c
check for ee == NULL
[openldap] / servers / slapd / overlays / dds.c
index 008ec22b10ad162cdc1ae7dc369def8c6db036ee..ebf70ec878b8fde65af3d5032a01f13a42fbc799 100644 (file)
@@ -788,6 +788,7 @@ done:;
                        tmpmod->sml_op = LDAP_MOD_REPLACE;
                        value_add_one( &tmpmod->sml_values, &bv );
                        value_add_one( &tmpmod->sml_nvalues, &bv );
+                       tmpmod->sml_numvals = 1;
                }
        }
 
@@ -948,7 +949,7 @@ slap_parse_refresh(
 
        tag = ber_peek_tag( ber, &len );
 
-       if ( len != 0 ) {
+       if ( tag != LBER_DEFAULT || len != 0 ) {
 decoding_error:;
                Log1( LDAP_DEBUG_TRACE, LDAP_LEVEL_ERR,
                        "slap_parse_refresh: decoding error, len=%ld\n",
@@ -1087,6 +1088,7 @@ dds_op_extended( Operation *op, SlapReply *rs )
                ttlmod.sml_flags = SLAP_MOD_MANAGING;
                ttlmod.sml_desc = slap_schema.si_ad_entryTtl;
                ttlmod.sml_values = ttlvalues;
+               ttlmod.sml_numvals = 1;
                ttlvalues[ 0 ].bv_val = ttlbuf;
                ttlvalues[ 0 ].bv_len = snprintf( ttlbuf, sizeof( ttlbuf ), "%ld", ttl );
                BER_BVZERO( &ttlvalues[ 1 ] );
@@ -1363,20 +1365,20 @@ dds_cfgen( ConfigArgs *c )
 
        case DDS_MAXTTL:
                if ( lutil_parse_time( c->argv[ 1 ], &t ) != 0 ) {
-                       snprintf( c->msg, sizeof( c->msg),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg),
                                "DDS unable to parse dds-max-ttl \"%s\"",
                                c->argv[ 1 ] );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
                if ( t < DDS_RF2589_DEFAULT_TTL || t > DDS_RF2589_MAX_TTL ) {
-                       snprintf( c->msg, sizeof( c->msg ),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg ),
                                "DDS invalid dds-max-ttl=%ld; must be between %d and %d",
                                t, DDS_RF2589_DEFAULT_TTL, DDS_RF2589_MAX_TTL );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
@@ -1385,20 +1387,20 @@ dds_cfgen( ConfigArgs *c )
 
        case DDS_MINTTL:
                if ( lutil_parse_time( c->argv[ 1 ], &t ) != 0 ) {
-                       snprintf( c->msg, sizeof( c->msg),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg),
                                "DDS unable to parse dds-min-ttl \"%s\"",
                                c->argv[ 1 ] );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
                if ( t < 0 || t > DDS_RF2589_MAX_TTL ) {
-                       snprintf( c->msg, sizeof( c->msg ),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg ),
                                "DDS invalid dds-min-ttl=%ld",
                                t );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
@@ -1412,20 +1414,20 @@ dds_cfgen( ConfigArgs *c )
 
        case DDS_DEFAULTTTL:
                if ( lutil_parse_time( c->argv[ 1 ], &t ) != 0 ) {
-                       snprintf( c->msg, sizeof( c->msg),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg),
                                "DDS unable to parse dds-default-ttl \"%s\"",
                                c->argv[ 1 ] );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
                if ( t < 0 || t > DDS_RF2589_MAX_TTL ) {
-                       snprintf( c->msg, sizeof( c->msg ),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg ),
                                "DDS invalid dds-default-ttl=%ld",
                                t );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
@@ -1439,20 +1441,20 @@ dds_cfgen( ConfigArgs *c )
 
        case DDS_INTERVAL:
                if ( lutil_parse_time( c->argv[ 1 ], &t ) != 0 ) {
-                       snprintf( c->msg, sizeof( c->msg),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg),
                                "DDS unable to parse dds-interval \"%s\"",
                                c->argv[ 1 ] );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
                if ( t <= 0 ) {
-                       snprintf( c->msg, sizeof( c->msg ),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg ),
                                "DDS invalid dds-interval=%ld",
                                t );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
@@ -1476,20 +1478,20 @@ dds_cfgen( ConfigArgs *c )
 
        case DDS_TOLERANCE:
                if ( lutil_parse_time( c->argv[ 1 ], &t ) != 0 ) {
-                       snprintf( c->msg, sizeof( c->msg),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg),
                                "DDS unable to parse dds-tolerance \"%s\"",
                                c->argv[ 1 ] );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
                if ( t < 0 || t > DDS_RF2589_MAX_TTL ) {
-                       snprintf( c->msg, sizeof( c->msg ),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg ),
                                "DDS invalid dds-tolerance=%ld",
                                t );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
 
@@ -1498,10 +1500,10 @@ dds_cfgen( ConfigArgs *c )
 
        case DDS_MAXDYNAMICOBJS:
                if ( c->value_int < 0 ) {
-                       snprintf( c->msg, sizeof( c->msg ),
+                       snprintf( c->cr_msg, sizeof( c->cr_msg ),
                                "DDS invalid dds-max-dynamicObjects=%d", c->value_int );
                        Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
-                               "%s: %s.\n", c->log, c->msg );
+                               "%s: %s.\n", c->log, c->cr_msg );
                        return 1;
                }
                di->di_max_dynamicObjects = c->value_int;
@@ -1517,7 +1519,8 @@ dds_cfgen( ConfigArgs *c )
 
 static int
 dds_db_init(
-       BackendDB       *be )
+       BackendDB       *be,
+       ConfigReply     *cr)
 {
        slap_overinst   *on = (slap_overinst *)be->bd_info;
        dds_info_t      *di;
@@ -1666,7 +1669,8 @@ done_search:;
 
 static int
 dds_db_open(
-       BackendDB       *be )
+       BackendDB       *be,
+       ConfigReply     *cr )
 {
        slap_overinst   *on = (slap_overinst *)be->bd_info;
        dds_info_t      *di = on->on_bi.bi_private;
@@ -1731,7 +1735,8 @@ done:;
 
 static int
 dds_db_close(
-       BackendDB       *be )
+       BackendDB       *be,
+       ConfigReply     *cr )
 {
        slap_overinst   *on = (slap_overinst *)be->bd_info;
        dds_info_t      *di = on->on_bi.bi_private;
@@ -1753,7 +1758,8 @@ dds_db_close(
 
 static int
 dds_db_destroy(
-       BackendDB       *be )
+       BackendDB       *be,
+       ConfigReply     *cr )
 {
        slap_overinst   *on = (slap_overinst *)be->bd_info;
        dds_info_t      *di = on->on_bi.bi_private;
@@ -1838,6 +1844,7 @@ dds_initialize()
        if ( !do_not_load_schema ) {
                static struct {
                        char                    *desc;
+                       slap_mask_t             flags;
                        AttributeDescription    **ad;
                }               s_at[] = {
                        { "( 1.3.6.1.4.1.4203.666.1.57 "
@@ -1850,6 +1857,7 @@ dds_initialize()
                                "SINGLE-VALUE "
                                "NO-USER-MODIFICATION "
                                "USAGE dSAOperation )",
+                               SLAP_AT_HIDE,
                                &ad_entryExpireTimestamp },
                        { NULL }
                };
@@ -1861,6 +1869,7 @@ dds_initialize()
                                        "dds_initialize: register_at failed\n", 0, 0, 0 );
                                return code;
                        }
+                       (*s_at[ i ].ad)->ad_type->sat_flags |= SLAP_AT_HIDE;
                }
        }