summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFlorian Zschocke <f.zschocke+git@gmail.com>2020-11-09 20:27:31 +0100
committerFlorian Zschocke <f.zschocke+git@gmail.com>2020-11-10 00:02:53 +0100
commit3212dc014c445425cc09f8d92065f1afb4e53065 (patch)
tree73413419bbe4c892257af8407755f1d079e92f99 /src
parent1570199d3fc21c26b1c2a6603b9dc24317176b3f (diff)
downloadgitblit-3212dc014c445425cc09f8d92065f1afb4e53065.tar.gz
gitblit-3212dc014c445425cc09f8d92065f1afb4e53065.zip
raw: Fix getPath with trailing slash that was escaped
While this may be an unlikely scenario, let's still prevent this. When a link was created for a path that ends in a trailing slash, that trailing slash would be replaced with the `forwardSlashCharacter`. But in getPath that final slash would be transformed back *after* the check to chop off trailing slashes. This is now switched so that such a trailing slash is also chopped off.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/gitblit/servlet/RawServlet.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/com/gitblit/servlet/RawServlet.java b/src/main/java/com/gitblit/servlet/RawServlet.java
index 90e8ac74..b0cba787 100644
--- a/src/main/java/com/gitblit/servlet/RawServlet.java
+++ b/src/main/java/com/gitblit/servlet/RawServlet.java
@@ -179,14 +179,18 @@ public class RawServlet extends HttpServlet {
// 'leadin/repository/branch/'
if (pathStart < pathInfo.length() && pathInfo.charAt(pathStart) == '/') pathStart++;
if (pathInfo.length() == pathStart) return "";
+ // 'leadin/repository/branch/path'
String path = pathInfo.substring(pathStart);
+
+ char c = runtimeManager.getSettings().getChar(Keys.web.forwardSlashCharacter, '/');
+ path = path.replace('!', '/').replace(c, '/');
+
+ // 'repository/branch/path/'
// 'leadin/repository/branch/path/'
if (path.endsWith("/")) {
path = path.substring(0, path.length() - 1);
}
- // 'leadin/repository/branch/path'
- char c = runtimeManager.getSettings().getChar(Keys.web.forwardSlashCharacter, '/');
- return path.replace('!', '/').replace(c, '/');
+ return path;
}
protected boolean renderIndex() {