#include "lutil.h"
#include <ldap.h>
#include "slap.h"
-
#include "component.h"
+
+#include "componentlib.h"
#include "asn.h"
#include <asn-gser.h>
#include <stdlib.h>
int
GEncComponentBits ( GenBuf *b, ComponentBits *in )
{
- if ( !in )
- return (-1);
- return GEncAsnBitsContent ( b, &in->value );
+ GAsnBits bits = {0};
+
+ bits.value = in->value;
+ if ( !in )
+ return (-1);
+ return GEncAsnBitsContent ( b, &bits);
}
return LDAP_DECODING_ERROR;
}
k->value = result.value;
+ k->comp_desc = get_component_description (BASICTYPE_BITSTRING);
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentBits;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentBits;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentBits;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_BITSTRING;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentBits;
-
- /* Real Decoding code need to be followed */
return LDAP_SUCCESS;
}
}
k->value = result;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentBits;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentBits;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentBits;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_BITSTRING;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentBits;
+ k->comp_desc = get_component_description (BASICTYPE_BITSTRING);
return LDAP_SUCCESS;
}
/*
* Component GSER BMPString Encoder
*/
- int
- GEncComponentBMPString ( GenBuf *b, ComponentBMPString *in )
- {
- if ( !in || in->value.octetLen <= 0 ) return (-1);
- return GEncBMPStringContent ( b, &in->value );
- }
+int
+GEncComponentBMPString ( GenBuf *b, ComponentBMPString *in )
+{
+ GBMPString t = {0};
+
+ if ( !in || in->value.octetLen <= 0 )
+ return (-1);
+ t.value = in->value;
+ return GEncBMPStringContent ( b, &t );
+}
/*
* Component GSER BMPString Decoder
}
k->value = result.value;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentBMPString;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentBMPString;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentBMPString;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_BMP_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentBMPString;
+ k->comp_desc = get_component_description (BASICTYPE_BMP_STR);
return LDAP_SUCCESS;
}
k->value = result;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentBMPString;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentBMPString;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentBMPString;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_BMP_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentBMPString;
+ k->comp_desc = get_component_description (BASICTYPE_BMP_STR);
return LDAP_SUCCESS;
int
GEncComponentUTF8String ( GenBuf *b, ComponentUTF8String *in )
{
- if ( !in || in->value.octetLen <= 0 )
- return (-1);
- return GEncUTF8StringContent ( b, &in->value );
+ GUTF8String t = {0};
+ if ( !in || in->value.octetLen <= 0 )
+ return (-1);
+ t.value = in->value;
+ return GEncUTF8StringContent ( b, &t );
}
/*
}
k->value = result.value;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentUTF8String;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentUTF8String;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentUTF8String;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_UTF8_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentUTF8String;
+ k->comp_desc = get_component_description (BASICTYPE_UTF8_STR);
return LDAP_SUCCESS;
}
}
k->value = result;
+ k->comp_desc = get_component_description (BASICTYPE_UTF8_STR);
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentUTF8String;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentUTF8String;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentUTF8String;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_UTF8_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentUTF8String;
+ return LDAP_SUCCESS;
}
/*
int
GEncComponentTeletexString ( GenBuf *b, ComponentTeletexString *in )
{
- if ( !in || in->value.octetLen <= 0 )
- return (-1);
- return GEncTeletexStringContent ( b, &in->value );
+ GTeletexString t = {0};
+
+ if ( !in || in->value.octetLen <= 0 )
+ return (-1);
+ t.value = in->value;
+ return GEncTeletexStringContent ( b, &t );
}
/*
}
k->value = result.value;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentTeletexString;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentTeletexString;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentTeletexString;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_VIDEOTEX_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentTeletexString;
+ k->comp_desc = get_component_description (BASICTYPE_VIDEOTEX_STR);
return LDAP_SUCCESS;
}
int
GEncComponentBool ( GenBuf *b, ComponentBool *in )
{
- if ( !in )
- return (-1);
- return GEncAsnBoolContent ( b, &in->value );
+ GAsnBool t = {0};
+
+ if ( !in )
+ return (-1);
+ t.value = in->value;
+ return GEncAsnBoolContent ( b, &t );
}
/*
}
k->value = result.value;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentBool;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentBool;
- k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_BOOLEAN;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentBool;
+ k->comp_desc = get_component_description (BASICTYPE_BOOLEAN);
return LDAP_SUCCESS;
}
}
k->value = result;
+ k->comp_desc = get_component_description (BASICTYPE_BOOLEAN);
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentBool;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentBool;
- k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_BOOLEAN;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentBool;
-
return LDAP_SUCCESS;
}
int
GEncComponentEnum ( GenBuf *b, ComponentEnum *in )
{
- if ( !in )
- return (-1);
- return GEncAsnEnumContent ( b, &in->value );
+ GAsnEnum t = {0};
+
+ if ( !in )
+ return (-1);
+ t.value = in->value;
+ return GEncAsnEnumContent ( b, &t );
}
/*
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentEnum;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentEnum;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentEnum;
k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_ENUMERATED;
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentEnum;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentEnum;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentEnum;
k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_ENUMERATED;
int
GEncComponentIA5Stirng ( GenBuf *b, ComponentIA5String* in )
{
- if ( !in || in->value.octetLen <= 0 ) return (-1);
- return GEncIA5StringContent( b, &in->value );
+ GIA5String t = {0};
+ t.value = in->value;
+ if ( !in || in->value.octetLen <= 0 ) return (-1);
+ return GEncIA5StringContent( b, &t );
}
/*
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentIA5String;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentIA5String;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentIA5String;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentIA5String;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_IA5_STR;
int
GEncComponentInt ( GenBuf *b, ComponentInt* in )
{
- if ( !in ) return (-1);
- return GEncAsnIntContent ( b, &in->value );
+ GAsnInt t = {0};
+
+ if ( !in )
+ return (-1);
+ t.value = in->value;
+ return GEncAsnIntContent ( b, &t );
}
/*
return LDAP_DECODING_ERROR;
}
k->value = result.value;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentInt;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentInt;
- k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_INTEGER;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentInt;
+ k->comp_desc = get_component_description (BASICTYPE_INTEGER );
return LDAP_SUCCESS;
}
}
k->value = result;
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentInt;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentInt;
- k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_INTEGER;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentInt;
+ k->comp_desc = get_component_description (BASICTYPE_INTEGER );
return LDAP_SUCCESS;
}
int
GEncComponentNull ( GenBuf *b, ComponentNull *in )
{
- if ( !in ) return (-1);
- return GEncAsnNullContent ( b, &in->value );
+ GAsnNull t = {0};
+
+ if ( !in )
+ return (-1);
+ t.value = in->value;
+ return GEncAsnNullContent ( b, &t );
}
/*
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentNull;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentNull;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentNull;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentNull;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_NULL;
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentNull;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentNull;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentNull;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentNull;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_NULL;
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentNumericString;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentNumericString;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentNumericString;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentNumericString;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_NUMERIC_STR;
int
GEncComponentOcts ( GenBuf* b, ComponentOcts *in )
{
- if ( !in || in->value.octetLen <= 0 )
- return (-1);
- return GEncAsnOctsContent ( b, &in->value );
+ GAsnOcts t = {0};
+ if ( !in || in->value.octetLen <= 0 )
+ return (-1);
+
+ t.value = in->value;
+ return GEncAsnOctsContent ( b, &t );
}
/*
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentOcts;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentOcts;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentOcts;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentOcts;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_OCTETSTRING;
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentOcts;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentOcts;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentOcts;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentOcts;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_OCTETSTRING;
*/
GEncComponentOid ( GenBuf *b, ComponentOid *in )
{
- if ( !in || in->value.octetLen <= 0 ) return (-1);
- return GEncAsnOidContent( b, &in->value );
+ GAsnOid t = {0};
+
+ if ( !in || in->value.octetLen <= 0 )
+ return (-1);
+ t.value = in->value;
+ return GEncAsnOidContent( b, (GAsnOcts*)&t );
}
/*
peek_head = ad_type->sat_atype.at_oid;
strLen = strlen ( peek_head );
- result->value.octs = EncodeComponentOid ( mem_op, peek_head , &strLen );
+ result->value.octs = (char*)EncodeComponentOid ( mem_op, peek_head , &strLen );
result->value.octetLen = strLen;
return LDAP_SUCCESS;
}
}
}
k->value = result.value;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentOid;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentOid;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentOid;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_OID;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentOid;
+ k->comp_desc = get_component_description (BASICTYPE_OID);
return LDAP_SUCCESS;
}
}
k->value = result;
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentOid;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentOid;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentOid;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_OID;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentOid;
+ k->comp_desc = get_component_description (BASICTYPE_OID);
+
return LDAP_SUCCESS;
}
}
k->value = result;
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
+ k->comp_desc = get_component_description (BASICTYPE_PRINTABLE_STR);
+
+ return LDAP_SUCCESS;
+}
+
+/*
+ * Component BER Decoder : TeletexString
+ */
+
+int
+BDecComponentTeletexStringTag ( void* mem_op, GenBuf *b, void *v, AsnLen *bytesDecoded, int mode )
+{
+ return BDecComponentTeletexString ( mem_op, b, 0, 0, v, bytesDecoded, mode|CALL_TAG_DECODER );
+}
+
+int
+BDecComponentTeletexString( void* mem_op, GenBuf *b, AsnTag tagId, AsnLen len, void *v, AsnLen *bytesDecoded, int mode )
+{
+ char* peek_head;
+ int i, strLen, rc;
+ void* component_values;
+ ComponentTeletexString* k, **k2;
+ AsnOid result;
+
+ k = (ComponentTeletexString*) v;
+
+ if ( mode & DEC_ALLOC_MODE_0 ) {
+ k2 = (ComponentTeletexString**) v;
+ *k2 = (ComponentTeletexString*) CompAlloc( mem_op, sizeof( ComponentTeletexString ) );
+ if ( !*k2 ) return LDAP_DECODING_ERROR;
+ k = *k2;
+ }
+
+ if ( mode & CALL_TAG_DECODER ) {
+ mode = mode & CALL_CONTENT_DECODER;
+ rc = BDecTeletexString ( mem_op, b, &result, bytesDecoded );
+ } else {
+ rc = BDecTeletexStringContent ( mem_op, b, tagId, len, &result, bytesDecoded );
+ }
+ if ( rc < 0 ) {
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentPrintableString;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentPrintableString;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentPrintableString;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_PRINTABLE_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentPrintableString;
+ k->value = result;
+
+ k->comp_desc = get_component_description (BASICTYPE_T61_STR);
+
return LDAP_SUCCESS;
}
+
/*
* Matching function : Real
*/
int
GEncComponentReal ( GenBuf *b, ComponentReal *in )
{
- if ( !in )
- return (-1);
- return GEncAsnRealContent ( b, &in->value );
+ GAsnReal t = {0};
+ if ( !in )
+ return (-1);
+ t.value = in->value;
+ return GEncAsnRealContent ( b, &t );
}
/*
return LDAP_DECODING_ERROR;
}
k->value = result.value;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentReal;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentReal;
- k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_REAL;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentReal;
+ k->comp_desc = get_component_description (BASICTYPE_REAL);
return LDAP_SUCCESS;
}
return LDAP_DECODING_ERROR;
}
k->value = result;
-
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentReal;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentReal;
- k->comp_desc->cd_free = (comp_free_func*)NULL;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_REAL;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentReal;
+ k->comp_desc = get_component_description (BASICTYPE_REAL);
return LDAP_SUCCESS;
}
int
GEncComponentRelativeOid ( GenBuf *b, ComponentRelativeOid *in )
{
- if ( !in || in->value.octetLen <= 0 )
- return (-1);
- return GEncAsnRelativeOidContent ( b , &in->value );
+ GAsnRelativeOid t = {0};
+
+ if ( !in || in->value.octetLen <= 0 )
+ return (-1);
+ t.value = in->value;
+ return GEncAsnRelativeOidContent ( b , (GAsnOcts*)&t );
}
/*
return LDAP_DECODING_ERROR;
}
k->value = result.value;
+ k->comp_desc = get_component_description (BASICTYPE_OID);
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentRelativeOid;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentRelativeOid;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentRelativeOid;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_OID;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentRelativeOid;
-
return LDAP_SUCCESS;
}
return LDAP_DECODING_ERROR;
}
k->value = result;
+ k->comp_desc = get_component_description (BASICTYPE_OID);
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentRelativeOid;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentRelativeOid;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentRelativeOid;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_RELATIVE_OID;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentRelativeOid;
return LDAP_SUCCESS;
}
int
GEncComponentUniversalString ( GenBuf *b, ComponentUniversalString *in )
{
- if ( !in || in->value.octetLen <= 0 )
- return (-1);
- return GEncUniversalStringContent( b, &in->value );
+ GUniversalString t = {0};
+ if ( !in || in->value.octetLen <= 0 )
+ return (-1);
+ t.value = in->value;
+ return GEncUniversalStringContent( b, &t );
}
/*
return LDAP_DECODING_ERROR;
}
k->value = result;
+ k->comp_desc = get_component_description (BASICTYPE_UNIVERSAL_STR);
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentUniversalString;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentUniversalString;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentUniversalString;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_UNIVERSAL_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentUniversalString;
return LDAP_SUCCESS;
}
rc = BDecVisibleStringContent ( mem_op, b, tagId, len, &result, bytesDecoded );
}
k->value = result;
+ k->comp_desc = get_component_description (BASICTYPE_VISIBLE_STR);
- k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
- if ( !k->comp_desc ) {
- if ( k ) CompFree ( mem_op, k );
- return LDAP_DECODING_ERROR;
- }
- k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentVisibleString;
- k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentVisibleString;
- k->comp_desc->cd_free = (comp_free_func*)FreeComponentVisibleString;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
- k->comp_desc->cd_extract_i = NULL;
- k->comp_desc->cd_type = ASN_BASIC;
- k->comp_desc->cd_type_id = BASICTYPE_VISIBLE_STR;
- k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentVisibleString;
return LDAP_SUCCESS;
}
/*
* Routines for handling an ANY DEFINED Type
*/
+
+/* Check if the <select> type CR and the OID of the given ANY type */
+int
+CheckSelectTypeCorrect ( void* mem_op, ComponentAnyInfo* cai, struct berval* select ) {
+ int strLen;
+ AttributeType* ad_type;
+ char* oid;
+ char* result;
+
+ if ( IsNumericOid ( select->bv_val , select->bv_len ) ) {
+ oid = select->bv_val;
+ strLen = select->bv_len;
+ } else {
+ ad_type = at_bvfind( select );
+
+ if ( !ad_type )
+ return LDAP_DECODING_ERROR;
+
+ oid = ad_type->sat_atype.at_oid;
+ strLen = strlen ( oid );
+ }
+ result = EncodeComponentOid ( mem_op, oid , &strLen );
+ if ( !result || strLen <= 0 ) return (-1);
+
+ if ( cai->oid.octetLen == strLen &&
+ strncmp ( cai->oid.octs, result, strLen ) == 0 )
+ return (1);
+ else
+ return (-1);
+}
+
int
SetAnyTypeByComponentOid ( ComponentAny *v, ComponentOid *id ) {
Hash hash;
int
GEncComponentAny ( GenBuf *b, ComponentAny *in )
{
- if ( in->cai != NULL && in->cai->Encode != NULL )
- return in->cai->Encode(b, &in->value );
- else return (-1);
+ if ( in->cai != NULL && in->cai->Encode != NULL )
+ return in->cai->Encode(b, &in->value );
+ else
+ return (-1);
}
int
-BDecComponentAny ( void* mem_op, GenBuf *b, ComponentAny *result, AsnLen *bytesDecoded, int mode) {
+BEncComponentAny ( void* mem_op, GenBuf *b, ComponentAny *result, AsnLen *bytesDecoded, int mode)
+{
ComponentAny *k, **k2;
k = (ComponentAny*) result;
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentAny;
+ k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentAny;
+ k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentAny;
+ k->comp_desc->cd_free = (comp_free_func*)FreeComponentAny;
+ k->comp_desc->cd_extract_i = NULL;
+ k->comp_desc->cd_type = ASN_BASIC;
+ k->comp_desc->cd_type_id = BASICTYPE_ANY;
+ k->comp_desc->cd_all_match = (allcomponent_matching_func*)MatchingComponentAny;
+ return LDAP_SUCCESS;
+ }
+ else {
+ Asn1Error ("ERROR - Component ANY Decode routine is NULL\n");
+ return 0;
+ }
+}
+
+int
+BDecComponentAny ( void* mem_op, GenBuf *b, ComponentAny *result, AsnLen *bytesDecoded, int mode) {
+ int rc;
+ ComponentAny *k, **k2;
+
+ k = (ComponentAny*) result;
+
+ if ( !k ) return (-1);
+
+ if ( mode & DEC_ALLOC_MODE_0 ) {
+ k2 = (ComponentAny**) result;
+ *k2 = (ComponentAny*) CompAlloc( mem_op, sizeof( ComponentAny ) );
+ if ( !*k2 ) return LDAP_DECODING_ERROR;
+ k = *k2;
+ }
+
+ if ((result->cai != NULL) && (result->cai->BER_Decode != NULL)) {
+ result->cai->BER_Decode ( mem_op, b, (ComponentSyntaxInfo*)&result->value, (int*)bytesDecoded, DEC_ALLOC_MODE_0 );
+
+ k->comp_desc = CompAlloc( mem_op, sizeof( ComponentDesc ) );
+ if ( !k->comp_desc ) {
+ if ( k ) CompFree ( mem_op, k );
+ return LDAP_DECODING_ERROR;
+ }
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentAny;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentAny;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentAny;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentAny;
- k->comp_desc->cd_pretty = (slap_syntax_transform_func*)NULL;
- k->comp_desc->cd_validate = (slap_syntax_validate_func*)NULL;
k->comp_desc->cd_extract_i = NULL;
k->comp_desc->cd_type = ASN_BASIC;
k->comp_desc->cd_type_id = BASICTYPE_ANY;
if ( k ) CompFree ( mem_op, k );
return LDAP_DECODING_ERROR;
}
+ k->comp_desc->cd_gser_encoder = (encoder_func*)GEncComponentAny;
k->comp_desc->cd_gser_decoder = (gser_decoder_func*)GDecComponentAny;
k->comp_desc->cd_ber_decoder = (ber_decoder_func*)BDecComponentAny;
k->comp_desc->cd_free = (comp_free_func*)FreeComponentAny;
Insert(anyIntHashTblG, a, h);
}
+
+/*
+ * OID and its corresponding decoder can be registerd with this func.
+ * If contained types constrained by <select> are used,
+ * their OID and decoder MUST be registered, otherwise it will return no entry.
+ * An open type(ANY type) also need be registered.
+ */
+void
+InstallOidDecoderMapping ( char* ch_oid, EncodeFcn encode, gser_decoder_func* G_decode, ber_tag_decoder_func* B_decode, ExtractFcn extract, MatchFcn match ) {
+ AsnOid oid;
+ int strLen;
+ void* mem_op;
+
+ strLen = strlen( ch_oid );
+ if( strLen <= 0 ) return;
+ mem_op = comp_nibble_memory_allocator ( 128, 16 );
+ oid.octs = EncodeComponentOid ( mem_op, ch_oid, &strLen );
+ oid.octetLen = strLen;
+ if( strLen <= 0 ) return;
+
+
+ InstallAnyByComponentOid ( 0, &oid, 0, encode, G_decode, B_decode,
+ extract, match, NULL, NULL);
+ comp_nibble_memory_free(mem_op);
+}
+
+/*
+ * Look up Oid-decoder mapping table by berval have either
+ * oid or description
+ */
+OidDecoderMapping*
+RetrieveOidDecoderMappingbyBV( struct berval* in ) {
+ if ( IsNumericOid ( in->bv_val, in->bv_len ) )
+ return RetrieveOidDecoderMappingbyOid( in->bv_val, in->bv_len );
+ else
+ return RetrieveOidDecoderMappingbyDesc( in->bv_val, in->bv_len );
+}
+
+/*
+ * Look up Oid-decoder mapping table by dotted OID
+ */
+OidDecoderMapping*
+RetrieveOidDecoderMappingbyOid( char* ch_oid, int oid_len ) {
+ Hash hash;
+ void *anyInfo;
+ AsnOid oid;
+ int strLen;
+ void* mem_op;
+
+ mem_op = comp_nibble_memory_allocator ( 128, 16 );
+ oid.octs = EncodeComponentOid ( mem_op, ch_oid, &oid_len);
+ oid.octetLen = oid_len;
+ if( oid_len <= 0 ) {
+ comp_nibble_memory_free( mem_op );
+ return NULL;
+ }
+
+ /* use encoded oid as hash string */
+ hash = MakeHash ( oid.octs, oid.octetLen);
+ comp_nibble_memory_free( mem_op );
+ if (CheckForAndReturnValue (anyOidHashTblG, hash, &anyInfo))
+ return (OidDecoderMapping*) anyInfo;
+ else
+ return (OidDecoderMapping*) NULL;
+
+}
+
+/*
+ * Look up Oid-decoder mapping table by description
+ */
+OidDecoderMapping*
+RetrieveOidDecoderMappingbyDesc( char* desc, int desc_len ) {
+ Hash hash;
+ void *anyInfo;
+ AsnOid oid;
+ AttributeType* ad_type;
+ struct berval bv;
+ void* mem_op;
+
+ bv.bv_val = desc;
+ bv.bv_len = desc_len;
+ ad_type = at_bvfind( &bv );
+
+ oid.octs = ad_type->sat_atype.at_oid;
+ oid.octetLen = strlen ( oid.octs );
+
+ if ( !ad_type )
+ return (OidDecoderMapping*) NULL;
+
+ mem_op = comp_nibble_memory_allocator ( 128, 16 );
+
+ oid.octs = EncodeComponentOid ( mem_op, oid.octs , (int*)&oid.octetLen );
+ if( oid.octetLen <= 0 ) {
+ comp_nibble_memory_free( mem_op );
+ return (OidDecoderMapping*) NULL;
+ }
+
+ /* use encoded oid as hash string */
+ hash = MakeHash ( oid.octs, oid.octetLen);
+ comp_nibble_memory_free( mem_op );
+ if (CheckForAndReturnValue (anyOidHashTblG, hash, &anyInfo))
+ return (OidDecoderMapping*) anyInfo;
+ else
+ return (OidDecoderMapping*) NULL;
+
+}
void
InstallAnyByComponentOid (int anyId, AsnOid *oid, unsigned int size,
EncodeFcn encode, gser_decoder_func* G_decode,
a = (ComponentAnyInfo*) malloc (sizeof (ComponentAnyInfo));
a->anyId = anyId;
- a->oid.octs = NULL;
- a->oid.octetLen = 0;
+ if ( oid ) {
+ a->oid.octs = malloc( oid->octetLen );
+ memcpy ( a->oid.octs, oid->octs, oid->octetLen );
+ a->oid.octetLen = oid->octetLen;
+ }
a->size = size;
a->Encode = encode;
a->GSER_Decode = G_decode;
int mode) {
tag = BDecTag ( b, bytesDecoded );
elmtLen = BDecLen ( b, bytesDecoded );
+ if ( elmtLen <= 0 ) return (-1);
if ( tag != MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE) ) {
- printf("Invliad Tag\n");
- exit (1);
+ return (-1);
}
return (*decoder)( mem_op, b, tag, elmtLen, (ComponentSyntaxInfo*)v,(int*)bytesDecoded, mode );
* LDAP Encodings : cn=sang,o=ibm,c=us
*/
-int
-increment_bv_mem ( struct berval* in ) {
- int new_size = in->bv_len + INCREMENT_SIZE;
+increment_bv_mem_by_size ( struct berval* in, int size ) {
+ int new_size = in->bv_len + size;
in->bv_val = realloc( in->bv_val, new_size );
in->bv_len = new_size;
}
/*check if the buffer can store the first/second arc and two dots*/
if ( out->bv_len < *pos + 2 + 1 + rc )
- increment_bv_mem ( out );
+ increment_bv_mem_by_size ( out, INCREMENT_SIZE );
if ( firstArcNum == 1)
out->bv_val[*pos] = '1';
rc = intToAscii ( arcNum, buf );
if ( out->bv_len < *pos + rc + 1 )
- increment_bv_mem ( out );
+ increment_bv_mem_by_size ( out, INCREMENT_SIZE );
memcpy( out->bv_val + *pos, buf, rc );
*pos += rc;
rc = ConvertBER2Desc( in->type.value.octs, in->type.value.octetLen, out, pos );
if ( rc != LDAP_SUCCESS ) return rc;
if ( out->bv_len < *pos + 1/*for '='*/ )
- increment_bv_mem ( out );
+ increment_bv_mem_by_size ( out, INCREMENT_SIZE );
/*Between type and value, put '='*/
out->bv_val[*pos] = '=';
(*pos)++;
/*Assume it is string*/
if ( out->bv_len < *pos + value_size )
- increment_bv_mem ( out );
+ increment_bv_mem_by_size ( out, INCREMENT_SIZE );
memcpy( out->bv_val + *pos, value_ptr, value_size );
out->bv_len += value_size;
*pos += value_size;
rc = ConvertComponentAttributeTypeAndValue2RFC2253( attr_typeNvalue, out, pos );
if ( rc != LDAP_SUCCESS ) return LDAP_INVALID_SYNTAX;
- if ( out->bv_len < pos + 1/*for '+'*/ )
- increment_bv_mem ( out );
+ if ( out->bv_len < *pos + 1/*for '+'*/ )
+ increment_bv_mem_by_size ( out, INCREMENT_SIZE );
/*between multivalued RDNs, put comma*/
- out->bv_val[*pos++] = '+';
+ out->bv_val[(*pos)++] = '+';
}
(*pos)--;/*remove the last '+'*/
return LDAP_SUCCESS;
if ( rc != LDAP_SUCCESS ) return LDAP_INVALID_SYNTAX;
if ( out->bv_len < pos + 1/*for ','*/ )
- increment_bv_mem ( out );
+ increment_bv_mem_by_size ( out, INCREMENT_SIZE );
/*Between RDN, put comma*/
out->bv_val[pos++] = ',';
}
pos--;/*remove the last '+'*/
out->bv_val[pos] = '\0';
- out->bv_len = pos;
+ out->bv_len =pos;
return LDAP_SUCCESS;
}