mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-21 23:29:34 -05:00
ITS#9423 ldap_X509dn2bv: check for invalid BER after RDN count
This commit is contained in:
parent
d9f20cc09e
commit
c944dc55b7
1 changed files with 7 additions and 5 deletions
|
|
@ -1505,6 +1505,12 @@ ldap_X509dn2bv( void *x509_name, struct berval *bv, LDAPDN_rewrite_func *func,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Rewind and prepare to extract */
|
||||||
|
ber_rewind( ber );
|
||||||
|
tag = ber_first_element( ber, &len, &dn_end );
|
||||||
|
if ( tag == LBER_DEFAULT )
|
||||||
|
return LDAP_DECODING_ERROR;
|
||||||
|
|
||||||
/* Allocate the DN/RDN/AVA stuff as a single block */
|
/* Allocate the DN/RDN/AVA stuff as a single block */
|
||||||
dnsize = sizeof(LDAPRDN) * (nrdns+1);
|
dnsize = sizeof(LDAPRDN) * (nrdns+1);
|
||||||
dnsize += sizeof(LDAPAVA *) * (navas+nrdns);
|
dnsize += sizeof(LDAPAVA *) * (navas+nrdns);
|
||||||
|
|
@ -1516,16 +1522,12 @@ ldap_X509dn2bv( void *x509_name, struct berval *bv, LDAPDN_rewrite_func *func,
|
||||||
} else {
|
} else {
|
||||||
newDN = (LDAPDN)(char *)ptrs;
|
newDN = (LDAPDN)(char *)ptrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
newDN[nrdns] = NULL;
|
newDN[nrdns] = NULL;
|
||||||
newRDN = (LDAPRDN)(newDN + nrdns+1);
|
newRDN = (LDAPRDN)(newDN + nrdns+1);
|
||||||
newAVA = (LDAPAVA *)(newRDN + navas + nrdns);
|
newAVA = (LDAPAVA *)(newRDN + navas + nrdns);
|
||||||
baseAVA = newAVA;
|
baseAVA = newAVA;
|
||||||
|
|
||||||
/* Rewind and start extracting */
|
|
||||||
ber_rewind( ber );
|
|
||||||
|
|
||||||
tag = ber_first_element( ber, &len, &dn_end );
|
|
||||||
for ( i = nrdns - 1; i >= 0; i-- ) {
|
for ( i = nrdns - 1; i >= 0; i-- ) {
|
||||||
newDN[i] = newRDN;
|
newDN[i] = newRDN;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue