From 2a9a7c9b81fbf74396f064ebb23d00204e75b5e9 Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Tue, 24 Oct 2023 11:03:40 +0800 Subject: [PATCH 1/5] feature Signed-off-by: liuyuxiu --- .../concurrent_fuzzer/concurrent_fuzzer.cpp | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index 112650e..0cdc943 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -126,6 +126,69 @@ bool FuzzConcurrentTaskServiceQueryDeadline(const uint8_t* data, size_t size) } return true; } + +bool FuzzConcurrentTaskServiceStopRemoteObject(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + QOS::StopRemoteObject(); + return true; +} + +bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + int level = GetData(); + level = level % 5; + level = level < 0 ? (-1) * level : level; + QOS::Qos_Level T ; + T = static_cast(level); + QOS::SetThreadQos(T); + } + return true; +} + +bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + int level = GetData(); + int tid = GetData(); + QOS::Qos_Level T ; + level = level % 5; + level = level < 0 ? (-1) * level : level; + T = static_cast(level); + QOS::SetQosForOtherThread(T, tid); + } + return true; +} + +bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + QOS::ResetThreadQos(); + return true; +} + +bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + int tid = GetData(); + QOS::ResetQosForOtherThread(tid); + } + return true; +} } // namespace OHOS /* Fuzzer entry point */ -- Gitee From ff18b378024f827b2f90ced989fa29fedb9d8f13 Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Tue, 24 Oct 2023 11:09:08 +0800 Subject: [PATCH 2/5] feature Signed-off-by: liuyuxiu --- test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index 0cdc943..971a55b 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -143,7 +143,7 @@ bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { int level = GetData(); - level = level % 5; + level = (level % 4) + 1; level = level < 0 ? (-1) * level : level; QOS::Qos_Level T ; T = static_cast(level); @@ -161,7 +161,7 @@ bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t s int level = GetData(); int tid = GetData(); QOS::Qos_Level T ; - level = level % 5; + level = (level % 4) + 1; level = level < 0 ? (-1) * level : level; T = static_cast(level); QOS::SetQosForOtherThread(T, tid); -- Gitee From 1086a2425ef84e76507597b5216c09c5775a22aa Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Tue, 24 Oct 2023 12:51:21 +0800 Subject: [PATCH 3/5] feature Signed-off-by: liuyuxiu --- .../concurrent_fuzzer/concurrent_fuzzer.cpp | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index 971a55b..d3a8ad0 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -25,6 +25,9 @@ using namespace OHOS::ConcurrentTask; namespace OHOS { +namespace QOS{ +using namespace OHOS::ConcurrentTask; +using namespace OHOS::QOS; const uint8_t *g_baseFuzzData = nullptr; size_t g_baseFuzzSize = 0; size_t g_baseFuzzPos; @@ -132,7 +135,7 @@ bool FuzzConcurrentTaskServiceStopRemoteObject(const uint8_t* data, size_t size) g_baseFuzzData = data; g_baseFuzzSize = size; g_baseFuzzPos = 0; - QOS::StopRemoteObject(); + ConcurrentTaskClient::GetInstance().StopRemoteObject(); return true; } @@ -143,11 +146,19 @@ bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { int level = GetData(); - level = (level % 4) + 1; - level = level < 0 ? (-1) * level : level; - QOS::Qos_Level T ; - T = static_cast(level); - QOS::SetThreadQos(T); + level = level % 10; + if(level == 1){ + QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_BACKGROUND); + } + else if(level == 2){ + QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_UTILITY); + } + else if(level == 3){ + QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_DEFAULT); + } + else if(level == 4){ + QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_USER_INITIATED); + } } return true; } @@ -160,11 +171,19 @@ bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t s if (size > sizeof(int) + sizeof(int)) { int level = GetData(); int tid = GetData(); - QOS::Qos_Level T ; - level = (level % 4) + 1; - level = level < 0 ? (-1) * level : level; - T = static_cast(level); - QOS::SetQosForOtherThread(T, tid); + level = level % 10; + if(level == 1){ + QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_BACKGROUND,tid); + } + else if(level == 2){ + QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_UTILITY,tid); + } + else if(level == 3){ + QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_DEFAULT,tid); + } + else if(level == 4){ + QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_USER_INITIATED,tid); + } } return true; } @@ -174,7 +193,7 @@ bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size) g_baseFuzzData = data; g_baseFuzzSize = size; g_baseFuzzPos = 0; - QOS::ResetThreadQos(); + QosController::GetInstance().ResetThreadQos(); return true; } @@ -185,11 +204,12 @@ bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { int tid = GetData(); - QOS::ResetQosForOtherThread(tid); + QosController::GetInstance().ResetQosForOtherThread(tid); } return true; } } // namespace OHOS +} // namespace QOS /* Fuzzer entry point */ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) -- Gitee From 980369d4dece6f4a8ac8a9109c724afab522cac0 Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Tue, 24 Oct 2023 13:51:33 +0800 Subject: [PATCH 4/5] feature Signed-off-by: liuyuxiu --- test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index d3a8ad0..3e3c07f 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -21,7 +21,8 @@ #include "concurrent_task_service.h" #include "securec.h" #include "concurrent_fuzzer.h" - +#include"qos.h" +#include"concurrent_task_client.h" using namespace OHOS::ConcurrentTask; namespace OHOS { -- Gitee From c6a8d168f14a55ee51a5569b8ca4db3653f3771d Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Tue, 24 Oct 2023 16:13:09 +0800 Subject: [PATCH 5/5] feature Signed-off-by: liuyuxiu --- test/fuzztest/concurrent_fuzzer/BUILD.gn | 1 + .../concurrent_fuzzer/concurrent_fuzzer.cpp | 52 ++++++++++--------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/test/fuzztest/concurrent_fuzzer/BUILD.gn b/test/fuzztest/concurrent_fuzzer/BUILD.gn index ba299d5..0406616 100644 --- a/test/fuzztest/concurrent_fuzzer/BUILD.gn +++ b/test/fuzztest/concurrent_fuzzer/BUILD.gn @@ -34,6 +34,7 @@ ohos_fuzztest("ConcurrentFuzzTest") { deps = [ "../../../frameworks/concurrent_task_client:concurrent_task_client", "../../../services:concurrentsvc", + "../../../qos:qos", ] external_deps = [ "c_utils:utils", diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index 3e3c07f..f735e05 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -20,15 +20,13 @@ #include "concurrent_task_service_proxy.h" #include "concurrent_task_service.h" #include "securec.h" -#include "concurrent_fuzzer.h" #include"qos.h" #include"concurrent_task_client.h" +#include "concurrent_fuzzer.h" using namespace OHOS::ConcurrentTask; +using namespace OHOS::QOS; namespace OHOS { -namespace QOS{ -using namespace OHOS::ConcurrentTask; -using namespace OHOS::QOS; const uint8_t *g_baseFuzzData = nullptr; size_t g_baseFuzzSize = 0; size_t g_baseFuzzPos; @@ -147,18 +145,18 @@ bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { int level = GetData(); - level = level % 10; - if(level == 1){ - QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_BACKGROUND); + level = level % 10; // get single digit + if (level == 1 || level == 2) { // corresponding to QOS_BACKGROUNG + QOS::SetThreadQos(QOS::QosLevel::QOS_BACKGROUND); } - else if(level == 2){ - QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_UTILITY); + else if (level == 3 || level == 4) { // corresponding to QOS_UTILITY + QOS::SetThreadQos(QOS::QosLevel::QOS_UTILITY); } - else if(level == 3){ - QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_DEFAULT); + else if (level == 5 || level == 6) { // corresponding to QOS_DEFAULT + QOS::SetThreadQos(QOS::QosLevel::QOS_DEFAULT); } - else if(level == 4){ - QosController::GetInstance().SetThreadQos(QOS::QosLevel::QOS_USER_INITIATED); + else if (level == 7 || level == 8) { // corresponding to QOS_INITIATED + QOS::SetThreadQos(QOS::QosLevel::QOS_USER_INITIATED); } } return true; @@ -172,18 +170,18 @@ bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t s if (size > sizeof(int) + sizeof(int)) { int level = GetData(); int tid = GetData(); - level = level % 10; - if(level == 1){ - QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_BACKGROUND,tid); + level = level % 10; // get single digit + if (level == 1 || level == 2) { // corresponding to QOS_BACKGROUND + QOS::SetQosForOtherThread(QOS::QosLevel::QOS_BACKGROUND, tid); } - else if(level == 2){ - QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_UTILITY,tid); + else if (level == 2) { // corresponding to QOS_UTILITY + QOS::SetQosForOtherThread(QOS::QosLevel::QOS_UTILITY, tid); } - else if(level == 3){ - QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_DEFAULT,tid); + else if (level == 3) { // corresponding to QOS_DEFAULT + QOS::SetQosForOtherThread(QOS::QosLevel::QOS_DEFAULT, tid); } - else if(level == 4){ - QosController::GetInstance().SetQosForOtherThread(QOS::QosLevel::QOS_USER_INITIATED,tid); + else if (level == 4) { // corresponding to QOS_INITIATED + QOS::SetQosForOtherThread(QOS::QosLevel::QOS_USER_INITIATED, tid); } } return true; @@ -194,7 +192,7 @@ bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size) g_baseFuzzData = data; g_baseFuzzSize = size; g_baseFuzzPos = 0; - QosController::GetInstance().ResetThreadQos(); + QOS::ResetThreadQos(); return true; } @@ -205,12 +203,11 @@ bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { int tid = GetData(); - QosController::GetInstance().ResetQosForOtherThread(tid); + QOS::ResetQosForOtherThread(tid); } return true; } } // namespace OHOS -} // namespace QOS /* Fuzzer entry point */ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) @@ -219,5 +216,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::FuzzConcurrentTaskTryConnect(data, size); OHOS::FuzzConcurrentTaskServiceReportData(data, size); OHOS::FuzzConcurrentTaskServiceQueryInterval(data, size); + OHOS::FuzzConcurrentTaskServiceStopRemoteObject(data, size); + OHOS::FuzzConcurrentTaskServiceSetThreadQos(data, size); + OHOS::FuzzConcurrentTaskServiceSetQosForOtherThread(data, size); + OHOS::FuzzConcurrentTaskServiceResetThreadQos(data, size); + OHOS::FuzzConcurrentTaskServiceResetQosForOtherThread(data, size); return 0; } -- Gitee