diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2018-03-01 19:16:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-01 19:16:31 +0100 |
commit | 43fe6601682d13c5b05a1fc0850e5f294e636486 (patch) | |
tree | 8da577bcc34706b287cf5932ad14b56b53d5ede2 /plumbing/transport | |
parent | d8d17e72525d359044192b998b11926a4eecc2c4 (diff) | |
parent | 7fd7090a73f623c74c9f26fe2fcfc8ef86131fe1 (diff) | |
download | go-git-43fe6601682d13c5b05a1fc0850e5f294e636486.tar.gz |
Merge pull request #762 from zkry/escape-basic-auth-user-pswd
plubming: transport, Escape the user and pswd for endpoint. Fixes #723
Diffstat (limited to 'plumbing/transport')
-rw-r--r-- | plumbing/transport/common.go | 4 | ||||
-rw-r--r-- | plumbing/transport/common_test.go | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/plumbing/transport/common.go b/plumbing/transport/common.go index cc9682f..f7b882b 100644 --- a/plumbing/transport/common.go +++ b/plumbing/transport/common.go @@ -128,10 +128,10 @@ func (u *Endpoint) String() string { buf.WriteString("//") if u.User != "" || u.Password != "" { - buf.WriteString(u.User) + buf.WriteString(url.PathEscape(u.User)) if u.Password != "" { buf.WriteByte(':') - buf.WriteString(u.Password) + buf.WriteString(url.PathEscape(u.Password)) } buf.WriteByte('@') diff --git a/plumbing/transport/common_test.go b/plumbing/transport/common_test.go index 4203ce9..17f62a6 100644 --- a/plumbing/transport/common_test.go +++ b/plumbing/transport/common_test.go @@ -1,6 +1,7 @@ package transport import ( + "net/url" "testing" "gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability" @@ -153,6 +154,15 @@ func (s *SuiteCommon) TestNewEndpointFileURL(c *C) { c.Assert(e.String(), Equals, "file:///foo.git") } +func (s *SuiteCommon) TestValidEndpoint(c *C) { + e, err := NewEndpoint("http://github.com/user/repository.git") + e.User = "person@mail.com" + e.Password = " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" + url, err := url.Parse(e.String()) + c.Assert(err, IsNil) + c.Assert(url, NotNil) +} + func (s *SuiteCommon) TestNewEndpointInvalidURL(c *C) { e, err := NewEndpoint("http://\\") c.Assert(err, NotNil) |