diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c index 95190c9053..6421cacf77 100644 --- a/servers/slapd/schema_init.c +++ b/servers/slapd/schema_init.c @@ -2729,12 +2729,11 @@ int generalizedTimeFilter( bvtmp.bv_len = sizeof(tmp); bvtmp.bv_val = tmp; - keys = slap_sl_malloc( sizeof( struct berval ) * 2, ctx ); - /* GeneralizedTime YYYYmmddHH[MM[SS]][(./,)d...](Z|(+/-)HH[MM]) */ /* Use 40 bits of time for key */ if ( value->bv_val && value->bv_len >= 10 && lutil_parsetime( value->bv_val, &tm ) == 0 ) { + lutil_tm2time( &tm, &tt ); tmp[0] = tt.tt_gsec & 0xff; tmp[4] = tt.tt_sec & 0xff; @@ -2745,15 +2744,14 @@ int generalizedTimeFilter( tt.tt_sec >>= 8; tmp[1] = tt.tt_sec & 0xff; + keys = slap_sl_malloc( sizeof( struct berval ) * 2, ctx ); ber_dupbv_x(keys, &bvtmp, ctx ); + keys[1].bv_val = NULL; + keys[1].bv_len = 0; } else { - keys[0].bv_val = NULL; - keys[0].bv_len = 0; + keys = NULL; } - keys[1].bv_val = NULL; - keys[1].bv_len = 0; - *keysp = keys; return LDAP_SUCCESS;