diff --git a/interfaces/kits/js/src/mod_fs/class_watcher/fs_file_watcher.cpp b/interfaces/kits/js/src/mod_fs/class_watcher/fs_file_watcher.cpp index 9ac8925873108e1e170ae1920746628e43084957..4b7f9f82c9888c70f3c5475a2891121027453592 100644 --- a/interfaces/kits/js/src/mod_fs/class_watcher/fs_file_watcher.cpp +++ b/interfaces/kits/js/src/mod_fs/class_watcher/fs_file_watcher.cpp @@ -204,8 +204,6 @@ void FsFileWatcher::ReadNotifyEvent() } while (len < 0); while (len > 0 && index < len) { - event = reinterpret_cast(buf + index); - // Incomplete data: remaining bytes less than event struct size if ((len - index) < eventSize) { HILOGE( @@ -213,6 +211,8 @@ void FsFileWatcher::ReadNotifyEvent() break; } + event = reinterpret_cast(buf + index); + // Incomplete data: remaining bytes less than (event struct size + event->len) if (event->len > len - index - eventSize) { HILOGE("Out of bounds access, index: %{public}u, inotify: %{public}u, event :%{public}u, len: %{public}d",