import org.junit.Test;
public class DirCacheCheckoutMaliciousPathTest extends RepositoryTestCase {
+
protected ObjectId theHead;
protected ObjectId theMerge;
}
@Test
- public void testMaliciousPathEmpty() throws Exception {
- ((MockSystemReader) SystemReader.getInstance()).setCurrentPlatform();
+ public void testMaliciousPathEmptyUnix() throws Exception {
+ ((MockSystemReader) SystemReader.getInstance()).setUnix();
+ testMaliciousPathBadFirstCheckout("", "no");
+ }
+
+ @Test
+ public void testMaliciousPathEmptyWindows() throws Exception {
+ ((MockSystemReader) SystemReader.getInstance()).setWindows();
testMaliciousPathBadFirstCheckout("", "no");
}
// Space or period at end of file name is ignored by Windows.
// Treat this as a bad path for now. We may want to handle
// this as case insensitivity in the future.
- if (raw[ptr - 1] == '.' || raw[ptr - 1] == ' ')
- return false;
+ if (ptr > 0)
+ if (raw[ptr - 1] == '.' || raw[ptr - 1] == ' ')
+ return false;
int i;
// Bad names, eliminate suffix first
for (i = start; i < ptr; ++i)