diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2001-01-04 01:46:36 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2001-01-04 01:46:36 +0000 |
commit | bf0d176e48c6dd44c6cb3250d1e56d9d098f815a (patch) | |
tree | 199fe76e0938dd662f98fe7c8c5efd7438c09dbb /crypto/asn1/tasn_dec.c | |
parent | ec5add8784a2ffacd3391daae7937e04225da9da (diff) |
Update OCSP API.
Remove extensions argument from various functions
because it is not needed with the new extension
code.
New function OCSP_cert_to_id() to convert a pair
of certificates into an OCSP_CERTID.
New simple OCSP HTTP function. This is rather primitive
but just about adequate to send OCSP requests and
parse the response.
Fix typo in CRL distribution points extension.
Fix ASN1 code so it adds a final null to constructed
strings.
Diffstat (limited to 'crypto/asn1/tasn_dec.c')
-rw-r--r-- | crypto/asn1/tasn_dec.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/crypto/asn1/tasn_dec.c b/crypto/asn1/tasn_dec.c index 15ebf267f2..930ee7025b 100644 --- a/crypto/asn1/tasn_dec.c +++ b/crypto/asn1/tasn_dec.c @@ -606,7 +606,7 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval, unsigned char **in, long inl cont = *in; /* If indefinite length constructed find the real end */ if(inf) { - asn1_collect(NULL, &p, plen, inf, -1, -1); + if(!asn1_collect(NULL, &p, plen, inf, -1, -1)) goto err; len = p - cont; } else { len = p - cont + plen; @@ -623,9 +623,15 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval, unsigned char **in, long inl * internally irrespective of the type. So instead just check * for UNIVERSAL class and ignore the tag. */ - asn1_collect(&buf, &p, plen, inf, -1, V_ASN1_UNIVERSAL); - cont = (unsigned char *)buf.data; + if(!asn1_collect(&buf, &p, plen, inf, -1, V_ASN1_UNIVERSAL)) goto err; len = buf.length; + /* Append a final null to string */ + if(!BUF_MEM_grow(&buf, len + 1)) { + ASN1err(ASN1_F_ASN1_D2I_EX_PRIMITIVE, ERR_R_MALLOC_FAILURE); + return 0; + } + buf.data[len] = 0; + cont = (unsigned char *)buf.data; free_cont = 1; } else { cont = p; |