Commit e10aeee1 authored by Kurt Roeckx's avatar Kurt Roeckx
Browse files

fuzzers: print and convert it back



Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
GH: #1323
parent 5e3553c2
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -69,11 +69,33 @@ int FuzzerInitialize(int *argc, char ***argv) {
int FuzzerTestOneInput(const uint8_t *buf, size_t len) {
    int n;

    ASN1_PCTX *pctx = ASN1_PCTX_new();

    ASN1_PCTX_set_flags(pctx, ASN1_PCTX_FLAGS_SHOW_ABSENT |
        ASN1_PCTX_FLAGS_SHOW_SEQUENCE | ASN1_PCTX_FLAGS_SHOW_SSOF |
        ASN1_PCTX_FLAGS_SHOW_TYPE | ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME);
    ASN1_PCTX_set_str_flags(pctx, ASN1_STRFLGS_UTF8_CONVERT |
        ASN1_STRFLGS_SHOW_TYPE | ASN1_STRFLGS_DUMP_ALL);

    for (n = 0; item_type[n] != NULL; ++n) {
        const uint8_t *b = buf;
        unsigned char *der = NULL;
        const ASN1_ITEM *i = ASN1_ITEM_ptr(item_type[n]);
        ASN1_VALUE *o = ASN1_item_d2i(NULL, &b, len, i);

        if (o != NULL) {
            BIO *bio = BIO_new(BIO_s_null());
            ASN1_item_print(bio, o, 4, i, pctx);
            BIO_free(bio);

            ASN1_item_i2d(o, &der, i);
            OPENSSL_free(der);

            ASN1_item_free(o, i);
        }
    }

    ASN1_PCTX_free(pctx);

    return 0;
}
+11 −1
Original line number Diff line number Diff line
@@ -22,7 +22,17 @@ int FuzzerInitialize(int *argc, char ***argv) {

int FuzzerTestOneInput(const uint8_t *buf, size_t len) {
    const uint8_t **pp = &buf;
    unsigned char *der = NULL;
    STACK_OF(SCT) *scts = d2i_SCT_LIST(NULL, pp, len);
    if (scts != NULL) {
        BIO *bio = BIO_new(BIO_s_null());
        SCT_LIST_print(scts, bio, 4, "\n", NULL);
        BIO_free(bio);

        i2d_SCT_LIST(scts, &der);
        OPENSSL_free(der);

        SCT_LIST_free(scts);
    }
    return 0;
}