]> source.dussan.org Git - gitblit.git/commitdiff
Fix cloning repositories with + in their names 00/100/2
authorJames Moger <james.moger@gitblit.com>
Tue, 10 Jun 2014 21:38:45 +0000 (17:38 -0400)
committerJames Moger <james.moger@gitblit.com>
Thu, 12 Jun 2014 22:52:41 +0000 (18:52 -0400)
src/main/java/com/gitblit/servlet/AuthenticationFilter.java
src/main/java/com/gitblit/utils/StringUtils.java
src/site/administration.mkd

index dd821ac70f2cf086cdde220daf330cf4f20f6425..ddb85f49068ebe1cbb380ebc7c81410a453b97cf 100644 (file)
@@ -16,8 +16,6 @@
 package com.gitblit.servlet;\r
 \r
 import java.io.IOException;\r
-import java.io.UnsupportedEncodingException;\r
-import java.net.URLDecoder;\r
 import java.security.Principal;\r
 import java.util.Enumeration;\r
 import java.util.HashMap;\r
@@ -102,12 +100,6 @@ public abstract class AuthenticationFilter extends DaggerFilter {
                        url = url.substring(1);\r
                }\r
                String fullUrl = url + (StringUtils.isEmpty(params) ? "" : ("?" + params));\r
-               try {\r
-                       fullUrl = URLDecoder.decode(fullUrl, "UTF-8");\r
-               } catch (UnsupportedEncodingException e) {\r
-                       logger.warn("UTF-8 decoding of URL failed: "+fullUrl, e);\r
-                       e.printStackTrace();\r
-               }\r
                return fullUrl;\r
        }\r
 \r
index d7e1ea3db756ee49e38742e437d8f367961e9277..087de5430df4b0cfce7d6fc7dabb7b7b5b555d13 100644 (file)
@@ -129,6 +129,8 @@ public class StringUtils {
                                retStr.append("%20");\r
                        } else if (inStr.charAt(i) == '&') {\r
                                retStr.append("%26");\r
+                       } else if (inStr.charAt(i) == '+') {\r
+                               retStr.append("%2B");\r
                        } else {\r
                                retStr.append(inStr.charAt(i));\r
                        }\r
@@ -398,7 +400,7 @@ public class StringUtils {
         * @return the first invalid character found or null if string is acceptable\r
         */\r
        public static Character findInvalidCharacter(String name) {\r
-               char[] validChars = { '/', '.', '_', '-', '~' };\r
+               char[] validChars = { '/', '.', '_', '-', '~', '+' };\r
                for (char c : name.toCharArray()) {\r
                        if (!Character.isLetterOrDigit(c)) {\r
                                boolean ok = false;\r
index 6fc334e417d5a3ef9a7eb14f51b33d133a5eec5a..049a8273e75d9de5fdcd796ff84b4bd7f2465cb4 100644 (file)
@@ -20,7 +20,7 @@ All repository settings are stored within the repository `.git/config` file unde
            federationSets = \r
 \r
 #### Repository Names\r
-Repository names must be case-insensitive-unique but are CASE-SENSITIVE ON CASE-SENSITIVE FILESYSTEMS.  The name must be composed of letters, digits, or `/ _ - . ~`<br/>\r
+Repository names must be case-insensitive-unique but are CASE-SENSITIVE ON CASE-SENSITIVE FILESYSTEMS.  The name must be composed of letters, digits, or `/ _ - . ~ +`<br/>\r
 Whitespace is illegal.\r
 \r
 Repositories can be grouped within subfolders.  e.g. *libraries/mycoollib.git* and *libraries/myotherlib.git*\r