diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index ec7f43d1432fceb2933666de7b25aa4be068be67..eca607d52feab5e7791e69b379898400dce64803 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -394,6 +394,10 @@ ErrCode BackupExtExtension::GetIncrementalFileHandle(const std::string &fileName HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); auto [errCode, fdval, reportFdVal] = GetIncrementalFileHandle(fileName); fdErrCode = errCode; + if (fdval.Get() == BConstants::INVALID_FD_NUM || reportFdVal.Get() == BConstants::INVALID_FD_NUM) { + HILOGE("fd invalid, fdval:%{public}d, reportFdVal:%{public}d", fdval.Get(), reportFdVal.Get()); + return EPERM; + } fd = dup(fdval.Get()); reportFd = dup(reportFdVal.Get()); return ERR_OK; @@ -477,7 +481,7 @@ ErrCode BackupExtExtension::IndexFileReady(const TarMap &pkgInfo, sptr } int fdval = open(INDEX_FILE_BACKUP.data(), O_RDONLY); ErrCode ret = fdval < 0 ? - proxy->AppFileReadyWithoutFd(string(BConstants::EXT_BACKUP_MANAGE), ERR_OK) : + proxy->AppFileReadyWithoutFd(string(BConstants::EXT_BACKUP_MANAGE), BError::GetCodeByErrno(errno)) : proxy->AppFileReady(string(BConstants::EXT_BACKUP_MANAGE), fdval, ERR_OK); if (SUCCEEDED(ret)) { HILOGI("The application is packaged successfully"); @@ -2096,7 +2100,7 @@ ErrCode BackupExtExtension::IncrementalTarFileReady(const TarMap &bigFileInfo, int fd = open(tarName.data(), O_RDONLY); int manifestFd = open(file.data(), O_RDONLY); ErrCode ret = (fd < 0 || manifestFd < 0) ? - proxy->AppIncrementalFileReadyWithoutFd(tarFile, ERR_OK) : + proxy->AppIncrementalFileReadyWithoutFd(tarFile, BError::GetCodeByErrno(errno)) : proxy->AppIncrementalFileReady(tarFile, fd, manifestFd, ERR_OK); if (SUCCEEDED(ret)) { HILOGI("IncrementalTarFileReady: The application is packaged successfully"); @@ -2193,7 +2197,8 @@ ErrCode BackupExtExtension::IncrementalAllFileReady(const TarMap &pkgInfo, int fdval = open(INDEX_FILE_BACKUP.data(), O_RDONLY); int manifestFdval = open(file.data(), O_RDONLY); ErrCode ret = (fdval < 0 || manifestFdval < 0) ? - proxy->AppIncrementalFileReadyWithoutFd(string(BConstants::EXT_BACKUP_MANAGE), ERR_OK) : + proxy->AppIncrementalFileReadyWithoutFd(string(BConstants::EXT_BACKUP_MANAGE), + BError::GetCodeByErrno(errno)) : proxy->AppIncrementalFileReady(string(BConstants::EXT_BACKUP_MANAGE), fdval, manifestFdval, ERR_OK); if (SUCCEEDED(ret)) { HILOGI("IncrementalAllFileReady successfully");