__interface(interface),
__methodName(methodName)
{
- if (param) {
- //TODO: escaping quotes?
- char* paramStr = g_variant_print(param, TRUE);
- __parameters = paramStr ? paramStr : EMPTY_STR;
- g_free(paramStr);
- }
+ if (!param)
+ return;
+
+ char* paramStr = g_variant_print(param, TRUE);
+ IF_FAIL_VOID_TAG(paramStr, _E, "Invalid GVariant");
+
+ char* encoded = g_base64_encode(reinterpret_cast<const guchar*>(paramStr), strlen(paramStr) + 1);
+ g_free(paramStr);
+ IF_FAIL_VOID_TAG(encoded, _E, "Encoding failed");
+
+ __parameters = encoded;
+
+ g_free(encoded);
}
JobDBusCall::JobDBusCall(Json::Value& jsonNode)
if (__parameters.empty())
return NULL;
- return g_variant_parse(NULL, __parameters.c_str(), NULL, NULL, NULL);
+ gsize length = 0;
+ char* decoded = reinterpret_cast<char*>(g_base64_decode(__parameters.c_str(), &length));
+ IF_FAIL_RETURN_TAG(decoded, NULL, _E, "Decoding failed");
+
+ GVariant* param = g_variant_parse(NULL, decoded, NULL, NULL, NULL);
+ g_free(decoded);
+
+ return param;
}
void JobDBusCall::toJson(Json::Value& jsonNode) const
}
gsize length = 0;
- *data = reinterpret_cast<char*>(g_base64_decode(__userData.c_str(), &length));
+ *data = reinterpret_cast<char*>(g_base64_decode(__userData.c_str(), &length));
return length;
}
char* encoded = g_base64_encode(reinterpret_cast<const guchar*>(data), length);
if (encoded == NULL) {
- _W("User data encoding failed");
+ _W("Encoding failed");
return *this;
}