53 lines
2.0 KiB
Diff
53 lines
2.0 KiB
Diff
diff --git a/apps/s_client.c b/apps/s_client.c
|
|
index 7b2cabdc428a9..d0611433261dc 100644
|
|
--- a/apps/s_client.c
|
|
+++ b/apps/s_client.c
|
|
@@ -2847,8 +2847,9 @@ int s_client_main(int argc, char **argv)
|
|
goto end;
|
|
}
|
|
atyp = ASN1_generate_nconf(genstr, cnf);
|
|
- if (atyp == NULL) {
|
|
+ if (atyp == NULL || atyp->type != V_ASN1_SEQUENCE) {
|
|
NCONF_free(cnf);
|
|
+ ASN1_TYPE_free(atyp);
|
|
BIO_printf(bio_err, "ASN1_generate_nconf failed\n");
|
|
goto end;
|
|
}
|
|
diff --git a/crypto/pkcs12/p12_kiss.c b/crypto/pkcs12/p12_kiss.c
|
|
index 10b581612dbb2..d0236e34fe9df 100644
|
|
--- a/crypto/pkcs12/p12_kiss.c
|
|
+++ b/crypto/pkcs12/p12_kiss.c
|
|
@@ -196,11 +196,17 @@ static int parse_bag(PKCS12_SAFEBAG *bag, const char *pass, int passlen,
|
|
ASN1_BMPSTRING *fname = NULL;
|
|
ASN1_OCTET_STRING *lkid = NULL;
|
|
|
|
- if ((attrib = PKCS12_SAFEBAG_get0_attr(bag, NID_friendlyName)))
|
|
+ if ((attrib = PKCS12_SAFEBAG_get0_attr(bag, NID_friendlyName))) {
|
|
+ if (attrib->type != V_ASN1_BMPSTRING)
|
|
+ return 0;
|
|
fname = attrib->value.bmpstring;
|
|
+ }
|
|
|
|
- if ((attrib = PKCS12_SAFEBAG_get0_attr(bag, NID_localKeyID)))
|
|
+ if ((attrib = PKCS12_SAFEBAG_get0_attr(bag, NID_localKeyID))) {
|
|
+ if (attrib->type != V_ASN1_OCTET_STRING)
|
|
+ return 0;
|
|
lkid = attrib->value.octet_string;
|
|
+ }
|
|
|
|
switch (PKCS12_SAFEBAG_get_nid(bag)) {
|
|
case NID_keyBag:
|
|
diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c
|
|
index 02444d983c476..7798846b16ec1 100644
|
|
--- a/crypto/pkcs7/pk7_doit.c
|
|
+++ b/crypto/pkcs7/pk7_doit.c
|
|
@@ -1229,6 +1229,8 @@ ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk)
|
|
ASN1_TYPE *astype;
|
|
if ((astype = get_attribute(sk, NID_pkcs9_messageDigest)) == NULL)
|
|
return NULL;
|
|
+ if (astype->type != V_ASN1_OCTET_STRING)
|
|
+ return NULL;
|
|
return astype->value.octet_string;
|
|
}
|
|
|