On May 13, 2010, at 10:43 PM, sdumitriu (SVN) wrote:
Author: sdumitriu
Date: 2010-05-13 22:43:41 +0200 (Thu, 13 May 2010)
New Revision: 28858
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SkinAction.java
platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/web/SkinActionTest.java
Log:
XWIKI-2580: Improve file access sandboxing
Fixed.
Patch from Alex Busenius applied with minor changes.
[snip]
Modified:
platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/web/SkinActionTest.java
===================================================================
---
platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/web/SkinActionTest.java 2010-05-13
20:24:25 UTC (rev 28857)
+++
platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/web/SkinActionTest.java 2010-05-13
20:43:41 UTC (rev 28858)
@@ -20,6 +20,8 @@
*/
package com.xpn.xwiki.web;
+import java.io.IOException;
+
import org.jmock.cglib.MockObjectTestCase;
/**
@@ -66,4 +68,54 @@
{
assertFalse(this.action.isJavascriptMimeType(null));
}
+
+ public void testIncorrectSkinFile()
+ {
+ try {
+ this.action.getSkinFilePath("../../resources/js/xwiki/xwiki.js",
"colibri");
+ assertTrue("should fail", false);
This should be fail(....)
+ } catch (IOException e) {
This should be "exception" instead of "e"
Same below.
Note: Using junit4 this should be done using an annotation:
@Test(expected=IOException.class)
Thanks
-Vincent
> + // good
> + }
> + try {
> + this.action.getSkinFilePath("../../../",
"colibri");
> + assertTrue("should fail", false);
+ } catch (IOException e) {
> +
// good
> + }
> + try {
> + this.action.getSkinFilePath("resources/js/xwiki/xwiki.js",
"..");
> + assertTrue("should fail", false);
+ } catch (IOException e) {
> +
// good
> + }
> + try {
> + this.action.getSkinFilePath("../resources/js/xwiki/xwiki.js",
".");
> + assertTrue("should fail", false);
+ } catch (IOException e) {
> +
// good
> + }
> + }
> +
> + public void testIncorrectResourceFile()
> + {
> + try {
> +
this.action.getResourceFilePath("../../skins/js/xwiki/xwiki.js");
> + assertTrue("should fail", false);
+ } catch (IOException e) {
> +
// good
> + }
> + try {
> + this.action.getResourceFilePath("../../../");
> + assertTrue("should fail", false);
+ } catch (IOException e) {
> +
// good
> + }
> + try {
> + this.action.getResourceFilePath("../../redirect");
> + assertTrue("should fail", false);
+ } catch (IOException e) {
> +
// good
> + }
> + }
> }