wauthn_client_data_s *clientData,
typename T::Options *options)
{
- typename T::Callbacks *callbacks = nullptr;
- callbacks = (typename T::Callbacks*) calloc(1, sizeof(typename T::Callbacks));
- callbacks->qrcode_callback = &(Request::QRCallback);
- callbacks->response_callback = &(T::ResponseCallback);
- //checkParameters(clientData, options, callbacks);
+ typename T::Callbacks callbacks;
+ callbacks.qrcode_callback = &(Request::QRCallback);
+ callbacks.response_callback = &(T::ResponseCallback);
+ //checkParameters(clientData, options, &callbacks);
if (options->linked_device != nullptr) // The qrcode_callback should not be called.
{
LogDebug("Adjust qrcode_callback to nullptr");
- callbacks->qrcode_callback = nullptr;
+ callbacks.qrcode_callback = nullptr;
}
- user_data_s *userData = (user_data_s *) calloc(1, sizeof(user_data_s));
- userData->service = this;
- userData->connectionID = connectionID;
- callbacks->user_data = userData;
+ user_data_s userData;
+ userData.service = this;
+ userData.connectionID = connectionID;
+ callbacks.user_data = &userData;
auto request = std::make_unique<T>();
int ret = try_catch([&]() -> int {
const wauthn_client_data_s *,
const typename T::Options *,
typename T::Callbacks *
- >(request->GetAPI().c_str(), clientData, options, callbacks);
+ >(request->GetAPI().c_str(), clientData, options, &callbacks);
return WAUTHN_ERROR_NONE;
});
if (ret != WAUTHN_ERROR_NONE)