From 08a05d3ab95a630e35cbdd16a2a7cef066ca6e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 6 Feb 2019 14:10:19 +0200 Subject: [PATCH] Fix use of uninitialized variables Building with optimization in debug mode revealed code that could in theory result in undefined behavior. --- include/maxscale/router.hh | 2 +- server/modules/filter/cache/test/testkeygeneration.cc | 2 +- server/modules/filter/hintfilter/hintparser.cc | 4 +++- server/modules/filter/tpmfilter/tpmfilter.cc | 2 +- .../protocol/MySQL/mariadbclient/setsqlmodeparser.hh | 2 +- server/modules/routing/avrorouter/avro_schema.cc | 3 ++- server/modules/routing/binlogrouter/blr_master.cc | 6 +++--- 7 files changed, 12 insertions(+), 9 deletions(-) diff --git a/include/maxscale/router.hh b/include/maxscale/router.hh index 278cfc40f..b4eb1a5e8 100644 --- a/include/maxscale/router.hh +++ b/include/maxscale/router.hh @@ -149,7 +149,7 @@ public: static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* pInstance, MXS_SESSION* pSession) { RouterType* pRouter = static_cast(pInstance); - RouterSessionType* pRouter_session; + RouterSessionType* pRouter_session = nullptr; MXS_EXCEPTION_GUARD(pRouter_session = pRouter->newSession(pSession)); diff --git a/server/modules/filter/cache/test/testkeygeneration.cc b/server/modules/filter/cache/test/testkeygeneration.cc index f823e5c6e..b9ab5bec9 100644 --- a/server/modules/filter/cache/test/testkeygeneration.cc +++ b/server/modules/filter/cache/test/testkeygeneration.cc @@ -123,7 +123,7 @@ int test(StorageFactory& factory, istream& in) int main(int argc, char* argv[]) { int rv = EXIT_FAILURE; - StorageFactory* pFactory; + StorageFactory* pFactory = nullptr; if ((argc == 2) || (argc == 3)) { char* libdir = MXS_STRDUP("../../../../../query_classifier/qc_sqlite/"); diff --git a/server/modules/filter/hintfilter/hintparser.cc b/server/modules/filter/hintfilter/hintparser.cc index e302eaa02..09a06f14d 100644 --- a/server/modules/filter/hintfilter/hintparser.cc +++ b/server/modules/filter/hintfilter/hintparser.cc @@ -131,7 +131,9 @@ HINT* hint_parser(HINT_SESSION* session, GWBUF* request) int len, residual, state; int found, escape, quoted, squoted; HINT* rval = NULL; - char* pname, * lvalue, * hintname = NULL; + char* pname = nullptr; + char* lvalue = nullptr; + char* hintname = nullptr; GWBUF* buf; HINT_TOKEN* tok; HINT_MODE mode = HM_EXECUTE; diff --git a/server/modules/filter/tpmfilter/tpmfilter.cc b/server/modules/filter/tpmfilter/tpmfilter.cc index 711e81779..7ec410382 100644 --- a/server/modules/filter/tpmfilter/tpmfilter.cc +++ b/server/modules/filter/tpmfilter/tpmfilter.cc @@ -740,7 +740,7 @@ static void destroyInstance(MXS_FILTER* instance) static void checkNamedPipe(TPM_INSTANCE* inst) { - int ret; + int ret = 0; char buffer[2]; char buf[4096]; char* named_pipe = inst->named_pipe; diff --git a/server/modules/protocol/MySQL/mariadbclient/setsqlmodeparser.hh b/server/modules/protocol/MySQL/mariadbclient/setsqlmodeparser.hh index a5a86412f..635469358 100644 --- a/server/modules/protocol/MySQL/mariadbclient/setsqlmodeparser.hh +++ b/server/modules/protocol/MySQL/mariadbclient/setsqlmodeparser.hh @@ -487,7 +487,7 @@ private: { result_t rv = IS_SET_SQL_MODE; - char c; + char c = *pSql_mode; do { diff --git a/server/modules/routing/avrorouter/avro_schema.cc b/server/modules/routing/avrorouter/avro_schema.cc index e0e95eff9..54eab9e67 100644 --- a/server/modules/routing/avrorouter/avro_schema.cc +++ b/server/modules/routing/avrorouter/avro_schema.cc @@ -58,7 +58,8 @@ bool json_extract_field_names(const char* filename, std::vector& columns bool rval = false; json_error_t err; err.text[0] = '\0'; - json_t* obj, * arr; + json_t* obj; + json_t* arr = nullptr; if ((obj = json_load_file(filename, 0, &err)) && (arr = json_object_get(obj, "fields"))) { diff --git a/server/modules/routing/binlogrouter/blr_master.cc b/server/modules/routing/binlogrouter/blr_master.cc index d06ca8948..cb081de60 100644 --- a/server/modules/routing/binlogrouter/blr_master.cc +++ b/server/modules/routing/binlogrouter/blr_master.cc @@ -3053,17 +3053,17 @@ void blr_handle_fake_gtid_list(ROUTER_INSTANCE* router, static bool blr_handle_missing_files(ROUTER_INSTANCE* router, char* new_file) { - char* fptr; + char* fptr = strrchr(new_file, '.'); uint32_t new_fseqno; uint32_t curr_fseqno; char buf[BLRM_BINLOG_NAME_STR_LEN]; char bigbuf[PATH_MAX + 1]; - if (*new_file - && (fptr = strrchr(new_file, '.')) == NULL) + if (fptr == NULL) { return false; } + if (router->fileroot) { MXS_FREE(router->fileroot);