The folder name was listed in File Explorer with just plain four dots ....
.
When I tried opening it, I came into some kind of endless rabbit hole loop where I opened the exact same folder again and again - I could do this endlessly. Showing the path like C:\ExamplePath\....\....\....\....\....
, etc.
It was hanging my TypeScript compilation in one specific project. It took me more than a year before I found this folder and its related problems, because it was rooted deeply in nested folders. I never expected an issue like this, so I never looked for it.
I couldn't delete the folder the normal way because of the special name. In the end, I could remove it by using the command line and deleting the parent folder with rd /s /q path
.
Afterward, I tried to create the folder again but was unable to do so with both File Explorer and the command line.
In my 20-plus years of using Windows I have never seen this bug before, so I can imagine that it would really be an annoying and confusing problem for amateur users.
Does anyone know how this could have happened and how to reproduce this issue?
Update
For people who are interested: this path was located deep within a TFS folder. So probably TFS uses the bypass method @grawity explained ("Various file managers, archivers, etc")
Did I stumble on a rare TFS bug?
..
can be used in a path to indicate 'go up one folder', I would hazard a guess that somewhere along the line, some program or script concatenated two strings to create a path, one ended with..
, and the next began with..
, and since it used one of the techniques mentioned below, it succeeded in creating the path, even though it was missing the folder separator between them.GET /....\\....\\....\\....\\....\\....\\....\\....\\....\\winnt\\win.ini
. Clearly there is/was some vulnerability somewhere that this attempts to exploit...
, not....
. It's simply a way to traverse to\winnt
regardless of the depth of the starting point (the web root), so long as the starting point is less than 9 levels deep. It relies on the fact that going..
from the root directory leaves you at the root directory...
which was why I found this one rather odd.