- Raw servlet was insecure. If someone knew the exact repository name and path to a file, the raw blob could be retrieved bypassing security constraints. (issue 198)\r
fixes:\r
- Could not reset settings with $ or { characters through Gitblit Manager because they are not properly escaped\r
+ - Added more error checking to blob page\r
- Fix NPE when getting user's fork without repository list caching (issue 182)\r
- Fix internal error on folder history links (issue 192)\r
- Fixed incorrect icon file name for .doc files (issue 200)\r
gb.isSparkleshared = repository is Sparkleshared\r
gb.owners = owners\r
gb.sessionEnded = Session has been closed\r
-gb.closeBrowser = Please close the browser to properly end the session.
\ No newline at end of file
+gb.closeBrowser = Please close the browser to properly end the session.\r
+gb.doesNotExistInTree = {0} does not exist in tree {1}
\ No newline at end of file
default:\r
// plain text\r
String source = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings);\r
- String table = generateSourceView(source, type == 1);\r
+ String table;\r
+ if (source == null) {\r
+ table = missingBlob(blobPath, commit);\r
+ } else {\r
+ table = generateSourceView(source, type == 1);\r
+ }\r
add(new Label("blobText", table).setEscapeModelStrings(false));\r
add(new Image("blobImage").setVisible(false));\r
}\r
} else {\r
// plain text\r
String source = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings);\r
- String table = generateSourceView(source, false);\r
+ String table;\r
+ if (source == null) {\r
+ table = missingBlob(blobPath, commit);\r
+ } else {\r
+ table = generateSourceView(source, false);\r
+ }\r
add(new Label("blobText", table).setEscapeModelStrings(false));\r
add(new Image("blobImage").setVisible(false));\r
}\r
}\r
}\r
\r
+ protected String missingBlob(String blobPath, RevCommit commit) {\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append("<div class=\"alert alert-error\">");\r
+ String pattern = getString("gb.doesNotExistInTree").replace("{0}", "<b>{0}</b>").replace("{1}", "<b>{1}</b>");\r
+ sb.append(MessageFormat.format(pattern, blobPath, commit.getTree().getId().getName()));\r
+ sb.append("</div>");\r
+ return sb.toString();\r
+ }\r
+ \r
protected String generateSourceView(String source, boolean prettyPrint) {\r
String [] lines = source.split("\n");\r
\r