From b58bfacae2fa51df50058997dac52859941971a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 29 Apr 2018 02:40:59 +0200 Subject: [PATCH] Second commint to embed openssl --- deps/Makefile | 2 +- lib/Makefile | 6 +++++- lib/mysql_data_stream.cpp | 20 ++++++++++++++++++++ src/Makefile | 14 ++++++++++---- src/main.cpp | 24 +++++++++++++++++++++++- 5 files changed, 59 insertions(+), 7 deletions(-) diff --git a/deps/Makefile b/deps/Makefile index 989b6fa24..853811f01 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -93,7 +93,7 @@ jemalloc: jemalloc/jemalloc/lib/libjemalloc.a mariadb-client-library/mariadb_client/libmariadb/libmariadbclient.a: libssl/openssl/libssl.a cd mariadb-client-library && rm -rf mariadb-connector-c-3.0.2-src cd mariadb-client-library && tar -zxf mariadb-connector-c-3.0.2-src.tar.gz - cd mariadb-client-library/mariadb_client && cmake . -DOPENSSL_ROOT_DIR=$(shell pwd)/../../libssl/openssl/ -DOPENSSL_LIBRARIES=$(shell pwd)/../../libssl/openssl/ . + cd mariadb-client-library/mariadb_client && cmake . -DOPENSSL_ROOT_DIR=$(shell pwd)/libssl/openssl/ -DOPENSSL_LIBRARIES=$(shell pwd)/libssl/openssl/ . # cd mariadb-client-library/mariadb_client && cmake . -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl # this is needed on MacOSX cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_lib.c < ../mariadb_lib.c.patch # cd mariadb-client-library/mariadb_client && patch libmariadb/net.c < ../net.c.patch diff --git a/lib/Makefile b/lib/Makefile index 846c5f481..9932c7636 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -35,13 +35,17 @@ COREDUMPER_IDIR=$(COREDUMPER_DIR)/src CURL_DIR=$(DEPS_PATH)/curl/curl CURL_IDIR=-I$(CURL_DIR)/include +SSL_DIR=$(DEPS_PATH)/libssl/openssl/ +SSL_IDIR=$(SSL_DIR)/include + + EV_DIR=$(DEPS_PATH)/libev/libev/ EV_IDIR=$(EV_DIR) IDIR=../include -IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(SQLITE3_DIR) -I$(PCRE_PATH) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) $(MICROHTTPD_IDIR) $(CURL_IDIR) -I$(EV_DIR) -I$(COREDUMPER_IDIR) +IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(SQLITE3_DIR) -I$(PCRE_PATH) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) $(MICROHTTPD_IDIR) $(CURL_IDIR) -I$(EV_DIR) -I$(COREDUMPER_IDIR) -I$(SSL_IDIR) LDIRS=-L$(JEMALLOC_PATH)/lib -L$(RE2_PATH)/obj -L$(INJECTION_PATH) diff --git a/lib/mysql_data_stream.cpp b/lib/mysql_data_stream.cpp index 3223832c9..d48beafaf 100644 --- a/lib/mysql_data_stream.cpp +++ b/lib/mysql_data_stream.cpp @@ -5,6 +5,26 @@ #define UNIX_PATH_MAX 108 #endif +struct bio_st { + const BIO_METHOD *method; + long (*callback) (struct bio_st *, int, const char *, int, long, long); + char *cb_arg; + int init; + int shutdown; + int flags; + int retry_reason; + int num; + void *ptr; + struct bio_st *next_bio; + struct bio_st *prev_bio; + int references; + uint64_t num_read; + uint64_t num_write; + CRYPTO_EX_DATA ex_data; + CRYPTO_RWLOCK *lock; +}; + + extern MySQL_Threads_Handler *GloMTH; #ifdef DEBUG diff --git a/src/Makefile b/src/Makefile index 211bf8d35..a0bf41db8 100644 --- a/src/Makefile +++ b/src/Makefile @@ -48,14 +48,19 @@ CURL_DIR=$(DEPS_PATH)/curl/curl/ CURL_IDIR=$(CURL_DIR)/include CURL_LDIR=$(CURL_DIR)/lib/.libs +SSL_DIR=$(DEPS_PATH)/libssl/openssl/ +SSL_IDIR=$(SSL_DIR)/include +SSL_LDIR=$(SSL_DIR) + + EV_DIR=$(DEPS_PATH)/libev/libev/ EV_IDIR=$(EV_DIR) EV_LDIR=$(EV_DIR)/.libs IDIR=../include LDIR=../lib -IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(DAEMONPATH_IDIR) -I$(SQLITE3_DIR) -I$(CLICKHOUSE_CPP_DIR) -I$(MICROHTTPD_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) $(LIBCONFIG_LDIR) -L$(RE2_PATH)/obj -L$(MARIADB_LDIR) -L$(DAEMONPATH_LDIR) -L$(PCRE_LDIR) -L$(MICROHTTPD_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR) -L$(COREDUMPER_LDIR) +IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(DAEMONPATH_IDIR) -I$(SQLITE3_DIR) -I$(CLICKHOUSE_CPP_DIR) -I$(MICROHTTPD_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -I$(SSL_IDIR) +LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) $(LIBCONFIG_LDIR) -L$(RE2_PATH)/obj -L$(MARIADB_LDIR) -L$(DAEMONPATH_LDIR) -L$(PCRE_LDIR) -L$(MICROHTTPD_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR) -L$(COREDUMPER_LDIR) -L$(SSL_LDIR) UNAME_S := $(shell uname -s) @@ -76,9 +81,9 @@ MYCXXFLAGS=-std=c++11 $(IDIRS) $(OPTZ) $(DEBUG) $(PSQLCH) LDFLAGS+= NOJEMALLOC := $(shell echo $(NOJEMALLOC)) ifeq ($(NOJEMALLOC),1) -MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lmicrohttpd -lcurl -lev -lcoredumper -Wl,-Bdynamic -lpthread -lm -lz -lrt -lcrypto -lssl $(EXTRALINK) +MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lmicrohttpd -lcurl -lev -lcoredumper -Wl,-Bdynamic -lpthread -lm -lz -lrt $(EXTRALINK) else -MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -ljemalloc -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lmicrohttpd -lcurl -lev -lcoredumper -Wl,-Bdynamic -lpthread -lm -lz -lrt -lcrypto -lssl $(EXTRALINK) +MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -ljemalloc -lconfig++ -lre2 -lpcrecpp -lpcre -lmariadbclient -lmicrohttpd -lcurl -lev -lcoredumper -Wl,-Bdynamic -lpthread -lm -lz -lrt $(EXTRALINK) endif ifeq ($(UNAME_S),Darwin) @@ -96,6 +101,7 @@ ifeq ($(UNAME_S),Darwin) LIBPROXYSQLAR=$(LDIR)/libproxysql.a ../deps/libmicrohttpd/libmicrohttpd/src/microhttpd/.libs/libmicrohttpd.a ../deps/pcre/pcre/.libs/libpcre.a ../deps/pcre/pcre/.libs/libpcrecpp.a ../deps/libdaemon/libdaemon/libdaemon/.libs/libdaemon.a ../deps/libconfig/libconfig/lib/.libs/libconfig++.a ../deps/libconfig/libconfig/lib/.libs/libconfig.a ../deps/sqlite3/sqlite3/sqlite3.o endif +LIBPROXYSQLAR+= $(SSL_LDIR)/libssl.a $(SSL_LDIR)/libcrypto.a ODIR= obj EXECUTABLE=proxysql diff --git a/src/main.cpp b/src/main.cpp index 6ae6a6bb9..5d2838bea 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,6 +23,29 @@ #undef dlerror #endif +struct dh_st { + int pad; + int version; + BIGNUM *p; + BIGNUM *g; + long length; + BIGNUM *pub_key; + BIGNUM *priv_key; + int flags; + BN_MONT_CTX *method_mont_p; + BIGNUM *q; + BIGNUM *j; + unsigned char *seed; + int seedlen; + BIGNUM *counter; + int references; + CRYPTO_EX_DATA ex_data; + const DH_METHOD *meth; + ENGINE *engine; + CRYPTO_RWLOCK *lock; +}; + + static pthread_mutex_t *lockarray; #include @@ -473,7 +496,6 @@ void ProxySQL_Main_init_SSL_module() { EVP_PKEY_free(pkey); - CRYPTO_mem_leaks(bio_err); BIO_free(bio_err); }