Beispiel #1
0
int LLVMFuzzerTestOneInput(const uint8_t* buf, size_t len)
{
    if (RAND_reset_for_fuzzing) {
        RAND_reset_for_fuzzing();
    }

    SSL* server = SSL_new(ctx);

    BIO* in = BIO_new(BIO_s_mem());
    BIO_write(in, buf, len);

    BIO* out = BIO_new(BIO_s_fd());
    BIO_set_fd(out, 1, BIO_NOCLOSE);

    SSL_set_bio(server, in, out);

    if (SSL_accept(server) == 1) {
        X509* peer;
        if ((peer = SSL_get_peer_certificate(server)) != NULL) {
            SSL_get_verify_result(server);
            X509_free(peer);
        }
        uint8_t tmp[1024 * 1024];
        for (;;) {
            ssize_t r = SSL_read(server, tmp, sizeof(tmp));
            if (r <= 0) {
                SSL_shutdown(server);
                break;
            }
            if (SSL_write(server, tmp, r) <= 0) {
                SSL_shutdown(server);
                break;
            }
#ifndef OPENSSL_NO_HEARTBEATS
            SSL_heartbeat(server);
#endif /* ifndef OPENSSL_NO_HEARTBEATS */
        }
    } else {
        ERR_print_errors_fp(stderr);
    }

    SSL_free(server);

    return 0;
}
Beispiel #2
0
void ssl_client_heartbeat(ssl_client * cli){
  SSL_heartbeat(cli->ssl);
}
Beispiel #3
0
void ssl_server_heartbeat(ssl_server_client * cli){
  SSL_heartbeat(cli->ssl);
}