Commit 5068cfbd authored by Matt Caswell's avatar Matt Caswell
Browse files

Don't crash if an unrecognised digest is used with dsa_paramgen_md

parent a3dbbe47
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -230,10 +230,16 @@ static int pkey_dsa_ctrl_str(EVP_PKEY_CTX *ctx,
                                 EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits,
                                 NULL);
    }
    if (!strcmp(type, "dsa_paramgen_md")) {
    if (strcmp(type, "dsa_paramgen_md") == 0) {
        const EVP_MD *md = EVP_get_digestbyname(value);

        if (md == NULL) {
            DSAerr(DSA_F_PKEY_DSA_CTRL_STR, DSA_R_INVALID_DIGEST_TYPE);
            return 0;
        }
        return EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN,
                                 EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0,
                                 (void *)EVP_get_digestbyname(value));
                                 (void *)md);
    }
    return -2;
}