diff --git a/services/devicemanagerservice/src/authdemo/hichain_adapter.cpp b/services/devicemanagerservice/src/authdemo/hichain_adapter.cpp index ebf5e1dbaa0a26ded86b031cfad35f5e3ab66352..435e496055326f8b5994c42d4aead4f7e4ff7710 100644 --- a/services/devicemanagerservice/src/authdemo/hichain_adapter.cpp +++ b/services/devicemanagerservice/src/authdemo/hichain_adapter.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "parameter.h" @@ -268,7 +269,14 @@ char* HichainAdapter::OnBindRequest(int64_t requestId, int operationCode, const char localDeviceId[DEVICE_UUID_LENGTH] = {0}; GetDevUdid(localDeviceId, DEVICE_UUID_LENGTH); bindRequestJsonObj_[FIELD_DEVICE_ID] = localDeviceId; - return (char*) bindRequestJsonObj_.dump().c_str(); + const char * ret = (const char*) bindRequestJsonObj_.dump().c_str(); + int strLen = strlen(ret)+1; + char * retJsonStr = (char *)malloc(strLen); + if (memcpy_s(retJsonStr, strLen, bindRequestJsonObj_.dump().c_str(), strLen) != 0) { + HILOGE("HichainAdapter::OnBindRequest memcpy failed."); + return nullptr; + } + return retJsonStr; } void HichainAdapter::OnBindSuccess(int64_t requestId, const char* returnData) @@ -373,7 +381,9 @@ void HichainAuthCallBack::onError(int64_t requestId, int operationCode, int erro char* HichainAuthCallBack::onBindRequest(int64_t requestId, int operationCode, const char *reqParams) { HILOGI("HichainAuthCallBack::onBindRequest reqId:%{public}lld, operation:%{public}d.", requestId, operationCode); - return HichainAdapter::GetInstance().OnBindRequest(requestId, operationCode, reqParams); + char * ret = HichainAdapter::GetInstance().OnBindRequest(requestId, operationCode, reqParams); + HILOGI("HichainAuthCallBack::onBindRequest %{public}s", ret); + return ret; } } }