diff options
Diffstat (limited to 'fuzz/libtasn1_pkix_der_fuzzer.c')
-rw-r--r-- | fuzz/libtasn1_pkix_der_fuzzer.c | 569 |
1 files changed, 569 insertions, 0 deletions
diff --git a/fuzz/libtasn1_pkix_der_fuzzer.c b/fuzz/libtasn1_pkix_der_fuzzer.c new file mode 100644 index 0000000..dc8d7f3 --- /dev/null +++ b/fuzz/libtasn1_pkix_der_fuzzer.c @@ -0,0 +1,569 @@ +/* + * Copyright(c) 2019 Free Software Foundation, Inc. + * + * This file is part of libtasn1. + * + * Libtasn1 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Libtasn1 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libtasn1. If not, see <https://www.gnu.org/licenses/>. + * + * This fuzzer is testing arbitrary DER input data with GnuTLS's ASN.1 definition (lib/pkix.asn). + * So, any issues found here likely have a real world impact on every software using libgnutls. + */ + +#include <config.h> + +#include <assert.h> /* assert */ +#include <stdlib.h> /* malloc, free */ +#include <string.h> /* strcmp, memcpy */ + +#include "libtasn1.h" +#include "fuzzer.h" + +/* + * This is the ASN.1 definition array used by GnuTLS. + * It is created from lib/pkix.asn over at the GnuTLS project. + */ +static const asn1_static_node pkix_asn1_tab[] = { + {"PKIX1", 536875024, NULL}, + {NULL, 1073741836, NULL}, + {"PrivateKeyUsagePeriod", 1610612741, NULL}, + {"notBefore", 1610637349, NULL}, + {NULL, 4104, "0"}, + {"notAfter", 536895525, NULL}, + {NULL, 4104, "1"}, + {"AuthorityKeyIdentifier", 1610612741, NULL}, + {"keyIdentifier", 1610637319, NULL}, + {NULL, 4104, "0"}, + {"authorityCertIssuer", 1610637314, "GeneralNames"}, + {NULL, 4104, "1"}, + {"authorityCertSerialNumber", 536895490, "CertificateSerialNumber"}, + {NULL, 4104, "2"}, + {"SubjectKeyIdentifier", 1073741831, NULL}, + {"KeyUsage", 1073741830, NULL}, + {"DirectoryString", 1610612754, NULL}, + {"teletexString", 1612709918, NULL}, + {"MAX", 524298, "1"}, + {"printableString", 1612709919, NULL}, + {"MAX", 524298, "1"}, + {"universalString", 1612709920, NULL}, + {"MAX", 524298, "1"}, + {"utf8String", 1612709922, NULL}, + {"MAX", 524298, "1"}, + {"bmpString", 1612709921, NULL}, + {"MAX", 524298, "1"}, + {"ia5String", 538968093, NULL}, + {"MAX", 524298, "1"}, + {"SubjectAltName", 1073741826, "GeneralNames"}, + {"GeneralNames", 1612709899, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "GeneralName"}, + {"GeneralName", 1610612754, NULL}, + {"otherName", 1610620930, "AnotherName"}, + {NULL, 4104, "0"}, + {"rfc822Name", 1610620957, NULL}, + {NULL, 4104, "1"}, + {"dNSName", 1610620957, NULL}, + {NULL, 4104, "2"}, + {"x400Address", 1610620941, NULL}, + {NULL, 4104, "3"}, + {"directoryName", 1610620939, NULL}, + {NULL, 1073743880, "4"}, + {NULL, 2, "RelativeDistinguishedName"}, + {"ediPartyName", 1610620941, NULL}, + {NULL, 4104, "5"}, + {"uniformResourceIdentifier", 1610620957, NULL}, + {NULL, 4104, "6"}, + {"iPAddress", 1610620935, NULL}, + {NULL, 4104, "7"}, + {"registeredID", 536879116, NULL}, + {NULL, 4104, "8"}, + {"AnotherName", 1610612741, NULL}, + {"type-id", 1073741836, NULL}, + {"value", 541073421, NULL}, + {NULL, 1073743880, "0"}, + {"type-id", 1, NULL}, + {"IssuerAltName", 1073741826, "GeneralNames"}, + {"BasicConstraints", 1610612741, NULL}, + {"cA", 1610645508, NULL}, + {NULL, 131081, NULL}, + {"pathLenConstraint", 537411587, NULL}, + {"0", 10, "MAX"}, + {"CRLDistributionPoints", 1612709899, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "DistributionPoint"}, + {"DistributionPoint", 1610612741, NULL}, + {"distributionPoint", 1610637314, "DistributionPointName"}, + {NULL, 2056, "0"}, + {"reasons", 1610637314, "ReasonFlags"}, + {NULL, 4104, "1"}, + {"cRLIssuer", 536895490, "GeneralNames"}, + {NULL, 4104, "2"}, + {"DistributionPointName", 1610612754, NULL}, + {"fullName", 1610620930, "GeneralNames"}, + {NULL, 4104, "0"}, + {"nameRelativeToCRLIssuer", 536879106, "RelativeDistinguishedName"}, + {NULL, 4104, "1"}, + {"ReasonFlags", 1073741830, NULL}, + {"ExtKeyUsageSyntax", 1612709899, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 12, NULL}, + {"AuthorityInfoAccessSyntax", 1612709899, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "AccessDescription"}, + {"AccessDescription", 1610612741, NULL}, + {"accessMethod", 1073741836, NULL}, + {"accessLocation", 2, "GeneralName"}, + {"Attribute", 1610612741, NULL}, + {"type", 1073741836, NULL}, + {"values", 536870927, NULL}, + {NULL, 13, NULL}, + {"AttributeTypeAndValue", 1610612741, NULL}, + {"type", 1073741836, NULL}, + {"value", 13, NULL}, + {"Name", 1610612754, NULL}, + {"rdnSequence", 536870923, NULL}, + {NULL, 2, "RelativeDistinguishedName"}, + {"DistinguishedName", 1610612747, NULL}, + {NULL, 2, "RelativeDistinguishedName"}, + {"RelativeDistinguishedName", 1612709903, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "AttributeTypeAndValue"}, + {"Certificate", 1610612741, NULL}, + {"tbsCertificate", 1073741826, "TBSCertificate"}, + {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"signature", 6, NULL}, + {"TBSCertificate", 1610612741, NULL}, + {"version", 1610653699, NULL}, + {NULL, 1073741833, "0"}, + {NULL, 2056, "0"}, + {"serialNumber", 1073741826, "CertificateSerialNumber"}, + {"signature", 1073741826, "AlgorithmIdentifier"}, + {"issuer", 1073741826, "Name"}, + {"validity", 1073741826, "Validity"}, + {"subject", 1073741826, "Name"}, + {"subjectPublicKeyInfo", 1073741826, "SubjectPublicKeyInfo"}, + {"issuerUniqueID", 1610637314, "UniqueIdentifier"}, + {NULL, 4104, "1"}, + {"subjectUniqueID", 1610637314, "UniqueIdentifier"}, + {NULL, 4104, "2"}, + {"extensions", 536895490, "Extensions"}, + {NULL, 2056, "3"}, + {"CertificateSerialNumber", 1073741827, NULL}, + {"Validity", 1610612741, NULL}, + {"notBefore", 1073741826, "Time"}, + {"notAfter", 2, "Time"}, + {"Time", 1610612754, NULL}, + {"utcTime", 1073741860, NULL}, + {"generalTime", 37, NULL}, + {"UniqueIdentifier", 1073741830, NULL}, + {"SubjectPublicKeyInfo", 1610612741, NULL}, + {"algorithm", 1073741826, "AlgorithmIdentifier"}, + {"subjectPublicKey", 6, NULL}, + {"Extensions", 1612709899, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "Extension"}, + {"Extension", 1610612741, NULL}, + {"extnID", 1073741836, NULL}, + {"critical", 1610645508, NULL}, + {NULL, 131081, NULL}, + {"extnValue", 7, NULL}, + {"CertificateList", 1610612741, NULL}, + {"tbsCertList", 1073741826, "TBSCertList"}, + {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"signature", 6, NULL}, + {"TBSCertList", 1610612741, NULL}, + {"version", 1073758211, NULL}, + {"signature", 1073741826, "AlgorithmIdentifier"}, + {"issuer", 1073741826, "Name"}, + {"thisUpdate", 1073741826, "Time"}, + {"nextUpdate", 1073758210, "Time"}, + {"revokedCertificates", 1610629131, NULL}, + {NULL, 536870917, NULL}, + {"userCertificate", 1073741826, "CertificateSerialNumber"}, + {"revocationDate", 1073741826, "Time"}, + {"crlEntryExtensions", 16386, "Extensions"}, + {"crlExtensions", 536895490, "Extensions"}, + {NULL, 2056, "0"}, + {"AlgorithmIdentifier", 1610612741, NULL}, + {"algorithm", 1073741836, NULL}, + {"parameters", 541081613, NULL}, + {"algorithm", 1, NULL}, + {"Dss-Sig-Value", 1610612741, NULL}, + {"r", 1073741827, NULL}, + {"s", 3, NULL}, + {"Dss-Parms", 1610612741, NULL}, + {"p", 1073741827, NULL}, + {"q", 1073741827, NULL}, + {"g", 3, NULL}, + {"pkcs-7-ContentInfo", 1610612741, NULL}, + {"contentType", 1073741836, NULL}, + {"content", 541073421, NULL}, + {NULL, 1073743880, "0"}, + {"contentType", 1, NULL}, + {"pkcs-7-DigestInfo", 1610612741, NULL}, + {"digestAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"digest", 7, NULL}, + {"pkcs-7-SignedData", 1610612741, NULL}, + {"version", 1073741827, NULL}, + {"digestAlgorithms", 1073741826, "pkcs-7-DigestAlgorithmIdentifiers"}, + {"encapContentInfo", 1073741826, "pkcs-7-EncapsulatedContentInfo"}, + {"certificates", 1610637314, "pkcs-7-CertificateSet"}, + {NULL, 4104, "0"}, + {"crls", 1610637314, "pkcs-7-CertificateRevocationLists"}, + {NULL, 4104, "1"}, + {"signerInfos", 2, "pkcs-7-SignerInfos"}, + {"pkcs-7-DigestAlgorithmIdentifiers", 1610612751, NULL}, + {NULL, 2, "AlgorithmIdentifier"}, + {"pkcs-7-EncapsulatedContentInfo", 1610612741, NULL}, + {"eContentType", 1073741836, NULL}, + {"eContent", 536895501, NULL}, + {NULL, 2056, "0"}, + {"pkcs-7-CertificateRevocationLists", 1610612751, NULL}, + {NULL, 13, NULL}, + {"pkcs-7-CertificateChoices", 1610612754, NULL}, + {"certificate", 13, NULL}, + {"pkcs-7-CertificateSet", 1610612751, NULL}, + {NULL, 2, "pkcs-7-CertificateChoices"}, + {"IssuerAndSerialNumber", 1610612741, NULL}, + {"issuer", 1073741826, "Name"}, + {"serialNumber", 2, "CertificateSerialNumber"}, + {"pkcs-7-SignerInfo", 1610612741, NULL}, + {"version", 1073741827, NULL}, + {"sid", 1073741826, "SignerIdentifier"}, + {"digestAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"signedAttrs", 1610637314, "SignedAttributes"}, + {NULL, 4104, "0"}, + {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"signature", 1073741831, NULL}, + {"unsignedAttrs", 536895490, "SignedAttributes"}, + {NULL, 4104, "1"}, + {"SignedAttributes", 1612709903, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "Attribute"}, + {"SignerIdentifier", 1610612754, NULL}, + {"issuerAndSerialNumber", 1073741826, "IssuerAndSerialNumber"}, + {"subjectKeyIdentifier", 536879111, NULL}, + {NULL, 4104, "0"}, + {"pkcs-7-SignerInfos", 1610612751, NULL}, + {NULL, 2, "pkcs-7-SignerInfo"}, + {"pkcs-10-CertificationRequestInfo", 1610612741, NULL}, + {"version", 1073741827, NULL}, + {"subject", 1073741826, "Name"}, + {"subjectPKInfo", 1073741826, "SubjectPublicKeyInfo"}, + {"attributes", 536879106, "Attributes"}, + {NULL, 4104, "0"}, + {"Attributes", 1610612751, NULL}, + {NULL, 2, "Attribute"}, + {"pkcs-10-CertificationRequest", 1610612741, NULL}, + {"certificationRequestInfo", 1073741826, + "pkcs-10-CertificationRequestInfo"}, + {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"signature", 6, NULL}, + {"pkcs-9-at-challengePassword", 1879048204, NULL}, + {"iso", 1073741825, "1"}, + {"member-body", 1073741825, "2"}, + {"us", 1073741825, "840"}, + {"rsadsi", 1073741825, "113549"}, + {"pkcs", 1073741825, "1"}, + {NULL, 1073741825, "9"}, + {NULL, 1, "7"}, + {"pkcs-9-challengePassword", 1610612754, NULL}, + {"printableString", 1073741855, NULL}, + {"utf8String", 34, NULL}, + {"pkcs-9-localKeyId", 1073741831, NULL}, + {"pkcs-8-PrivateKeyInfo", 1610612741, NULL}, + {"version", 1073741827, NULL}, + {"privateKeyAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"privateKey", 1073741831, NULL}, + {"attributes", 536895490, "Attributes"}, + {NULL, 4104, "0"}, + {"pkcs-8-EncryptedPrivateKeyInfo", 1610612741, NULL}, + {"encryptionAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"encryptedData", 2, "pkcs-8-EncryptedData"}, + {"pkcs-8-EncryptedData", 1073741831, NULL}, + {"pkcs-5-des-CBC-params", 1612709895, NULL}, + {NULL, 1048586, "8"}, + {"pkcs-5-des-EDE3-CBC-params", 1612709895, NULL}, + {NULL, 1048586, "8"}, + {"pkcs-5-aes128-CBC-params", 1612709895, NULL}, + {NULL, 1048586, "16"}, + {"pkcs-5-aes192-CBC-params", 1612709895, NULL}, + {NULL, 1048586, "16"}, + {"pkcs-5-aes256-CBC-params", 1612709895, NULL}, + {NULL, 1048586, "16"}, + {"Gost28147-89-Parameters", 1610612741, NULL}, + {"iv", 1073741831, NULL}, + {"encryptionParamSet", 12, NULL}, + {"pkcs-5-PBE-params", 1610612741, NULL}, + {"salt", 1073741831, NULL}, + {"iterationCount", 3, NULL}, + {"pkcs-5-PBES2-params", 1610612741, NULL}, + {"keyDerivationFunc", 1073741826, "AlgorithmIdentifier"}, + {"encryptionScheme", 2, "AlgorithmIdentifier"}, + {"pkcs-5-PBKDF2-params", 1610612741, NULL}, + {"salt", 1610612754, NULL}, + {"specified", 1073741831, NULL}, + {"otherSource", 2, "AlgorithmIdentifier"}, + {"iterationCount", 1611137027, NULL}, + {"1", 10, "MAX"}, + {"keyLength", 1611153411, NULL}, + {"1", 10, "MAX"}, + {"prf", 16386, "AlgorithmIdentifier"}, + {"pkcs-12-PFX", 1610612741, NULL}, + {"version", 1610874883, NULL}, + {"v3", 1, "3"}, + {"authSafe", 1073741826, "pkcs-7-ContentInfo"}, + {"macData", 16386, "pkcs-12-MacData"}, + {"pkcs-12-PbeParams", 1610612741, NULL}, + {"salt", 1073741831, NULL}, + {"iterations", 3, NULL}, + {"pkcs-12-MacData", 1610612741, NULL}, + {"mac", 1073741826, "pkcs-7-DigestInfo"}, + {"macSalt", 1073741831, NULL}, + {"iterations", 536903683, NULL}, + {NULL, 9, "1"}, + {"pkcs-12-AuthenticatedSafe", 1610612747, NULL}, + {NULL, 2, "pkcs-7-ContentInfo"}, + {"pkcs-12-SafeContents", 1610612747, NULL}, + {NULL, 2, "pkcs-12-SafeBag"}, + {"pkcs-12-SafeBag", 1610612741, NULL}, + {"bagId", 1073741836, NULL}, + {"bagValue", 1614815245, NULL}, + {NULL, 1073743880, "0"}, + {"badId", 1, NULL}, + {"bagAttributes", 536887311, NULL}, + {NULL, 2, "Attribute"}, + {"pkcs-12-CertBag", 1610612741, NULL}, + {"certId", 1073741836, NULL}, + {"certValue", 541073421, NULL}, + {NULL, 1073743880, "0"}, + {"certId", 1, NULL}, + {"pkcs-12-CRLBag", 1610612741, NULL}, + {"crlId", 1073741836, NULL}, + {"crlValue", 541073421, NULL}, + {NULL, 1073743880, "0"}, + {"crlId", 1, NULL}, + {"pkcs-12-SecretBag", 1610612741, NULL}, + {"secretTypeId", 1073741836, NULL}, + {"secretValue", 541073421, NULL}, + {NULL, 1073743880, "0"}, + {"secretTypeId", 1, NULL}, + {"pkcs-7-Data", 1073741831, NULL}, + {"pkcs-7-EncryptedData", 1610612741, NULL}, + {"version", 1073741827, NULL}, + {"encryptedContentInfo", 1073741826, "pkcs-7-EncryptedContentInfo"}, + {"unprotectedAttrs", 536895490, "pkcs-7-UnprotectedAttributes"}, + {NULL, 4104, "1"}, + {"pkcs-7-EncryptedContentInfo", 1610612741, NULL}, + {"contentType", 1073741836, NULL}, + {"contentEncryptionAlgorithm", 1073741826, + "pkcs-7-ContentEncryptionAlgorithmIdentifier"}, + {"encryptedContent", 536895495, NULL}, + {NULL, 4104, "0"}, + {"pkcs-7-ContentEncryptionAlgorithmIdentifier", 1073741826, + "AlgorithmIdentifier"}, + {"pkcs-7-UnprotectedAttributes", 1612709903, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "Attribute"}, + {"ProxyCertInfo", 1610612741, NULL}, + {"pCPathLenConstraint", 1611153411, NULL}, + {"0", 10, "MAX"}, + {"proxyPolicy", 2, "ProxyPolicy"}, + {"ProxyPolicy", 1610612741, NULL}, + {"policyLanguage", 1073741836, NULL}, + {"policy", 16391, NULL}, + {"certificatePolicies", 1612709899, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "PolicyInformation"}, + {"PolicyInformation", 1610612741, NULL}, + {"policyIdentifier", 1073741836, NULL}, + {"policyQualifiers", 538984459, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "PolicyQualifierInfo"}, + {"PolicyQualifierInfo", 1610612741, NULL}, + {"policyQualifierId", 1073741836, NULL}, + {"qualifier", 541065229, NULL}, + {"policyQualifierId", 1, NULL}, + {"CPSuri", 1073741853, NULL}, + {"UserNotice", 1610612741, NULL}, + {"noticeRef", 1073758210, "NoticeReference"}, + {"explicitText", 16386, "DisplayText"}, + {"NoticeReference", 1610612741, NULL}, + {"organization", 1073741826, "DisplayText"}, + {"noticeNumbers", 536870923, NULL}, + {NULL, 3, NULL}, + {"DisplayText", 1610612754, NULL}, + {"ia5String", 1612709917, NULL}, + {"200", 524298, "1"}, + {"visibleString", 1612709923, NULL}, + {"200", 524298, "1"}, + {"bmpString", 1612709921, NULL}, + {"200", 524298, "1"}, + {"utf8String", 538968098, NULL}, + {"200", 524298, "1"}, + {"OCSPRequest", 1610612741, NULL}, + {"tbsRequest", 1073741826, "TBSRequest"}, + {"optionalSignature", 536895490, "Signature"}, + {NULL, 2056, "0"}, + {"TBSRequest", 1610612741, NULL}, + {"version", 1610653699, NULL}, + {NULL, 1073741833, "0"}, + {NULL, 2056, "0"}, + {"requestorName", 1610637314, "GeneralName"}, + {NULL, 2056, "1"}, + {"requestList", 1610612747, NULL}, + {NULL, 2, "Request"}, + {"requestExtensions", 536895490, "Extensions"}, + {NULL, 2056, "2"}, + {"Signature", 1610612741, NULL}, + {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"signature", 1073741830, NULL}, + {"certs", 536895499, NULL}, + {NULL, 1073743880, "0"}, + {NULL, 2, "Certificate"}, + {"Request", 1610612741, NULL}, + {"reqCert", 1073741826, "CertID"}, + {"singleRequestExtensions", 536895490, "Extensions"}, + {NULL, 2056, "0"}, + {"CertID", 1610612741, NULL}, + {"hashAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"issuerNameHash", 1073741831, NULL}, + {"issuerKeyHash", 1073741831, NULL}, + {"serialNumber", 2, "CertificateSerialNumber"}, + {"OCSPResponse", 1610612741, NULL}, + {"responseStatus", 1073741826, "OCSPResponseStatus"}, + {"responseBytes", 536895490, "ResponseBytes"}, + {NULL, 2056, "0"}, + {"OCSPResponseStatus", 1610874901, NULL}, + {"successful", 1073741825, "0"}, + {"malformedRequest", 1073741825, "1"}, + {"internalError", 1073741825, "2"}, + {"tryLater", 1073741825, "3"}, + {"sigRequired", 1073741825, "5"}, + {"unauthorized", 1, "6"}, + {"ResponseBytes", 1610612741, NULL}, + {"responseType", 1073741836, NULL}, + {"response", 7, NULL}, + {"BasicOCSPResponse", 1610612741, NULL}, + {"tbsResponseData", 1073741826, "ResponseData"}, + {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, + {"signature", 1073741830, NULL}, + {"certs", 536895499, NULL}, + {NULL, 1073743880, "0"}, + {NULL, 2, "Certificate"}, + {"ResponseData", 1610612741, NULL}, + {"version", 1610653699, NULL}, + {NULL, 1073741833, "0"}, + {NULL, 2056, "0"}, + {"responderID", 1073741826, "ResponderID"}, + {"producedAt", 1073741861, NULL}, + {"responses", 1610612747, NULL}, + {NULL, 2, "SingleResponse"}, + {"responseExtensions", 536895490, "Extensions"}, + {NULL, 2056, "1"}, + {"ResponderID", 1610612754, NULL}, + {"byName", 1610620939, NULL}, + {NULL, 1073743880, "1"}, + {NULL, 2, "RelativeDistinguishedName"}, + {"byKey", 536879111, NULL}, + {NULL, 2056, "2"}, + {"SingleResponse", 1610612741, NULL}, + {"certID", 1073741826, "CertID"}, + {"certStatus", 1073741826, "CertStatus"}, + {"thisUpdate", 1073741861, NULL}, + {"nextUpdate", 1610637349, NULL}, + {NULL, 2056, "0"}, + {"singleExtensions", 536895490, "Extensions"}, + {NULL, 2056, "1"}, + {"CertStatus", 1610612754, NULL}, + {"good", 1610620948, NULL}, + {NULL, 4104, "0"}, + {"revoked", 1610620930, "RevokedInfo"}, + {NULL, 4104, "1"}, + {"unknown", 536879106, "UnknownInfo"}, + {NULL, 4104, "2"}, + {"RevokedInfo", 1610612741, NULL}, + {"revocationTime", 1073741861, NULL}, + {"revocationReason", 537157653, NULL}, + {NULL, 1073743880, "0"}, + {"unspecified", 1, "0"}, + {"UnknownInfo", 1073741844, NULL}, + {"NameConstraints", 1610612741, NULL}, + {"permittedSubtrees", 1610637314, "GeneralSubtrees"}, + {NULL, 4104, "0"}, + {"excludedSubtrees", 536895490, "GeneralSubtrees"}, + {NULL, 4104, "1"}, + {"GeneralSubtrees", 1612709899, NULL}, + {"MAX", 1074266122, "1"}, + {NULL, 2, "GeneralSubtree"}, + {"GeneralSubtree", 1610612741, NULL}, + {"base", 1073741826, "GeneralName"}, + {"minimum", 1610653699, NULL}, + {NULL, 1073741833, "0"}, + {NULL, 4104, "0"}, + {"maximum", 536895491, NULL}, + {NULL, 4104, "1"}, + {"TlsFeatures", 536870923, NULL}, + {NULL, 3, NULL}, + {NULL, 0, NULL} +}; + +int +LLVMFuzzerTestOneInput (const uint8_t * data, size_t size) +{ + static asn1_node _gnutls_pkix1_asn = NULL; + static int first = 1; + asn1_node dn; + int res, start, end; + + if (size > 10000) /* same as max_len = 10000 in .options file */ + return 0; + + if (first) + { + first = 0; + + /* from _gnutls_global_init() */ + res = asn1_array2tree (pkix_asn1_tab, &_gnutls_pkix1_asn, NULL); + assert (res == ASN1_SUCCESS); + } + + /* from cert_get_issuer_dn() */ + if ((res = + asn1_create_element (_gnutls_pkix1_asn, "PKIX1.Certificate", + &dn)) != ASN1_SUCCESS) + { + goto out; + } + + /* from cert_get_issuer_dn() */ + res = asn1_der_decoding (&dn, data, size, NULL); + if (res != ASN1_SUCCESS) + { + goto out; + } + + /* from cert_get_issuer_dn() */ + res = + asn1_der_decoding_startEnd (dn, data, size, "tbsCertificate.issuer", + &start, &end); + if (res != ASN1_SUCCESS) + { + goto out; + } + +out: + asn1_delete_structure (&dn); + + return 0; +} |