diff --git a/internal/fs/symfs_windows.go b/internal/fs/symfs_windows.go index 19ade44..d649312 100644 --- a/internal/fs/symfs_windows.go +++ b/internal/fs/symfs_windows.go @@ -465,9 +465,16 @@ func (s *SymFS) watch() { if err != nil { return } + headerSize := uint32(unsafe.Offsetof(FileNotifyInformation{}.FileName)) var offset uint32 for { + if offset+headerSize > bytesReturned { + break + } info := (*FileNotifyInformation)(unsafe.Pointer(&buf[offset])) + if offset+headerSize+info.FileNameLength > bytesReturned { + break + } length := info.FileNameLength / 2 nameSlice := (*[1 << 16]uint16)(unsafe.Pointer(&info.FileName[0]))[:length:length] fileName := syscall.UTF16ToString(nameSlice)