Skip to content

Commit 199f2b4

Browse files
olszomalmtrojnar
authored andcommitted
Check X509_ATTRIBUTE_get0_data() return value
1 parent a92c4a5 commit 199f2b4

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

osslsigncode.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1652,13 +1652,19 @@ static time_t time_t_timestamp_get_attributes(CMS_ContentInfo **timestamp, PKCS7
16521652
OBJ_obj2txt(object_txt, sizeof object_txt, object, 1);
16531653
if (!strcmp(object_txt, PKCS9_MESSAGE_DIGEST)) {
16541654
/* PKCS#9 message digest - Policy OID: 1.2.840.113549.1.9.4 */
1655+
const u_char *mdbuf;
1656+
int len;
16551657
ASN1_STRING *digest = X509_ATTRIBUTE_get0_data(attr, 0, V_ASN1_OCTET_STRING, NULL);
1656-
const u_char *mdbuf = ASN1_STRING_get0_data(digest);
1657-
int len = ASN1_STRING_length(digest);
1658+
if (digest == NULL)
1659+
continue;
1660+
mdbuf = ASN1_STRING_get0_data(digest);
1661+
len = ASN1_STRING_length(digest);
16581662
print_hash("\tMessage digest", "", mdbuf, len);
16591663
} else if (!strcmp(object_txt, PKCS9_SIGNING_TIME)) {
16601664
/* PKCS#9 signing time - Policy OID: 1.2.840.113549.1.9.5 */
16611665
ASN1_UTCTIME *signtime = X509_ATTRIBUTE_get0_data(attr, 0, V_ASN1_UTCTIME, NULL);
1666+
if (signtime == NULL)
1667+
continue;
16621668
printf("\tSigning time: ");
16631669
print_time_t(time_t_get_asn1_time(signtime));
16641670
} else if (!strcmp(object_txt, SPC_SP_OPUS_INFO_OBJID)) {
@@ -1791,6 +1797,10 @@ static time_t time_t_timestamp_get_attributes(CMS_ContentInfo **timestamp, PKCS7
17911797
} else if (!strcmp(object_txt, SPC_UNAUTHENTICATED_DATA_BLOB_OBJID)) {
17921798
/* Unauthenticated Data Blob - Policy OID: 1.3.6.1.4.1.42921.1.2.1 */
17931799
ASN1_STRING *blob = X509_ATTRIBUTE_get0_data(attr, 0, V_ASN1_UTF8STRING, NULL);
1800+
if (blob == NULL) {
1801+
printf("Error: Unauthenticated Data Blob could not be decoded correctly\n");
1802+
continue;
1803+
}
17941804
if (verbose) {
17951805
char *data_blob = OPENSSL_buf2hexstr(blob->data, blob->length);
17961806
printf("\nUnauthenticated Data Blob:\n%s\n", data_blob);
@@ -1853,6 +1863,8 @@ static time_t time_t_get_si_time(PKCS7_SIGNER_INFO *si)
18531863
if (!strcmp(object_txt, PKCS9_SIGNING_TIME)) {
18541864
/* PKCS#9 signing time - Policy OID: 1.2.840.113549.1.9.5 */
18551865
time = X509_ATTRIBUTE_get0_data(attr, 0, V_ASN1_UTCTIME, NULL);
1866+
if (time == NULL)
1867+
return INVALID_TIME; /* FAILED */
18561868
}
18571869
}
18581870
posix_time = time_t_get_asn1_time(time);

0 commit comments

Comments
 (0)