diff options
Diffstat (limited to 'src/lib/libssl/src/crypto/pkcs7/pk7_doit.c')
-rw-r--r-- | src/lib/libssl/src/crypto/pkcs7/pk7_doit.c | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c b/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c index b78e22819c..4ac29ae14d 100644 --- a/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c +++ b/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c | |||
@@ -239,7 +239,13 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio) | |||
239 | OPENSSL_free(tmp); | 239 | OPENSSL_free(tmp); |
240 | goto err; | 240 | goto err; |
241 | } | 241 | } |
242 | M_ASN1_OCTET_STRING_set(ri->enc_key,tmp,jj); | 242 | if (!M_ASN1_OCTET_STRING_set(ri->enc_key,tmp,jj)) |
243 | { | ||
244 | PKCS7err(PKCS7_F_PKCS7_DATAINIT, | ||
245 | ERR_R_MALLOC_FAILURE); | ||
246 | OPENSSL_free(tmp); | ||
247 | goto err; | ||
248 | } | ||
243 | } | 249 | } |
244 | OPENSSL_free(tmp); | 250 | OPENSSL_free(tmp); |
245 | OPENSSL_cleanse(key, keylen); | 251 | OPENSSL_cleanse(key, keylen); |
@@ -520,12 +526,20 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) | |||
520 | case NID_pkcs7_signedAndEnveloped: | 526 | case NID_pkcs7_signedAndEnveloped: |
521 | /* XXXXXXXXXXXXXXXX */ | 527 | /* XXXXXXXXXXXXXXXX */ |
522 | si_sk=p7->d.signed_and_enveloped->signer_info; | 528 | si_sk=p7->d.signed_and_enveloped->signer_info; |
523 | os=M_ASN1_OCTET_STRING_new(); | 529 | if (!(os=M_ASN1_OCTET_STRING_new())) |
530 | { | ||
531 | PKCS7err(PKCS7_F_PKCS7_DATASIGN,ERR_R_MALLOC_FAILURE); | ||
532 | goto err; | ||
533 | } | ||
524 | p7->d.signed_and_enveloped->enc_data->enc_data=os; | 534 | p7->d.signed_and_enveloped->enc_data->enc_data=os; |
525 | break; | 535 | break; |
526 | case NID_pkcs7_enveloped: | 536 | case NID_pkcs7_enveloped: |
527 | /* XXXXXXXXXXXXXXXX */ | 537 | /* XXXXXXXXXXXXXXXX */ |
528 | os=M_ASN1_OCTET_STRING_new(); | 538 | if (!(os=M_ASN1_OCTET_STRING_new())) |
539 | { | ||
540 | PKCS7err(PKCS7_F_PKCS7_DATASIGN,ERR_R_MALLOC_FAILURE); | ||
541 | goto err; | ||
542 | } | ||
529 | p7->d.enveloped->enc_data->enc_data=os; | 543 | p7->d.enveloped->enc_data->enc_data=os; |
530 | break; | 544 | break; |
531 | case NID_pkcs7_signed: | 545 | case NID_pkcs7_signed: |
@@ -599,7 +613,12 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) | |||
599 | if (!PKCS7_get_signed_attribute(si, | 613 | if (!PKCS7_get_signed_attribute(si, |
600 | NID_pkcs9_signingTime)) | 614 | NID_pkcs9_signingTime)) |
601 | { | 615 | { |
602 | sign_time=X509_gmtime_adj(NULL,0); | 616 | if (!(sign_time=X509_gmtime_adj(NULL,0))) |
617 | { | ||
618 | PKCS7err(PKCS7_F_PKCS7_DATASIGN, | ||
619 | ERR_R_MALLOC_FAILURE); | ||
620 | goto err; | ||
621 | } | ||
603 | PKCS7_add_signed_attribute(si, | 622 | PKCS7_add_signed_attribute(si, |
604 | NID_pkcs9_signingTime, | 623 | NID_pkcs9_signingTime, |
605 | V_ASN1_UTCTIME,sign_time); | 624 | V_ASN1_UTCTIME,sign_time); |
@@ -608,8 +627,19 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) | |||
608 | /* Add digest */ | 627 | /* Add digest */ |
609 | md_tmp=EVP_MD_CTX_md(&ctx_tmp); | 628 | md_tmp=EVP_MD_CTX_md(&ctx_tmp); |
610 | EVP_DigestFinal_ex(&ctx_tmp,md_data,&md_len); | 629 | EVP_DigestFinal_ex(&ctx_tmp,md_data,&md_len); |
611 | digest=M_ASN1_OCTET_STRING_new(); | 630 | if (!(digest=M_ASN1_OCTET_STRING_new())) |
612 | M_ASN1_OCTET_STRING_set(digest,md_data,md_len); | 631 | { |
632 | PKCS7err(PKCS7_F_PKCS7_DATASIGN, | ||
633 | ERR_R_MALLOC_FAILURE); | ||
634 | goto err; | ||
635 | } | ||
636 | if (!M_ASN1_OCTET_STRING_set(digest,md_data, | ||
637 | md_len)) | ||
638 | { | ||
639 | PKCS7err(PKCS7_F_PKCS7_DATASIGN, | ||
640 | ERR_R_MALLOC_FAILURE); | ||
641 | goto err; | ||
642 | } | ||
613 | PKCS7_add_signed_attribute(si, | 643 | PKCS7_add_signed_attribute(si, |
614 | NID_pkcs9_messageDigest, | 644 | NID_pkcs9_messageDigest, |
615 | V_ASN1_OCTET_STRING,digest); | 645 | V_ASN1_OCTET_STRING,digest); |