diff --git a/common/src/utils/dcamera_utils_tools.cpp b/common/src/utils/dcamera_utils_tools.cpp index 32ac7c1c5a84abdad28587501b743ef4227395f3..bb6e2c6d39dc21853bc80a927010d16a05baceae 100644 --- a/common/src/utils/dcamera_utils_tools.cpp +++ b/common/src/utils/dcamera_utils_tools.cpp @@ -97,7 +97,7 @@ std::string Base64Encode(const unsigned char *toEncode, unsigned int len) DHLOGE("toEncode is null or len is zero."); return ret; } - int32_t length = len; + uint32_t length = len; uint32_t i = 0; unsigned char charArray3[3]; unsigned char charArray4[4]; @@ -202,7 +202,12 @@ void DumpBufferToFile(std::string fileName, uint8_t *buffer, size_t bufSize) DHLOGE("dumpsaving : input param err."); return; } - std::ofstream ofs(fileName, std::ios::binary | std::ios::out | std::ios::app); + char path[PATH_MAX + 1] = {0x00}; + if (fileName.length() > PATH_MAX || realpath(fileName.c_str(), path) == nullptr) { + DHLOGE("The file path is invalid."); + return; + } + std::ofstream ofs(path, std::ios::binary | std::ios::out | std::ios::app); if (!ofs.is_open()) { DHLOGE("dumpsaving : open file failed."); return; @@ -218,7 +223,12 @@ int32_t IsUnderDumpMaxSize(std::string fileName) DHLOGE("dumpsaving : input fileName empty."); return DCAMERA_INIT_ERR; } - std::ofstream ofs(fileName, std::ios::binary | std::ios::out | std::ios::app); + char path[PATH_MAX + 1] = {0x00}; + if (fileName.length() > PATH_MAX || realpath(fileName.c_str(), path) == nullptr) { + DHLOGE("The file path is invalid."); + return DCAMERA_INIT_ERR; + } + std::ofstream ofs(path, std::ios::binary | std::ios::out | std::ios::app); if (!ofs.is_open()) { DHLOGE("dumpsaving : open file failed."); return DCAMERA_INIT_ERR; diff --git a/services/cameraservice/base/src/dcamera_sink_frame_info.cpp b/services/cameraservice/base/src/dcamera_sink_frame_info.cpp index 68cb8f95a572990049e57459fc4afb5bcf1ffca9..3290041698d292e25e7cf80093ecf9a8da7e5dec 100644 --- a/services/cameraservice/base/src/dcamera_sink_frame_info.cpp +++ b/services/cameraservice/base/src/dcamera_sink_frame_info.cpp @@ -48,7 +48,6 @@ int32_t DCameraSinkFrameInfo::Unmarshal(const std::string& jsonStr) { cJSON *rootValue = cJSON_Parse(jsonStr.c_str()); if (rootValue == nullptr) { - DHLOGE("FrameInfo parse error."); return DCAMERA_BAD_VALUE; } cJSON *type = cJSON_GetObjectItemCaseSensitive(rootValue, FRAME_INFO_TYPE.c_str()); @@ -57,48 +56,43 @@ int32_t DCameraSinkFrameInfo::Unmarshal(const std::string& jsonStr) return DCAMERA_BAD_VALUE; } type_ = static_cast(type->valueint); - cJSON *index = cJSON_GetObjectItemCaseSensitive(rootValue, FRAME_INFO_INDEX.c_str()); if (index == nullptr || !cJSON_IsNumber(index)) { cJSON_Delete(rootValue); return DCAMERA_BAD_VALUE; } index_ = static_cast(index->valueint); - cJSON *pts = cJSON_GetObjectItemCaseSensitive(rootValue, FRAME_INFO_PTS.c_str()); if (pts == nullptr || !cJSON_IsNumber(pts)) { cJSON_Delete(rootValue); return DCAMERA_BAD_VALUE; } pts_ = static_cast(pts->valueint); - cJSON *startEncode = cJSON_GetObjectItemCaseSensitive(rootValue, FRAME_INFO_START_ENCODE.c_str()); if (startEncode == nullptr || !cJSON_IsNumber(startEncode)) { cJSON_Delete(rootValue); return DCAMERA_BAD_VALUE; } startEncodeT_ = static_cast(startEncode->valueint); - cJSON *finishEncode = cJSON_GetObjectItemCaseSensitive(rootValue, FRAME_INFO_FINISH_ENCODE.c_str()); if (finishEncode == nullptr || !cJSON_IsNumber(finishEncode)) { cJSON_Delete(rootValue); return DCAMERA_BAD_VALUE; } finishEncodeT_ = static_cast(finishEncode->valueint); - cJSON *sendT = cJSON_GetObjectItemCaseSensitive(rootValue, FRAME_INFO_SENDT.c_str()); if (sendT == nullptr || !cJSON_IsNumber(sendT)) { cJSON_Delete(rootValue); return DCAMERA_BAD_VALUE; } sendT_ = static_cast(sendT->valueint); - cJSON *ver = cJSON_GetObjectItemCaseSensitive(rootValue, FRAME_INFO_VERSION.c_str()); if (ver == nullptr || !cJSON_IsString(ver)) { cJSON_Delete(rootValue); return DCAMERA_BAD_VALUE; } ver_ = std::string(ver->valuestring); + cJSON_Delete(rootValue); return DCAMERA_OK; } } // namespace DistributedHardware diff --git a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h index 7e69dad63aca071f512bacb3565f808f951742ab..ade930bbbf0944a912e78057a616c1bf2881b229 100644 --- a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h +++ b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h @@ -94,7 +94,7 @@ private: std::atomic isPageStatus_ = false; std::shared_ptr initCallback_; bool isSensitive_; - bool isSameAccount_; + bool isSameAccount_ = false; const std::string SESSION_FLAG = "control"; const std::string SRC_TYPE = "camera"; diff --git a/services/channel/include/dcamera_softbus_adapter.h b/services/channel/include/dcamera_softbus_adapter.h index 1e4afd47959f7c01b6c02f18fe1092818c0ee490..90b6818664052fd87509b0965bac895d6ad95cfe 100644 --- a/services/channel/include/dcamera_softbus_adapter.h +++ b/services/channel/include/dcamera_softbus_adapter.h @@ -92,7 +92,7 @@ private: std::mutex idMapLock_; std::map> sessionIdMap_; - int32_t sourceSocketId_; + int32_t sourceSocketId_ = -1; std::map sessionModeAndDataTypeMap_; std::mutex mySessionNamePeerDevIdLock_; std::map peerDevIdMySessionNameMap_;