forked from wolfSSL/wolfssl
add fuzzer CYASSL* and fuzzer ctx
This commit is contained in:
@ -1971,6 +1971,7 @@ struct CYASSL {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
CallbackFuzzer fuzzerCb; /* for testing with using fuzzer */
|
CallbackFuzzer fuzzerCb; /* for testing with using fuzzer */
|
||||||
|
void* fuzzerCtx; /* user defined pointer */
|
||||||
#endif
|
#endif
|
||||||
#ifdef KEEP_PEER_CERT
|
#ifdef KEEP_PEER_CERT
|
||||||
CYASSL_X509 peerCert; /* X509 peer cert */
|
CYASSL_X509 peerCert; /* X509 peer cert */
|
||||||
|
@ -939,10 +939,10 @@ enum fuzzer_type {
|
|||||||
FUZZ_HEAD = 4
|
FUZZ_HEAD = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef int (*CallbackFuzzer)(const unsigned char* buf, int sz, int type,
|
typedef int (*CallbackFuzzer)(CYASSL* ssl, const unsigned char* buf, int sz,
|
||||||
void* ctx);
|
int type, void* fuzzCtx);
|
||||||
|
|
||||||
CYASSL_API void CyaSSL_SetFuzzerCb(CYASSL* ssl, CallbackFuzzer cbf);
|
CYASSL_API void CyaSSL_SetFuzzerCb(CYASSL* ssl, CallbackFuzzer cbf, void* fCtx);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CYASSL_API void CyaSSL_SetIORecv(CYASSL_CTX*, CallbackIORecv);
|
CYASSL_API void CyaSSL_SetIORecv(CYASSL_CTX*, CallbackIORecv);
|
||||||
|
@ -1754,6 +1754,7 @@ int InitSSL(CYASSL* ssl, CYASSL_CTX* ctx)
|
|||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
ssl->fuzzerCb = NULL;
|
ssl->fuzzerCb = NULL;
|
||||||
|
ssl->fuzzerCtx = NULL;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_PK_CALLBACKS
|
#ifdef HAVE_PK_CALLBACKS
|
||||||
#ifdef HAVE_ECC
|
#ifdef HAVE_ECC
|
||||||
@ -2532,7 +2533,7 @@ static int HashOutput(CYASSL* ssl, const byte* output, int sz, int ivSz)
|
|||||||
|
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(output, sz, FUZZ_HASH, ssl->ctx);
|
ssl->fuzzerCb(ssl, output, sz, FUZZ_HASH, ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CYASSL_DTLS
|
#ifdef CYASSL_DTLS
|
||||||
if (ssl->options.dtls) {
|
if (ssl->options.dtls) {
|
||||||
@ -2961,8 +2962,8 @@ static int GetRecordHeader(CYASSL* ssl, const byte* input, word32* inOutIdx,
|
|||||||
if (!ssl->options.dtls) {
|
if (!ssl->options.dtls) {
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(input + *inOutIdx, RECORD_HEADER_SZ, FUZZ_HEAD,
|
ssl->fuzzerCb(ssl, input + *inOutIdx, RECORD_HEADER_SZ, FUZZ_HEAD,
|
||||||
ssl->ctx);
|
ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
XMEMCPY(rh, input + *inOutIdx, RECORD_HEADER_SZ);
|
XMEMCPY(rh, input + *inOutIdx, RECORD_HEADER_SZ);
|
||||||
*inOutIdx += RECORD_HEADER_SZ;
|
*inOutIdx += RECORD_HEADER_SZ;
|
||||||
@ -2981,9 +2982,9 @@ static int GetRecordHeader(CYASSL* ssl, const byte* input, word32* inOutIdx,
|
|||||||
*inOutIdx += LENGTH_SZ;
|
*inOutIdx += LENGTH_SZ;
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(input + *inOutIdx - LENGTH_SZ - 8 - ENUM_LEN -
|
ssl->fuzzerCb(ssl, input + *inOutIdx - LENGTH_SZ - 8 - ENUM_LEN -
|
||||||
VERSION_SZ, ENUM_LEN + VERSION_SZ + 8 + LENGTH_SZ,
|
VERSION_SZ, ENUM_LEN + VERSION_SZ + 8 + LENGTH_SZ,
|
||||||
FUZZ_HEAD, ssl->ctx);
|
FUZZ_HEAD, ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -5133,7 +5134,7 @@ static INLINE int Encrypt(CYASSL* ssl, byte* out, const byte* input, word16 sz)
|
|||||||
|
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(input, sz, FUZZ_ENCRYPT, ssl->ctx);
|
ssl->fuzzerCb(ssl, input, sz, FUZZ_ENCRYPT, ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (ssl->specs.bulk_cipher_algorithm) {
|
switch (ssl->specs.bulk_cipher_algorithm) {
|
||||||
@ -6415,7 +6416,7 @@ static int SSL_hmac(CYASSL* ssl, byte* digest, const byte* in, word32 sz,
|
|||||||
|
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(in, sz, FUZZ_HMAC, ssl->ctx);
|
ssl->fuzzerCb(ssl, in, sz, FUZZ_HMAC, ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
XMEMSET(seq, 0, SEQ_SZ);
|
XMEMSET(seq, 0, SEQ_SZ);
|
||||||
@ -10573,7 +10574,8 @@ static void PickHashSigAlgo(CYASSL* ssl,
|
|||||||
|
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(output + preSigIdx, preSigSz, FUZZ_SIGNATURE, ssl->ctx);
|
ssl->fuzzerCb(ssl, output + preSigIdx, preSigSz, FUZZ_SIGNATURE,
|
||||||
|
ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* do signature */
|
/* do signature */
|
||||||
@ -10930,7 +10932,8 @@ static void PickHashSigAlgo(CYASSL* ssl,
|
|||||||
|
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(output + preSigIdx, preSigSz, FUZZ_SIGNATURE, ssl->ctx);
|
ssl->fuzzerCb(ssl, output + preSigIdx, preSigSz, FUZZ_SIGNATURE,
|
||||||
|
ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* do signature */
|
/* do signature */
|
||||||
|
@ -11502,10 +11502,12 @@ const byte* CyaSSL_get_sessionID(const CYASSL_SESSION* session)
|
|||||||
#endif /* SESSION_CERTS */
|
#endif /* SESSION_CERTS */
|
||||||
|
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
void CyaSSL_SetFuzzerCb(CYASSL* ssl, CallbackFuzzer cbf)
|
void CyaSSL_SetFuzzerCb(CYASSL* ssl, CallbackFuzzer cbf, void* fCtx)
|
||||||
{
|
{
|
||||||
if (ssl)
|
if (ssl) {
|
||||||
ssl->fuzzerCb = cbf;
|
ssl->fuzzerCb = cbf;
|
||||||
|
ssl->fuzzerCtx = fCtx;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -679,7 +679,7 @@ int TLS_hmac(CYASSL* ssl, byte* digest, const byte* in, word32 sz,
|
|||||||
|
|
||||||
#ifdef HAVE_FUZZER
|
#ifdef HAVE_FUZZER
|
||||||
if (ssl->fuzzerCb)
|
if (ssl->fuzzerCb)
|
||||||
ssl->fuzzerCb(in, sz, FUZZ_HMAC, ssl->ctx);
|
ssl->fuzzerCb(ssl, in, sz, FUZZ_HMAC, ssl->fuzzerCtx);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CyaSSL_SetTlsHmacInner(ssl, myInner, sz, content, verify);
|
CyaSSL_SetTlsHmacInner(ssl, myInner, sz, content, verify);
|
||||||
|
Reference in New Issue
Block a user