aboutsummaryrefslogtreecommitdiffstats
path: root/src/sdk
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-07-27 12:18:26 +0000
committersaturneric <[email protected]>2024-07-27 12:18:26 +0000
commit5be04d1602355278814bc86c69ec9f648978be8c (patch)
tree6d691279591a267a6fe82bd3e9f84ced68dea214 /src/sdk
parentfix: discover and solve some memory issues (diff)
downloadGpgFrontend-5be04d1602355278814bc86c69ec9f648978be8c.tar.gz
GpgFrontend-5be04d1602355278814bc86c69ec9f648978be8c.zip
feat: improve sdk api for pinentry module
Diffstat (limited to 'src/sdk')
-rw-r--r--src/sdk/GFSDKBasic.cpp4
-rw-r--r--src/sdk/GFSDKBasic.h14
-rw-r--r--src/sdk/GFSDKModule.cpp10
-rw-r--r--src/sdk/GFSDKModule.h5
-rw-r--r--src/sdk/private/CommonUtils.cpp19
-rw-r--r--src/sdk/private/CommonUtils.h13
6 files changed, 53 insertions, 12 deletions
diff --git a/src/sdk/GFSDKBasic.cpp b/src/sdk/GFSDKBasic.cpp
index aefa022a..8b884c84 100644
--- a/src/sdk/GFSDKBasic.cpp
+++ b/src/sdk/GFSDKBasic.cpp
@@ -38,6 +38,10 @@ auto GFAllocateMemory(uint32_t size) -> void* {
return GpgFrontend::SecureMemoryAllocator::Allocate(size);
}
+auto GFReallocateMemory(void* ptr, uint32_t size) -> void* {
+ return GpgFrontend::SecureMemoryAllocator::Reallocate(ptr, size);
+}
+
void GFFreeMemory(void* ptr) {
return GpgFrontend::SecureMemoryAllocator::Deallocate(ptr);
}
diff --git a/src/sdk/GFSDKBasic.h b/src/sdk/GFSDKBasic.h
index 2a3071cd..93392857 100644
--- a/src/sdk/GFSDKBasic.h
+++ b/src/sdk/GFSDKBasic.h
@@ -59,6 +59,16 @@ auto GPGFRONTEND_MODULE_SDK_EXPORT GFAllocateMemory(uint32_t size) -> void*;
/**
* @brief
*
+ * @param ptr
+ * @param size
+ * @return void*
+ */
+auto GPGFRONTEND_MODULE_SDK_EXPORT GFReallocateMemory(void* ptr,
+ uint32_t size) -> void*;
+
+/**
+ * @brief
+ *
* @return const char*
*/
auto GPGFRONTEND_MODULE_SDK_EXPORT GFProjectVersion() -> const char*;
@@ -119,6 +129,6 @@ auto GPGFRONTEND_MODULE_SDK_EXPORT GFAppActiveLocale() -> char*;
* @param size
* @return auto
*/
-auto GPGFRONTEND_MODULE_SDK_EXPORT GFAppRegisterTranslator(char* data, int size)
- -> int;
+auto GPGFRONTEND_MODULE_SDK_EXPORT GFAppRegisterTranslator(char* data,
+ int size) -> int;
} \ No newline at end of file
diff --git a/src/sdk/GFSDKModule.cpp b/src/sdk/GFSDKModule.cpp
index ecc4afd1..87c008ea 100644
--- a/src/sdk/GFSDKModule.cpp
+++ b/src/sdk/GFSDKModule.cpp
@@ -78,17 +78,13 @@ auto GFModuleListRTChildKeys(const char *namespace_, const char *key,
void GFModuleTriggerModuleEventCallback(GFModuleEvent *module_event,
const char *module_id, int argc,
- char **argv) {
- auto data_object = GpgFrontend::TransferParams();
- for (int i = 0; i < argc; i++) {
- data_object->AppendObject(GFUnStrDup(argv[i]));
- }
-
+ GFModuleEventParam *p_argv) {
+ auto argv = ConvertEventParamsToMap(p_argv);
auto event = GpgFrontend::Module::ModuleManager::GetInstance().SearchEvent(
GFUnStrDup(module_event->trigger_id).toLower());
if (!event) return;
- event.value()->ExecuteCallback(GFUnStrDup(module_id), data_object);
+ event.value()->ExecuteCallback(GFUnStrDup(module_id), argv);
}
auto GFModuleRetrieveRTValueOrDefaultBool(const char *namespace_,
diff --git a/src/sdk/GFSDKModule.h b/src/sdk/GFSDKModule.h
index 271a4ac4..1b9bbe42 100644
--- a/src/sdk/GFSDKModule.h
+++ b/src/sdk/GFSDKModule.h
@@ -92,6 +92,7 @@ GFModuleUpsertRTValueBool(const char *namespace_, const char *key, int value);
auto GPGFRONTEND_MODULE_SDK_EXPORT GFModuleListRTChildKeys(
const char *namespace_, const char *key, char ***child_keys) -> int32_t;
-void GPGFRONTEND_MODULE_SDK_EXPORT GFModuleTriggerModuleEventCallback(
- GFModuleEvent *event, const char *module_id, int argc, char **argv);
+void GPGFRONTEND_MODULE_SDK_EXPORT
+GFModuleTriggerModuleEventCallback(GFModuleEvent *event, const char *module_id,
+ int argc, GFModuleEventParam *argv);
}; \ No newline at end of file
diff --git a/src/sdk/private/CommonUtils.cpp b/src/sdk/private/CommonUtils.cpp
index 16dc2db6..d6fec3db 100644
--- a/src/sdk/private/CommonUtils.cpp
+++ b/src/sdk/private/CommonUtils.cpp
@@ -30,6 +30,8 @@
#include <core/utils/MemoryUtils.h>
+#include "GFSDKModule.h"
+
auto GFStrDup(const QString& str) -> char* {
auto utf8_str = str.toUtf8();
auto* c_str = static_cast<char*>(
@@ -80,3 +82,20 @@ auto QMapToCharArray(const QMap<QString, QString>& map, int& size) -> char** {
return char_array;
}
+
+auto ConvertEventParamsToMap(GFModuleEventParam* params)
+ -> QMap<QString, QString> {
+ QMap<QString, QString> param_map;
+ GFModuleEventParam* current = params;
+ GFModuleEventParam* last;
+
+ while (current != nullptr) {
+ param_map[current->name] = GFUnStrDup(current->value);
+
+ last = current;
+ current = current->next;
+ GpgFrontend::SecureFree(last);
+ }
+
+ return param_map;
+} \ No newline at end of file
diff --git a/src/sdk/private/CommonUtils.h b/src/sdk/private/CommonUtils.h
index 85704797..514bcd5d 100644
--- a/src/sdk/private/CommonUtils.h
+++ b/src/sdk/private/CommonUtils.h
@@ -28,6 +28,8 @@
#pragma once
+struct GFModuleEventParam;
+
/**
* @brief
*
@@ -66,4 +68,13 @@ auto CharArrayToQMap(char **char_array, int size) -> QMap<QString, QString>;
* @param size
* @return char**
*/
-auto QMapToCharArray(const QMap<QString, QString> &map, int &size) -> char **; \ No newline at end of file
+auto QMapToCharArray(const QMap<QString, QString> &map, int &size) -> char **;
+
+/**
+ * @brief
+ *
+ * @param params
+ * @return QMap<QString, QString>
+ */
+auto ConvertEventParamsToMap(GFModuleEventParam *params)
+ -> QMap<QString, QString>; \ No newline at end of file