diff options
author | Shawn Pearce <spearce@spearce.org> | 2014-03-11 22:49:36 -0700 |
---|---|---|
committer | Shawn Pearce <spearce@spearce.org> | 2014-03-12 15:53:30 -0700 |
commit | ba0f89b4211fd57fe52120ec9a7c3cbaadbadd3b (patch) | |
tree | 96405fd15d1f3fad088893d9ce397820b70acd65 /org.eclipse.jgit.test/tst/org/eclipse/jgit/lib | |
parent | 5019471ccb5f6283c0bbde6f697631f928fea987 (diff) | |
download | jgit-ba0f89b4211fd57fe52120ec9a7c3cbaadbadd3b.tar.gz jgit-ba0f89b4211fd57fe52120ec9a7c3cbaadbadd3b.zip |
Reject special Windows device names in ObjectChecker
If Windows rejection is enabled reject special device names like
NUL and PRN, including NUL.txt. This prevents a tree that might
be used on a Windows client from referencing a confusing name.
Change-Id: Ic700ea8fa68724509e0357d4b758a41178c4d70c
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit/lib')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectCheckerTest.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectCheckerTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectCheckerTest.java index 3e9195eea3..d434c852e6 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectCheckerTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectCheckerTest.java @@ -1039,6 +1039,7 @@ public class ObjectCheckerTest { checkOneName("a<b>c:d|e"); checkOneName("test "); checkOneName("test."); + checkOneName("NUL"); } @Test @@ -1457,6 +1458,29 @@ public class ObjectCheckerTest { } @Test + public void testRejectDevicesOnWindows() { + checker.setSafeForWindows(true); + + String[] bad = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", + "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", + "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }; + for (String b : bad) { + try { + checkOneName(b); + fail("incorrectly accepted " + b); + } catch (CorruptObjectException e) { + assertEquals("invalid name '" + b + "'", e.getMessage()); + } + try { + checkOneName(b + ".txt"); + fail("incorrectly accepted " + b + ".txt"); + } catch (CorruptObjectException e) { + assertEquals("invalid name '" + b + "'", e.getMessage()); + } + } + } + + @Test public void testRejectInvalidWindowsCharacters() { checker.setSafeForWindows(true); rejectName('<'); |