From 8f9c4ec4a245751aa7aaa71673b68032f123bf21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sat, 30 Mar 2019 11:40:30 +0100 Subject: [PATCH] oss-fuzz: max size of input data to analyze 10000 --- oss-fuzz/main.cpp | 10 ++++++---- oss-fuzz/translate.cpp | 3 ++- oss-fuzz/type2.cpp | 24 ++++++++++++++---------- runastyle | 2 ++ 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/oss-fuzz/main.cpp b/oss-fuzz/main.cpp index ec40bd60e..e25050c84 100644 --- a/oss-fuzz/main.cpp +++ b/oss-fuzz/main.cpp @@ -27,10 +27,12 @@ public: }; -extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t dataSize) { - - CppcheckExecutor cppcheckExecutor; - cppcheckExecutor.run(generateCode2(data, dataSize)); +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t dataSize) +{ + if (dataSize < 10000) { + CppcheckExecutor cppcheckExecutor; + cppcheckExecutor.run(generateCode2(data, dataSize)); + } return 0; } diff --git a/oss-fuzz/translate.cpp b/oss-fuzz/translate.cpp index 4edd2b568..6167ffced 100644 --- a/oss-fuzz/translate.cpp +++ b/oss-fuzz/translate.cpp @@ -4,7 +4,8 @@ #include "type2.h" -int main(int argc, char **argv) { +int main(int argc, char **argv) +{ const char *filename = argc==2 ? argv[1] : nullptr; if (!filename) { diff --git a/oss-fuzz/type2.cpp b/oss-fuzz/type2.cpp index c127ad2f8..d5cc04d15 100644 --- a/oss-fuzz/type2.cpp +++ b/oss-fuzz/type2.cpp @@ -4,7 +4,8 @@ -static int getValue(const uint8_t *data, size_t dataSize, uint8_t maxValue, bool *done = nullptr) { +static int getValue(const uint8_t *data, size_t dataSize, uint8_t maxValue, bool *done = nullptr) +{ static size_t pos; // current "data" position static int dataValue; // value extracted from data static int ones; // ones. This variable tracks if we need to add more stuff in "dataValue". @@ -29,14 +30,15 @@ static int getValue(const uint8_t *data, size_t dataSize, uint8_t maxValue, bool return ret; } -static std::string generateExpression2_lvalue(const uint8_t *data, size_t dataSize) { +static std::string generateExpression2_lvalue(const uint8_t *data, size_t dataSize) +{ return "var" + std::to_string(1 + getValue(data, dataSize, 5)); } -static std::string generateExpression2_Op(const uint8_t *data, size_t dataSize, int numberOfGlobalConstants) { +static std::string generateExpression2_Op(const uint8_t *data, size_t dataSize, int numberOfGlobalConstants) +{ std::ostringstream code; - switch (getValue(data, dataSize, 3)) - { + switch (getValue(data, dataSize, 3)) { case 0: code << generateExpression2_lvalue(data, dataSize); break; @@ -50,7 +52,8 @@ static std::string generateExpression2_Op(const uint8_t *data, size_t dataSize, return code.str(); } -static std::string generateExpression2_Expr(const uint8_t *data, size_t dataSize, int numberOfGlobalConstants, int depth=0) { +static std::string generateExpression2_Expr(const uint8_t *data, size_t dataSize, int numberOfGlobalConstants, int depth=0) +{ ++depth; const unsigned int type = (depth > 3) ? 0 : getValue(data, dataSize, 3); const char binop[] = "=<>+-*/%&|^"; @@ -94,7 +97,8 @@ static std::string generateExpression2_Cond(const uint8_t *data, size_t dataSize } -static std::string functionStart() { +static std::string functionStart() +{ static int functionNumber; return "int f" + std::to_string(++functionNumber) + "()\n" "{\n"; @@ -112,8 +116,7 @@ static std::string generateExpression2_conditionalCode(const std::string &indent else code << indent << "{\n"; - for (int line = 0; line < 4 || indent.empty(); ++line) - { + for (int line = 0; line < 4 || indent.empty(); ++line) { bool done = false; const int type1 = getValue(data, dataSize, 8, &done); if (done) @@ -154,7 +157,8 @@ static std::string generateExpression2_conditionalCode(const std::string &indent return code.str(); } -std::string generateCode2(const uint8_t *data, size_t dataSize) { +std::string generateCode2(const uint8_t *data, size_t dataSize) +{ std::ostringstream code; // create global constants diff --git a/runastyle b/runastyle index 218cb1ab5..60a34865b 100755 --- a/runastyle +++ b/runastyle @@ -52,6 +52,8 @@ formatCplusplusRecursive "gui/test/*.cpp" formatCplusplusRecursive "gui/test/*.h" formatCplusplus "lib/*.cpp" formatCplusplus "lib/*.h" +formatCplusplus "oss-fuzz/*.cpp" +formatCplusplus "oss-fuzz/*.h" formatCplusplus "test/*.cpp" formatCplusplus "test/cfg/*.c" formatCplusplus "test/cfg/*.cpp"