Skip to content

Commit 7ba00f3

Browse files
committed
Initialize BIO methods at compile time
1 parent 6fcdead commit 7ba00f3

2 files changed

Lines changed: 29 additions & 16 deletions

File tree

src/bio.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1963,10 +1963,10 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
19631963

19641964
WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_md(void)
19651965
{
1966-
static WOLFSSL_BIO_METHOD meth;
1966+
static WOLFSSL_BIO_METHOD meth =
1967+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_MD);
19671968

19681969
WOLFSSL_ENTER("wolfSSL_BIO_f_md");
1969-
meth.type = WOLFSSL_BIO_MD;
19701970

19711971
return &meth;
19721972
}
@@ -1986,10 +1986,10 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
19861986

19871987
WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_buffer(void)
19881988
{
1989-
static WOLFSSL_BIO_METHOD meth;
1989+
static WOLFSSL_BIO_METHOD meth =
1990+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_BUFFER);
19901991

19911992
WOLFSSL_ENTER("wolfSSL_BIO_f_buffer");
1992-
meth.type = WOLFSSL_BIO_BUFFER;
19931993

19941994
return &meth;
19951995
}
@@ -2017,10 +2017,10 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
20172017

20182018
WOLFSSL_BIO_METHOD* wolfSSL_BIO_s_bio(void)
20192019
{
2020-
static WOLFSSL_BIO_METHOD bio_meth;
2020+
static WOLFSSL_BIO_METHOD bio_meth =
2021+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_BIO);
20212022

20222023
WOLFSSL_ENTER("wolfSSL_BIO_s_bio");
2023-
bio_meth.type = WOLFSSL_BIO_BIO;
20242024

20252025
return &bio_meth;
20262026
}
@@ -2029,10 +2029,10 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
20292029
#ifndef NO_FILESYSTEM
20302030
WOLFSSL_BIO_METHOD* wolfSSL_BIO_s_file(void)
20312031
{
2032-
static WOLFSSL_BIO_METHOD file_meth;
2032+
static WOLFSSL_BIO_METHOD file_meth =
2033+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_FILE);
20332034

20342035
WOLFSSL_ENTER("wolfSSL_BIO_s_file");
2035-
file_meth.type = WOLFSSL_BIO_FILE;
20362036

20372037
return &file_meth;
20382038
}
@@ -2041,21 +2041,21 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
20412041

20422042
WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_ssl(void)
20432043
{
2044-
static WOLFSSL_BIO_METHOD meth;
2044+
static WOLFSSL_BIO_METHOD meth =
2045+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_SSL);
20452046

20462047
WOLFSSL_ENTER("wolfSSL_BIO_f_ssl");
2047-
meth.type = WOLFSSL_BIO_SSL;
20482048

20492049
return &meth;
20502050
}
20512051

20522052

20532053
WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void)
20542054
{
2055-
static WOLFSSL_BIO_METHOD meth;
2055+
static WOLFSSL_BIO_METHOD meth =
2056+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_SOCKET);
20562057

20572058
WOLFSSL_ENTER("wolfSSL_BIO_s_socket");
2058-
meth.type = WOLFSSL_BIO_SOCKET;
20592059

20602060
return &meth;
20612061
}
@@ -2803,21 +2803,21 @@ WOLFSSL_BIO* wolfSSL_BIO_pop(WOLFSSL_BIO* bio)
28032803

28042804
WOLFSSL_BIO_METHOD* wolfSSL_BIO_s_mem(void)
28052805
{
2806-
static WOLFSSL_BIO_METHOD meth;
2806+
static WOLFSSL_BIO_METHOD meth =
2807+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_MEMORY);
28072808

28082809
WOLFSSL_ENTER("wolfSSL_BIO_s_mem");
2809-
meth.type = WOLFSSL_BIO_MEMORY;
28102810

28112811
return &meth;
28122812
}
28132813

28142814

28152815
WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_base64(void)
28162816
{
2817-
static WOLFSSL_BIO_METHOD meth;
2817+
static WOLFSSL_BIO_METHOD meth =
2818+
WOLFSSL_BIO_METHOD_INIT(WOLFSSL_BIO_BASE64);
28182819

28192820
WOLFSSL_ENTER("wolfSSL_BIO_f_base64");
2820-
meth.type = WOLFSSL_BIO_BASE64;
28212821

28222822
return &meth;
28232823
}

wolfssl/ssl.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,19 @@ struct WOLFSSL_BIO_METHOD {
525525
wolfssl_BIO_meth_ctrl_info_cb ctrlInfoCb;
526526
};
527527

528+
#define WOLFSSL_BIO_METHOD_INIT(bio_type) { \
529+
.type = bio_type, \
530+
.name = { 0 }, \
531+
.writeCb = NULL, \
532+
.readCb = NULL, \
533+
.putsCb = NULL, \
534+
.getsCb = NULL, \
535+
.ctrlCb = NULL, \
536+
.createCb = NULL, \
537+
.freeCb = NULL, \
538+
.ctrlInfoCb = NULL, \
539+
}
540+
528541
/* wolfSSL BIO type */
529542
typedef long (*wolf_bio_info_cb)(WOLFSSL_BIO *bio, int event, const char *parg,
530543
int iarg, long larg, long return_value);

0 commit comments

Comments
 (0)