diff --git a/interfaces/kits/js/src/mod_fs/properties/truncate_core.cpp b/interfaces/kits/js/src/mod_fs/properties/truncate_core.cpp index fb201ab5e5d4d312ae6e59d94e9ebab92e510a7d..1477d328cc7603c7f2e3b40ad17683f90aff8ca6 100644 --- a/interfaces/kits/js/src/mod_fs/properties/truncate_core.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/truncate_core.cpp @@ -25,6 +25,18 @@ namespace OHOS::FileManagement::ModuleFileIO { using namespace std; +static bool ValidFileInfo(FileInfo &fileInfo) +{ + if (!fileInfo.isPath) { + auto fd = fileInfo.fdg->GetFD(); + if (fd < 0) { + HILOGE("Invalid fd"); + return false; + } + } + return true; +} + static int Truncate(FileInfo &fileInfo, int64_t truncateLen) { if (fileInfo.isPath) { @@ -68,6 +80,11 @@ static int Truncate(FileInfo &fileInfo, int64_t truncateLen) FsResult TruncateCore::DoTruncate(FileInfo &fileInfo, const std::optional &len) { + auto succ = ValidFileInfo(fileInfo); + if (!succ) { + return FsResult::Error(EINVAL); + } + int64_t truncateLen = 0; if (len.has_value()) { truncateLen = len.value();