diff --git a/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp b/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp index d7feaea8ea13b259c0e60d8ec8b7f2b617d9bb92..f8063b9c526721bb29de20be2a8d515403326636 100644 --- a/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp +++ b/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp @@ -197,19 +197,22 @@ bool RouteHeadHandlerImpl::PackDataBody(uint8_t *data, uint32_t totalLen) SessionAppId *appPair = reinterpret_cast(ptr); uint32_t appIdSize = session_.appId.size(); appPair->len = HostToNet(appIdSize); - ret = strcpy_s(appPair->appId, appIdSize, session_.appId.c_str()); + uint8_t *end = data + totalLen; + ptr += sizeof(SessionAppId); + ret = memcpy_s(appPair->appId, end - ptr, session_.appId.c_str(), appIdSize); if (ret != 0) { - ZLOGE("strcpy for app id failed, error:%{public}d", errno); + ZLOGE("memcpy for app id failed, ret is %{public}d, leftSize is %{public}d, appIdSize is %{public}d", + ret, end - ptr, appIdSize); return false; } - ptr += (sizeof(SessionAppId) + appIdSize); + ptr += appIdSize; - uint8_t *end = data + totalLen; SessionStoreId *storePair = reinterpret_cast(ptr); uint32_t storeIdSize = session_.storeId.size(); ret = memcpy_s(storePair->storeId, end - ptr, session_.storeId.data(), storeIdSize); if (ret != 0) { - ZLOGE("strcpy for store id failed, error:%{public}d", errno); + ZLOGE("memcpy for store id failed, ret is %{public}d, leftSize is %{public}d, storeIdSize is %{public}d", + ret, end - ptr, storeIdSize); return false; } storePair->len = HostToNet(storeIdSize);