diff --git a/src/common/async_cmd.cpp b/src/common/async_cmd.cpp index b3818db53045af99a13f57b1130f08b8ff54d78e..1ebbbdd2872379022e64b1c801229c26f6dbe136 100644 --- a/src/common/async_cmd.cpp +++ b/src/common/async_cmd.cpp @@ -119,7 +119,7 @@ bool AsyncCmd::GetDevItem(const char *key, string &out) if (!strcmp(sFailString.c_str(), tmpStringBuf)) { WRITE_LOG(LOG_WARN, "GetDevItem false tmpStringBuf:%s", tmpStringBuf); ret = false; - Base::ZeroArray(tmpStringBuf); + (void)memset_s(tmpStringBuf, sizeof(tmpStringBuf), 0, sizeof(tmpStringBuf)); } #endif out = tmpStringBuf; diff --git a/src/common/auth.cpp b/src/common/auth.cpp index e1556494ec701140dd571c3763b0b711f69619ac..505f16ec5aa8ed093a7e3b0d5924a85beec3a688 100644 --- a/src/common/auth.cpp +++ b/src/common/auth.cpp @@ -824,7 +824,11 @@ static uint8_t* GetPlainPwd(const std::string& privateKeyFile) WRITE_LOG(LOG_FATAL, "out of mem %d", plainPwd.second); return nullptr; } - memcpy_s(localPwd, plainPwd.second, plainPwd.first, plainPwd.second); + if (memcpy_s(localPwd, plainPwd.second, plainPwd.first, plainPwd.second) != EOK) { + delete []localPwd; + localPwd = nullptr; + return nullptr; + } localPwd[plainPwd.second] = '\0'; return localPwd; } diff --git a/src/common/base.cpp b/src/common/base.cpp index 77dad1cce420b96aed3f6e1032eaf276745fbdec..ff7cbc2083b810803e91031e508fc76d7456c778 100644 --- a/src/common/base.cpp +++ b/src/common/base.cpp @@ -1676,8 +1676,6 @@ static void EchoLog(string &buf) return socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, fds); #endif #else - struct sockaddr_in addr; - socklen_t addrlen = sizeof(addr); int reuse = 1; if (fds == 0) { return -1; @@ -1686,18 +1684,20 @@ static void EchoLog(string &buf) if (listener == -1) { return -2; // -2:sockets error } - Base::ZeroStruct(addr); - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); - addr.sin_port = 0; fds[0] = fds[1] = (int)-1; do { + struct sockaddr_in addr; + (void)memset_s(&addr, sizeof(sockaddr_in), 0, sizeof(sockaddr_in)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + addr.sin_port = 0; if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, (socklen_t)sizeof(reuse))) { break; } if (::bind(listener, (struct sockaddr *)&addr, sizeof(addr))) { break; } + socklen_t addrlen = sizeof(addr); if (getsockname(listener, (struct sockaddr *)&addr, &addrlen)) { break; } @@ -2166,7 +2166,7 @@ static void EchoLog(string &buf) uv_os_sock_t dupFd = -1; #ifdef _WIN32 WSAPROTOCOL_INFO info; - ZeroStruct(info); + (void)memset_s(&info, sizeof(WSAPROTOCOL_INFO), 0, sizeof(WSAPROTOCOL_INFO)); if (WSADuplicateSocketA(tcp->socket, GetCurrentProcessId(), &info) < 0) { return dupFd; } diff --git a/src/common/base.h b/src/common/base.h index 6ccdf46855d5fa09781109f88f811ec7ff24879f..50c699ae117d002ac58e2e99958fb1ea277c3525 100644 --- a/src/common/base.h +++ b/src/common/base.h @@ -114,22 +114,6 @@ namespace Base { string Convert2HexStr(uint8_t arr[], int length); string CanonicalizeSpecPath(string &src); bool TryCreateDirectory(const string &path, string &err); - // Just zero a POD type, such as a structure or union - // If it contains c++ struct such as stl-string or others, please use 'T = {}' to initialize struct - template int ZeroStruct(T &structBuf) - { - return memset_s(&structBuf, sizeof(T), 0, sizeof(T)); - } - // just zero a statically allocated array of POD or built-in types - template int ZeroArray(T (&arrayBuf)[N]) - { - return memset_s(arrayBuf, sizeof(T) * N, 0, sizeof(T) * N); - } - // just zero memory buf, such as pointer - template int ZeroBuf(T &arrayBuf, int size) - { - return memset_s(arrayBuf, size, 0, size); - } // clang-format off const string StringFormat(const char * const formater, ...); const string StringFormat(const char * const formater, va_list &vaArgs); diff --git a/src/common/file.cpp b/src/common/file.cpp index 2a8ef09ed0b76b98f924c506b2c0ca1496383089..721a6577b1eb5951a93cd57cdea2d903d300498e 100644 --- a/src/common/file.cpp +++ b/src/common/file.cpp @@ -63,7 +63,7 @@ bool HdcFile::BeginTransfer(CtxFile *context, const string &command) LogMsg(MSG_FAIL, "HdcFile::BeginTransfer new openReq failed"); return false; } - memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); + (void)memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); openReq->data = context; do { ++refCount; @@ -518,7 +518,7 @@ bool HdcFile::BeginFileOperations() LogMsg(MSG_FAIL, "HdcFile::SlaveCheck new openReq failed"); return false; } - memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); + (void)memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); openReq->data = &ctxNow; ++refCount; WRITE_LOG_DAEMON(LOG_INFO, "BeginFileOperations cid:%u sid:%u uv_fs_open local:%s remote:%s", taskInfo->channelId, @@ -549,7 +549,7 @@ void HdcFile::TransferNext(CtxFile *context) OnFileOpenFailed(context); return; } - memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); + (void)memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); openReq->data = context; do { ++refCount; diff --git a/src/common/forward.cpp b/src/common/forward.cpp index 0a6dd1edcd56946eb76cb22afd72060ef29baa79..ef4807fefc862d7636a5cca899bd466fcca13d2d 100644 --- a/src/common/forward.cpp +++ b/src/common/forward.cpp @@ -530,7 +530,7 @@ bool HdcForwardBase::LocalAbstractConnect(uv_pipe_t *pipe, string &sNodeCfg) } fcntl(s, F_SETFD, FD_CLOEXEC); struct sockaddr_un addr; - Base::ZeroStruct(addr); + (void)memset_s(&addr, sizeof(sockaddr_un), 0, sizeof(sockaddr_un)); int addrLen = sNodeCfg.size() + offsetof(struct sockaddr_un, sun_path) + 1; addr.sun_family = AF_LOCAL; addr.sun_path[0] = 0; diff --git a/src/common/password.cpp b/src/common/password.cpp index 72794537fdfceeb1256061b107bc4a0a1eba573f..fc0af1b7202a4efb9272ab605a38d0f1ff645e33 100644 --- a/src/common/password.cpp +++ b/src/common/password.cpp @@ -170,12 +170,12 @@ std::pair HdcPassword::DecryptGetPwdValue(const std::string &encr } HdcPassword::HdcPassword(const std::string &pwdKeyAlias):hdcHuks(pwdKeyAlias) { - memset_s(pwd, sizeof(pwd), 0, sizeof(pwd)); + (void)memset_s(pwd, sizeof(pwd), 0, sizeof(pwd)); } HdcPassword::~HdcPassword() { - memset_s(pwd, sizeof(pwd), 0, sizeof(pwd)); + (void)memset_s(pwd, sizeof(pwd), 0, sizeof(pwd)); } std::pair HdcPassword::GetPassword(void) diff --git a/src/common/session.cpp b/src/common/session.cpp index 67ad3aa5bff30f5cbc304bf8892d7356c297365c..b90817a819d59fbcca77a4fd91f23991e69d4609 100755 --- a/src/common/session.cpp +++ b/src/common/session.cpp @@ -1072,7 +1072,8 @@ int HdcSessionBase::FetchIOBuf(HSession hSession, uint8_t *ioBuf, int read) return ERR_BUF_COPY; }; uint8_t *bufToZero = reinterpret_cast(hSession->ioBuf + hSession->availTailIndex); - Base::ZeroBuf(bufToZero, hSession->bufSize - hSession->availTailIndex); + (void)memset_s(bufToZero, hSession->bufSize - hSession->availTailIndex, + 0, hSession->bufSize - hSession->availTailIndex); } return indexBuf; } diff --git a/src/common/transfer.cpp b/src/common/transfer.cpp index ae40092e4f602caff99477623e2bfc16be1f59b3..6bcc2a017446b3d659e227709690d0e3bd1734f6 100644 --- a/src/common/transfer.cpp +++ b/src/common/transfer.cpp @@ -818,7 +818,7 @@ bool HdcTransferBase::RecvIOPayload(CtxFile *context, uint8_t *data, int dataSiz uint8_t *clearBuf = nullptr; string serialString(reinterpret_cast(data), payloadPrefixReserve); TransferPayload pld; - Base::ZeroStruct(pld); + (void)memset_s(&pld, sizeof(TransferPayload), 0, sizeof(TransferPayload)); bool ret = false; SerialStruct::ParseFromString(pld, serialString); int clearSize = 0; diff --git a/src/common/uart.cpp b/src/common/uart.cpp index 3e2d8736307db19cd44ea1d7be34eb57a3b1aa82..76f1ea81b8e2dd78de102d8a35a64853e2f9370d 100644 --- a/src/common/uart.cpp +++ b/src/common/uart.cpp @@ -1037,9 +1037,9 @@ void HdcUARTBase::TransferStateMachine::Wait() HdcUART::HdcUART() { #ifdef _WIN32 - Base::ZeroStruct(ovWrite); + (void)memset_s(&ovWrite, sizeof(OVERLAPPED), 0, sizeof(OVERLAPPED)); ovWrite.hEvent = CreateEvent(NULL, false, false, NULL); - Base::ZeroStruct(ovRead); + (void)memset_s(&ovRead, sizeof(OVERLAPPED), 0, sizeof(OVERLAPPED)); ovRead.hEvent = CreateEvent(NULL, false, false, NULL); #endif } diff --git a/src/daemon/daemon_app.cpp b/src/daemon/daemon_app.cpp index 47150c37c7a1a354f63908b89239470dd085e9ad..a33ba3476e34cde9401fa28a70679d68034bb095 100644 --- a/src/daemon/daemon_app.cpp +++ b/src/daemon/daemon_app.cpp @@ -79,7 +79,7 @@ bool HdcDaemonApp::CommandDispatch(const uint16_t command, uint8_t *payload, con WRITE_LOG(LOG_FATAL, "HdcDaemonApp::CommandDispatch new uv_fs_t failed"); return false; } - memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); + (void)memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); MakeCtxForAppCheck(payload, payloadSize); openReq->data = &ctxNow; ++refCount; diff --git a/src/daemon/daemon_tcp.cpp b/src/daemon/daemon_tcp.cpp index 57527fe739d39b0808a9a3086b1b88d1b90e5655..873f1ef81fc7194c1efed740f4a5e60e80218cb4 100644 --- a/src/daemon/daemon_tcp.cpp +++ b/src/daemon/daemon_tcp.cpp @@ -132,7 +132,7 @@ int HdcDaemonTCP::SetTCPListen() return ERR_API_FAIL; } // Get listen port - Base::ZeroStruct(addr); + (void)memset_s(&addr, sizeof(sockaddr_in), 0, sizeof(sockaddr_in)); namelen = sizeof(addr); if (uv_tcp_getsockname(&servTCP, (sockaddr *)&addr, &namelen)) { return ERR_API_FAIL; diff --git a/src/daemon/jdwp.cpp b/src/daemon/jdwp.cpp index 3fd8288a92722e681aadc8bd4cde4523b835313d..bbb9a3e2c75ff7479fc95d20c769c6e7b4e011ed 100644 --- a/src/daemon/jdwp.cpp +++ b/src/daemon/jdwp.cpp @@ -178,7 +178,7 @@ void HdcJdwp::ReadStream(uv_stream_t *pipe, ssize_t nread, const uv_buf_t *buf) } } } - Base::ZeroArray(ctxJdwp->buf); + (void)memset_s(ctxJdwp->buf, sizeof(ctxJdwp->buf), 0, sizeof(ctxJdwp->buf)); if (!ret) { WRITE_LOG(LOG_INFO, "ReadStream proc:%d err, free it.", ctxJdwp->pid); thisClass->freeContextMutex.lock(); @@ -304,7 +304,7 @@ int HdcJdwp::UvPipeBind(uv_pipe_t* handle, const char* name, size_t size) #endif struct sockaddr_un saddr; - Base::ZeroStruct(saddr); + memset_s(&saddr, sizeof(sockaddr_un), 0, sizeof(sockaddr_un)); size_t capacity = sizeof(saddr.sun_path); size_t min = size < capacity ? size : capacity; for (size_t i = 0; i < min; i++) { diff --git a/src/daemon/jdwp.h b/src/daemon/jdwp.h index dc4e3be6532e57147d97770f6944cdc64936fc4f..63223186606b0d9da8e3046f0b9acc939dd0be39 100644 --- a/src/daemon/jdwp.h +++ b/src/daemon/jdwp.h @@ -58,7 +58,7 @@ private: uint32_t ppid; PollNode(int fd, uint32_t pid) { - Base::ZeroStruct(pollfd); + pollfd = {}; pollfd.fd = fd; pollfd.events = POLLNVAL | POLLRDHUP | POLLHUP | POLLERR; pollfd.revents = 0; diff --git a/src/daemon/system_depend.cpp b/src/daemon/system_depend.cpp index 8041981db267d6e532ce2fb4caf7f5818753088b..e4ca571ae035439dc2be58e3052d597cb39c9d0c 100644 --- a/src/daemon/system_depend.cpp +++ b/src/daemon/system_depend.cpp @@ -62,7 +62,7 @@ namespace SystemDepend { if (!strcmp(sFailString.c_str(), tmpStringBuf)) { // failed ret = false; - Base::ZeroBuf(tmpStringBuf, BUF_SIZE_MEDIUM); + (void)memset_s(tmpStringBuf, BUF_SIZE_MEDIUM, 0, BUF_SIZE_MEDIUM); } #endif out = tmpStringBuf; diff --git a/src/host/client.cpp b/src/host/client.cpp index 50d3dde8995059e4447ca81eca3670f3125997a5..d168af57d6f3db8ddb745bb95826277d88b34dcd 100755 --- a/src/host/client.cpp +++ b/src/host/client.cpp @@ -39,7 +39,7 @@ HdcClient::HdcClient(const bool serverOrClient, const string &addrString, uv_loo MallocChannel(&channel); // free by logic debugRetryCount = 0; #ifndef _WIN32 - Base::ZeroStruct(terminalState); + (void)memset_s(&terminalState, sizeof(termios), 0, sizeof(termios)); #endif isCheckVersionCmd = checkVersion; } @@ -643,7 +643,7 @@ void HdcClient::ReadStd(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) return; // error } thisClass->Send(hChannel->channelId, reinterpret_cast(cmd), strlen(cmd)); - Base::ZeroArray(hChannel->bufStd); + (void)memset_s(hChannel->bufStd, sizeof(hChannel->bufStd), 0, sizeof(hChannel->bufStd)); } void HdcClient::ModifyTty(bool setOrRestore, uv_tty_t *tty) diff --git a/src/host/host_app.cpp b/src/host/host_app.cpp index e366e655d09033f496526676ac88d7838ecb26b2..1cd08a772175fb7cc9e5d8982146c371c1688e63 100644 --- a/src/host/host_app.cpp +++ b/src/host/host_app.cpp @@ -120,7 +120,7 @@ bool HdcHostApp::RunQueue(CtxFile *context) OnFileOpenFailed(context); return false; } - memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); + (void)memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); openReq->data = context; ++refCount; uv_fs_open(loopTask, openReq, context->localPath.c_str(), O_RDONLY, 0, OnFileOpen); diff --git a/src/host/host_updater.cpp b/src/host/host_updater.cpp index 0ac9e857a6147312d49e593421aa3e138567e0a6..dcf0a51ed7b18934fcc2e2abbbcc1e5202ff4db8 100755 --- a/src/host/host_updater.cpp +++ b/src/host/host_updater.cpp @@ -85,7 +85,7 @@ bool HostUpdater::RunQueue(CtxFile &context) OnFileOpenFailed(&context); return false; } - memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); + (void)memset_s(openReq, sizeof(uv_fs_t), 0, sizeof(uv_fs_t)); openReq->data = &context; refCount++; uv_fs_open(loopTask, openReq, context.localPath.c_str(), O_RDONLY, 0, OnFileOpen); @@ -138,7 +138,7 @@ bool HostUpdater::BeginTransfer(const std::string &function, const uint8_t *payl void HostUpdater::CheckMaster(CtxFile *context) { uv_fs_t fs; - Base::ZeroStruct(fs.statbuf); + (void)memset_s(&fs.statbuf, sizeof(uv_stat_t), 0, sizeof(uv_stat_t)); uv_fs_fstat(nullptr, &fs, context->openFd, nullptr); context->transferConfig.fileSize = fs.statbuf.st_size; uv_fs_req_cleanup(&fs); diff --git a/src/host/server_for_client.cpp b/src/host/server_for_client.cpp index 42f3a50dd3559b9c1f03830dc8efb90c46b710ad..39043867014672f933bb62546ec6777923f6131a 100644 --- a/src/host/server_for_client.cpp +++ b/src/host/server_for_client.cpp @@ -483,7 +483,7 @@ bool HdcServerForClient::NewConnectTry(void *ptrServer, HChannel hChannel, const hChannel->connectLocalDevice = true; } } - Base::ZeroBuf(hChannel->bufStd, bufOffsetTwo); + (void)memset_s(hChannel->bufStd, sizeof(hChannel->bufStd), 0, sizeof(hChannel->bufStd)); childRet = snprintf_s(hChannel->bufStd + bufOffsetTwo, sizeof(hChannel->bufStd) - bufOffsetTwo, sizeof(hChannel->bufStd) - bufOffsetThree, "%s", const_cast(connectKey.c_str())); diff --git a/sudo/src/main.cpp b/sudo/src/main.cpp index 140586bfa3c04651f1c9b8e379919a80030a8367..7340f791803ddb432ce5a8c80787368745738755 100644 --- a/sudo/src/main.cpp +++ b/sudo/src/main.cpp @@ -338,7 +338,7 @@ static bool VerifyUserPin() GetUserPwd(passwd, PWD_BUF_LEN); pwdVerifyResult = UserAccountVerify(passwd, strnlen(passwd, PWD_BUF_LEN)); - memset_s(passwd, sizeof(passwd), 0, sizeof(passwd)); + (void)memset_s(passwd, sizeof(passwd), 0, sizeof(passwd)); if (!pwdVerifyResult) { WriteTty(USER_VERIFY_FAILED); }