fix(Windows): reject absolute paths from fs.watch recursive to preven…#1263
Open
Diarica wants to merge 1 commit into
Open
fix(Windows): reject absolute paths from fs.watch recursive to preven…#1263Diarica wants to merge 1 commit into
Diarica wants to merge 1 commit into
Conversation
…t RangeError
On Windows, fs.watch with {recursive: true} can deliver file-change events
for paths OUTSIDE the watched directory via ReadDirectoryChangesW. A
common trigger is system services writing to %ProgramData% (e.g.,
Autodesk CER), which produces filenames like \ProgramData\Autodesk\CER.
After normalizePath converts backslashes, these arrive as
"/ProgramData/Autodesk/CER" — an absolute-looking path that the ignore
package rejects with "path should be a `path.relative()`d string".
Add a path.isAbsolute() guard in handleChange() (right after the existing
empty/./.. filter) so that any absolute path from the recursive watcher is
silently dropped before it reaches the ignore matcher. Legitimate
project-relative changes are never absolute, so this is always safe.
Fixes the MCP server crash for any Windows user with Autodesk software
installed (or any other system service that writes to %ProgramData%).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…t RangeError
On Windows, fs.watch with {recursive: true} can deliver file-change events for paths OUTSIDE the watched directory via ReadDirectoryChangesW. A common trigger is system services writing to %ProgramData% (e.g., Autodesk CER), which produces filenames like \ProgramData\Autodesk\CER. After normalizePath converts backslashes, these arrive as "/ProgramData/Autodesk/CER" — an absolute-looking path that the ignore package rejects with "path should be a
path.relative()d string".Add a path.isAbsolute() guard in handleChange() (right after the existing empty/./.. filter) so that any absolute path from the recursive watcher is silently dropped before it reaches the ignore matcher. Legitimate project-relative changes are never absolute, so this is always safe.
Fixes the MCP server crash for any Windows user with Autodesk software installed (or any other system service that writes to %ProgramData%).