diff --git a/test/fuzztest/faultloggerdserver/faultloggerdcoredump_fuzzer/faultloggerd_coredump_service_fuzzer.cpp b/test/fuzztest/faultloggerdserver/faultloggerdcoredump_fuzzer/faultloggerd_coredump_service_fuzzer.cpp index 54519f22cc7cf215b0b3624d8ba5d8193d4a6642..324f9561d205ed4cfd427eae3a723787d7677dfc 100644 --- a/test/fuzztest/faultloggerdserver/faultloggerdcoredump_fuzzer/faultloggerd_coredump_service_fuzzer.cpp +++ b/test/fuzztest/faultloggerdserver/faultloggerdcoredump_fuzzer/faultloggerd_coredump_service_fuzzer.cpp @@ -25,17 +25,19 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) if (data == nullptr) { return 0; } - if (size >= sizeof (CoreDumpRequestData)) { - CoreDumpRequestData requestData = *reinterpret_cast(data); - FillRequestHeadData(requestData.head, FaultLoggerClientType::COREDUMP_CLIENT); - SendRequestToServer({&requestData, sizeof(CoreDumpRequestData)}); + if (size < sizeof (CoreDumpRequestData)) { + return 0; } + CoreDumpRequestData coredumpRequestData = *reinterpret_cast(data); + FillRequestHeadData(coredumpRequestData.head, FaultLoggerClientType::COREDUMP_CLIENT); + SendRequestToServer({&coredumpRequestData, sizeof(CoreDumpRequestData)}); - if (size >= sizeof (CoreDumpStatusData)) { - CoreDumpStatusData requestData = *reinterpret_cast(data); - FillRequestHeadData(requestData.head, FaultLoggerClientType::COREDUMP_PROCESS_DUMP_CLIENT); - SendRequestToServer({&requestData, sizeof(CoreDumpStatusData)}); + if (size < sizeof (CoreDumpStatusData)) { + return 0; } + CoreDumpStatusData coredumpStatusData = *reinterpret_cast(data); + FillRequestHeadData(coredumpStatusData.head, FaultLoggerClientType::COREDUMP_PROCESS_DUMP_CLIENT); + SendRequestToServer({&coredumpStatusData, sizeof(CoreDumpStatusData)}); return 0; } diff --git a/tools/crasher_c/dfx_crasher.c b/tools/crasher_c/dfx_crasher.c index 16daa6f52c2520ac315568884d814fa46a84c403..985f5185702cb9492024f5bae51c638d2b33da79 100644 --- a/tools/crasher_c/dfx_crasher.c +++ b/tools/crasher_c/dfx_crasher.c @@ -161,21 +161,21 @@ NOINLINE int MaxMethodNameTest12345678901234567890123456789012345678901234567890 return 0; } -NOINLINE int StackOverflow(void) +static int DoStackOverflow(int depth) { - printf("call StackOverflow\n"); - // for stack overflow test - char a[1024][1024][1024] = { { {'1'} } }; - char b[1024][1024][1024] = { { {'1'} } }; - char c[1024][1024][1024] = { { {'1'} } }; - char d[1024][1024][1024] = { { {'1'} } }; - printf("a[0][0] is %s\n", a[0][0]); - printf("b[0][0] is %s\n", b[0][0]); - printf("c[0][0] is %s\n", c[0][0]); - printf("d[0][0] is %s\n", d[0][0]); + char arr[1024][1024][1024] = { { {'1'} } }; + printf("arr[0][0] is %s\n", arr[0][0]); + if (depth > 0xFFFF) { + return 0; + } + return DoStackOverflow(depth + 1); +} - return 0; +NOINLINE int StackOverflow(void) +{ + printf("call StackOverflow\n"); + return DoStackOverflow(0); } NOINLINE int Oom(void) diff --git a/tools/process_dump/coredump/coredump_config_manager.h b/tools/process_dump/coredump/coredump_config_manager.h index 8b31a89b83c5731c5162db7a949826cf9c4e78a8..0c53044fe6a6f4af0d70459a870620a7ae6ce74f 100644 --- a/tools/process_dump/coredump/coredump_config_manager.h +++ b/tools/process_dump/coredump/coredump_config_manager.h @@ -45,7 +45,7 @@ struct LoadSegmentDumpConfig { }; struct CoredumpConfig { - bool coredumpSwitch {true}; + bool coredumpSwitch {false}; size_t maxCoredumpSize {0}; int dumperThreadCount {1}; std::string outputPath {"/data/storage/el2/base/files"};