From 07d909b5f0eda8e1db69cf4f487d5dd7e763ba45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Mon, 3 Sep 2018 13:56:11 -0700 Subject: [PATCH] Fixed crash on NULL dereference. --- 3rdparty/fcpp/cpp6.c | 2 +- scripts/shaderc.lua | 1 + tools/shaderc/shaderc.cpp | 7 ++++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/3rdparty/fcpp/cpp6.c b/3rdparty/fcpp/cpp6.c index ddb78867f..bb1de15b8 100644 --- a/3rdparty/fcpp/cpp6.c +++ b/3rdparty/fcpp/cpp6.c @@ -1110,7 +1110,7 @@ void fpp_domsg(struct Global *global, ; tp = file ? file->filename : 0; fpp_Error(global, "%s\"%s\", line %d: %s: ", - MSG_PREFIX, tp, global->infile->fp?global->line:file->line, severity); + MSG_PREFIX, tp, global->infile?(global->infile->fp?global->line:file->line):0, severity); if(global->error) global->error(global->userdata, ErrorMessage[error], arg); #if defined(UNIX) diff --git a/scripts/shaderc.lua b/scripts/shaderc.lua index 02f7ae67b..81334cf2e 100644 --- a/scripts/shaderc.lua +++ b/scripts/shaderc.lua @@ -334,6 +334,7 @@ project "fcpp" "NWORK=65536", "NBUFF=65536", "OLD_PREPROCESSOR=0", + "MSG_PREFIX=\"Preprocessor: \"", } files { diff --git a/tools/shaderc/shaderc.cpp b/tools/shaderc/shaderc.cpp index b4d8e9262..979b5d4c4 100644 --- a/tools/shaderc/shaderc.cpp +++ b/tools/shaderc/shaderc.cpp @@ -1149,9 +1149,14 @@ namespace bgfx // To avoid commented code being recognized as used feature, // first preprocess pass is used to strip all comments before // substituting code. - preprocessor.run(data); + bool ok = preprocessor.run(data); delete [] data; + if (!ok) + { + return false; + } + size = (uint32_t)preprocessor.m_preprocessed.size(); data = new char[size+padding+1]; bx::memCopy(data, preprocessor.m_preprocessed.c_str(), size);