diff options
author | saturneric <[email protected]> | 2024-05-03 19:32:09 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-05-03 19:32:09 +0000 |
commit | e0f69cce6cbced6e3ba5ef1b9faed96a683f10ec (patch) | |
tree | 126602b91dea5da79e1a69eea80017a87d33e10e | |
parent | feat: add german translations and fix a chinese translation (diff) | |
download | GpgFrontend-e0f69cce6cbced6e3ba5ef1b9faed96a683f10ec.tar.gz GpgFrontend-e0f69cce6cbced6e3ba5ef1b9faed96a683f10ec.zip |
fix: continue to solve safe issues
-rw-r--r-- | src/module/sdk/GFSDKBasic.cpp | 8 | ||||
-rw-r--r-- | src/module/sdk/GFSDKModule.cpp | 2 |
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), |