mirror of https://github.com/wolfSSL/wolfssl.git
Merge pull request #1732 from kojo1/Ticket-4169-2
Ticket 4169: eliminate ssl->CBIORecv/Send overwritten in SSL_set_biopull/1740/head
commit
782ea74fbf
|
@ -1382,6 +1382,7 @@ int InitSSL_Ctx(WOLFSSL_CTX* ctx, WOLFSSL_METHOD* method, void* heap)
|
||||||
#endif
|
#endif
|
||||||
#ifdef OPENSSL_EXTRA
|
#ifdef OPENSSL_EXTRA
|
||||||
ctx->verifyDepth = MAX_CHAIN_DEPTH;
|
ctx->verifyDepth = MAX_CHAIN_DEPTH;
|
||||||
|
ctx->cbioFlag = WOLFSSL_CBIO_NONE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef WOLFSSL_USER_IO
|
#ifndef WOLFSSL_USER_IO
|
||||||
|
@ -4645,6 +4646,7 @@ int InitSSL(WOLFSSL* ssl, WOLFSSL_CTX* ctx, int writeDup)
|
||||||
/* copy over application session context ID */
|
/* copy over application session context ID */
|
||||||
ssl->sessionCtxSz = ctx->sessionCtxSz;
|
ssl->sessionCtxSz = ctx->sessionCtxSz;
|
||||||
XMEMCPY(ssl->sessionCtx, ctx->sessionCtx, ctx->sessionCtxSz);
|
XMEMCPY(ssl->sessionCtx, ctx->sessionCtx, ctx->sessionCtxSz);
|
||||||
|
ssl->cbioFlag = ctx->cbioFlag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
InitCiphers(ssl);
|
InitCiphers(ssl);
|
||||||
|
|
|
@ -11116,10 +11116,12 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||||
ssl->biowr = wr;
|
ssl->biowr = wr;
|
||||||
|
|
||||||
/* set SSL to use BIO callbacks instead */
|
/* set SSL to use BIO callbacks instead */
|
||||||
if (rd != NULL && rd->type != WOLFSSL_BIO_SOCKET) {
|
if (((ssl->cbioFlag & WOLFSSL_CBIO_RECV) == 0) &&
|
||||||
|
(rd != NULL && rd->type != WOLFSSL_BIO_SOCKET)) {
|
||||||
ssl->CBIORecv = BioReceive;
|
ssl->CBIORecv = BioReceive;
|
||||||
}
|
}
|
||||||
if (wr != NULL && wr->type != WOLFSSL_BIO_SOCKET) {
|
if (((ssl->cbioFlag & WOLFSSL_CBIO_SEND) == 0) &&
|
||||||
|
(wr != NULL && wr->type != WOLFSSL_BIO_SOCKET)) {
|
||||||
ssl->CBIOSend = BioSend;
|
ssl->CBIOSend = BioSend;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1433,12 +1433,18 @@ int EmbedCrlLookup(WOLFSSL_CRL* crl, const char* url, int urlSz)
|
||||||
WOLFSSL_API void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX *ctx, CallbackIORecv CBIORecv)
|
WOLFSSL_API void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX *ctx, CallbackIORecv CBIORecv)
|
||||||
{
|
{
|
||||||
ctx->CBIORecv = CBIORecv;
|
ctx->CBIORecv = CBIORecv;
|
||||||
|
#ifdef OPENSSL_EXTRA
|
||||||
|
ctx->cbioFlag |= WOLFSSL_CBIO_RECV;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WOLFSSL_API void wolfSSL_CTX_SetIOSend(WOLFSSL_CTX *ctx, CallbackIOSend CBIOSend)
|
WOLFSSL_API void wolfSSL_CTX_SetIOSend(WOLFSSL_CTX *ctx, CallbackIOSend CBIOSend)
|
||||||
{
|
{
|
||||||
ctx->CBIOSend = CBIOSend;
|
ctx->CBIOSend = CBIOSend;
|
||||||
|
#ifdef OPENSSL_EXTRA
|
||||||
|
ctx->cbioFlag |= WOLFSSL_CBIO_SEND;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2414,6 +2414,14 @@ enum KeyUpdateRequest {
|
||||||
#endif /* WOLFSSL_TLS13 */
|
#endif /* WOLFSSL_TLS13 */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef OPENSSL_EXTRA
|
||||||
|
enum SetCBIO {
|
||||||
|
WOLFSSL_CBIO_NONE = 0,
|
||||||
|
WOLFSSL_CBIO_RECV = 0x1,
|
||||||
|
WOLFSSL_CBIO_SEND = 0x2,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/* wolfSSL context type */
|
/* wolfSSL context type */
|
||||||
struct WOLFSSL_CTX {
|
struct WOLFSSL_CTX {
|
||||||
WOLFSSL_METHOD* method;
|
WOLFSSL_METHOD* method;
|
||||||
|
@ -2507,6 +2515,7 @@ struct WOLFSSL_CTX {
|
||||||
const unsigned char *alpn_cli_protos;/* ALPN client protocol list */
|
const unsigned char *alpn_cli_protos;/* ALPN client protocol list */
|
||||||
unsigned int alpn_cli_protos_len;
|
unsigned int alpn_cli_protos_len;
|
||||||
byte sessionCtxSz;
|
byte sessionCtxSz;
|
||||||
|
byte cbioFlag; /* WOLFSSL_CBIO_RECV/SEND: CBIORecv/Send is set */
|
||||||
CallbackInfoState* CBIS; /* used to get info about SSL state */
|
CallbackInfoState* CBIS; /* used to get info about SSL state */
|
||||||
#endif
|
#endif
|
||||||
CallbackIORecv CBIORecv;
|
CallbackIORecv CBIORecv;
|
||||||
|
@ -2652,7 +2661,6 @@ struct WOLFSSL_CTX {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
WOLFSSL_LOCAL
|
WOLFSSL_LOCAL
|
||||||
WOLFSSL_CTX* wolfSSL_CTX_new_ex(WOLFSSL_METHOD* method, void* heap);
|
WOLFSSL_CTX* wolfSSL_CTX_new_ex(WOLFSSL_METHOD* method, void* heap);
|
||||||
WOLFSSL_LOCAL
|
WOLFSSL_LOCAL
|
||||||
|
@ -3542,6 +3550,9 @@ struct WOLFSSL {
|
||||||
WriteDup* dupWrite; /* valid pointer indicates ON */
|
WriteDup* dupWrite; /* valid pointer indicates ON */
|
||||||
/* side that decrements dupCount to zero frees overall structure */
|
/* side that decrements dupCount to zero frees overall structure */
|
||||||
byte dupSide; /* write side or read side */
|
byte dupSide; /* write side or read side */
|
||||||
|
#endif
|
||||||
|
#ifdef OPENSSL_EXTRA
|
||||||
|
byte cbioFlag; /* WOLFSSL_CBIO_RECV/SEND: CBIORecv/Send is set */
|
||||||
#endif
|
#endif
|
||||||
CallbackIORecv CBIORecv;
|
CallbackIORecv CBIORecv;
|
||||||
CallbackIOSend CBIOSend;
|
CallbackIOSend CBIOSend;
|
||||||
|
|
Loading…
Reference in New Issue