Hi:
I found there is something wrong in
crypto/asn1/asn1_mac.h and crypto/pkcs7/pk7_lib.c
in crypto/asn1/asn1_mac.h
the OLD code is:
#define M_ASN1_D2I_get(b,func)
\
c.q=c.p; \ if (func(&(b),&c.p,c.slen) == NULL) \ {c.line=__LINE__; goto err; } \ c.slen-=(c.p-c.q); and I changed it to:
#define M_ASN1_D2I_get(b,func)
\
c.q=c.p; \ if (c.p+c.slen>c.max)\ {c.line=__LINE__; goto err; } \ if (func(&(b),&c.p,c.slen) == NULL) \ {c.line=__LINE__; goto err; } \ c.slen-=(c.p-c.q); in crypto/pkcs7/pk7_lib.c
X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO
*si)
{ //gongxy 2000 MODIFY BEGIN /* if (PKCS7_type_is_signed(p7)) return(X509_find_by_issuer_and_serial(p7->d.sign->cert, si->issuer_and_serial->issuer, si->issuer_and_serial->serial)); else return(NULL); */ if (PKCS7_type_is_signed(p7)) return(X509_find_by_issuer_and_serial(p7->d.sign->cert, si->issuer_and_serial->issuer, si->issuer_and_serial->serial)); if (PKCS7_type_is_signedAndEnveloped(p7)) return(X509_find_by_issuer_and_serial(p7->d.signed_and_enveloped->cert, si->issuer_and_serial->issuer, si->issuer_and_serial->serial)); return(NULL); //gongxy 2000 MODIFY END } Is it OK ?
|