@@ -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