From fef29373769f8e4df54a407e477ba63134ff2e5a Mon Sep 17 00:00:00 2001 From: liyuke Date: Sat, 6 Sep 2025 11:48:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dfd=E6=9C=89=E6=95=88=E6=80=A7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E7=9A=84=E6=BC=8F=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liyuke Change-Id: Ia666257eef7e9c891dc79211871594450cfe4156 --- .../src/mod_fs/class_file/file_n_exporter.cpp | 19 +++++++++++++++++ .../kits/js/src/mod_fs/class_file/fs_file.cpp | 21 +++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/js/src/mod_fs/class_file/file_n_exporter.cpp b/interfaces/kits/js/src/mod_fs/class_file/file_n_exporter.cpp index f323319c1..5899c9c32 100644 --- a/interfaces/kits/js/src/mod_fs/class_file/file_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_fs/class_file/file_n_exporter.cpp @@ -66,6 +66,13 @@ napi_value FileNExporter::GetFD(napi_env env, napi_callback_info info) HILOGE("Failed to get file entity"); return nullptr; } + + if (!rafEntity->fd_.get()) { + HILOGE("File descriptor pointer is null"); + NError(EIO).ThrowErr(env); + return nullptr; + } + return NVal::CreateInt32(env, rafEntity->fd_.get()->GetFD()).val_; } @@ -264,6 +271,12 @@ napi_value FileNExporter::TryLock(napi_env env, napi_callback_info info) return nullptr; } + if (!fileEntity->fd_.get()) { + HILOGE("File descriptor pointer is null"); + NError(EIO).ThrowErr(env); + return nullptr; + } + bool exclusive = false; if (!GetExclusive(env, funcArg, exclusive)) { return nullptr; @@ -296,6 +309,12 @@ napi_value FileNExporter::UnLock(napi_env env, napi_callback_info info) return nullptr; } + if (!fileEntity->fd_.get()) { + HILOGE("File descriptor pointer is null"); + NError(EIO).ThrowErr(env); + return nullptr; + } + int ret = 0; ret = flock(fileEntity->fd_.get()->GetFD(), LOCK_UN); if (ret < 0) { diff --git a/interfaces/kits/js/src/mod_fs/class_file/fs_file.cpp b/interfaces/kits/js/src/mod_fs/class_file/fs_file.cpp index 8ebe6d597..90288b1d5 100644 --- a/interfaces/kits/js/src/mod_fs/class_file/fs_file.cpp +++ b/interfaces/kits/js/src/mod_fs/class_file/fs_file.cpp @@ -51,6 +51,12 @@ FsResult FsFile::GetFD() const HILOGE("Failed to get file entity"); return FsResult::Error(EINVAL); } + + if (!fileEntity->fd_.get()) { + HILOGE("File descriptor pointer is null"); + return FsResult::Error(EIO); + } + return FsResult::Success(fileEntity->fd_.get()->GetFD()); } @@ -130,10 +136,11 @@ FsResult FsFile::Lock(bool exclusive) const return FsResult::Error(EINVAL); } - if (!fileEntity || !fileEntity->fd_.get()) { - HILOGE("File has been closed in Lock cbExec possibly"); + if (!fileEntity->fd_.get()) { + HILOGE("File descriptor pointer is null"); return FsResult::Error(EIO); } + int ret = 0; auto mode = exclusive ? LOCK_EX : LOCK_SH; ret = flock(fileEntity->fd_.get()->GetFD(), mode); @@ -152,6 +159,11 @@ FsResult FsFile::TryLock(bool exclusive) const return FsResult::Error(EINVAL); } + if (!fileEntity->fd_.get()) { + HILOGE("File descriptor pointer is null"); + return FsResult::Error(EIO); + } + int ret = 0; auto mode = static_cast(exclusive ? LOCK_EX : LOCK_SH); ret = flock(fileEntity->fd_.get()->GetFD(), mode | LOCK_NB); @@ -170,6 +182,11 @@ FsResult FsFile::UnLock() const return FsResult::Error(EINVAL); } + if (!fileEntity->fd_.get()) { + HILOGE("File descriptor pointer is null"); + return FsResult::Error(EIO); + } + int ret = 0; ret = flock(fileEntity->fd_.get()->GetFD(), LOCK_UN); if (ret < 0) { -- Gitee