aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-05-03 19:32:09 +0000
committersaturneric <[email protected]>2024-05-03 19:32:09 +0000
commite0f69cce6cbced6e3ba5ef1b9faed96a683f10ec (patch)
tree126602b91dea5da79e1a69eea80017a87d33e10e
parentfeat: add german translations and fix a chinese translation (diff)
downloadGpgFrontend-e0f69cce6cbced6e3ba5ef1b9faed96a683f10ec.tar.gz
GpgFrontend-e0f69cce6cbced6e3ba5ef1b9faed96a683f10ec.zip
fix: continue to solve safe issues
-rw-r--r--src/module/sdk/GFSDKBasic.cpp8
-rw-r--r--src/module/sdk/GFSDKModule.cpp2
2 files changed, 8 insertions, 2 deletions
diff --git a/src/module/sdk/GFSDKBasic.cpp b/src/module/sdk/GFSDKBasic.cpp
index e982d165..bea0dc5b 100644
--- a/src/module/sdk/GFSDKBasic.cpp
+++ b/src/module/sdk/GFSDKBasic.cpp
@@ -88,8 +88,14 @@ void GFExecuteCommandBatchSync(int32_t context_size,
GpgFrontend::GpgCommandExecutor::ExecuteConcurrentlySync(contexts);
}
+auto StrlenSafe(const char* str, size_t max_len) -> size_t {
+ const char* end = static_cast<const char*>(memchr(str, '\0', max_len));
+ if (end == nullptr) return max_len;
+ return end - str;
+}
+
auto GPGFRONTEND_MODULE_SDK_EXPORT GFModuleStrDup(const char* src) -> char* {
- auto len = strlen(src);
+ auto len = StrlenSafe(src, kGfStrlenMax);
if (len > kGfStrlenMax) return nullptr;
char* dst = static_cast<char*>(GFAllocateMemory((len + 1) * sizeof(char)));
diff --git a/src/module/sdk/GFSDKModule.cpp b/src/module/sdk/GFSDKModule.cpp
index 1eea578a..00594488 100644
--- a/src/module/sdk/GFSDKModule.cpp
+++ b/src/module/sdk/GFSDKModule.cpp
@@ -90,7 +90,7 @@ void GFModuleTriggerModuleEventCallback(GFModuleEvent *module_event,
}
auto event = GpgFrontend::Module::ModuleManager::GetInstance().SearchEvent(
- GpgFrontend::GFUnStrDup(module_event->triggger_id).toLower());
+ GpgFrontend::GFUnStrDup(module_event->trigger_id).toLower());
if (!event) return;
event.value()->ExecuteCallback(GpgFrontend::GFUnStrDup(module_id),