From ac408c7722829a9d2a05841ba2ef0a8adcb4db33 Mon Sep 17 00:00:00 2001 From: xlgitee Date: Thu, 11 Sep 2025 21:43:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9coredump=E5=BC=80=E5=85=B3?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xlgitee Change-Id: Icb00d90d20178ef6dab91c7cdb6ff722329f245c --- .../faultloggerd_coredump_service_fuzzer.cpp | 18 +++++++------- tools/crasher_c/dfx_crasher.c | 24 +++++++++---------- .../coredump/coredump_config_manager.h | 2 +- 3 files changed, 23 insertions(+), 21 deletions(-) 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 54519f22c..324f9561d 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 16daa6f52..985f51857 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 8b31a89b8..0c53044fe 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"}; -- Gitee