diff options
author | Thomas Spura <tomspur@fedoraproject.org> | 2010-07-30 22:52:13 +0200 |
---|---|---|
committer | Thomas Spura <tomspur@fedoraproject.org> | 2010-07-30 22:52:13 +0200 |
commit | 383e396ac5599f312be817126ef2e195939338ca (patch) | |
tree | 465994e52507e06c5a69aa18f37439054c1094bf | |
parent | 4764d30f286c50e99c7b13afa7488fee5d9a0287 (diff) | |
download | git-package-383e396ac5599f312be817126ef2e195939338ca.tar.gz git-package-383e396ac5599f312be817126ef2e195939338ca.tar.xz git-package-383e396ac5599f312be817126ef2e195939338ca.zip |
cherry-pick: "Do not unquote + into ' ' in URLs"
There are problems with this bug in dist-git.
-rw-r--r-- | git-1.7.2.1-730220de.patch | 86 | ||||
-rw-r--r-- | git.spec | 9 |
2 files changed, 94 insertions, 1 deletions
diff --git a/git-1.7.2.1-730220de.patch b/git-1.7.2.1-730220de.patch new file mode 100644 index 0000000..fdf4d2e --- /dev/null +++ b/git-1.7.2.1-730220de.patch @@ -0,0 +1,86 @@ +commit 730220de8be669257287e9a1f5dde349ace5426a +Author: Thomas Rast <trast@student.ethz.ch> +Date: Sat Jul 24 16:49:04 2010 +0200 + + Do not unquote + into ' ' in URLs + + Since 9d2e942 (decode file:// and ssh:// URLs, 2010-05-23) the URL + logic unquotes escaped URLs. For the %2B type of escape, this is + conformant with RFC 2396. However, it also unquotes + into a space + character, which is only appropriate for the query strings in HTTP. + This notably broke fetching from the gtk+ repository. + + We cannot just remove the corresponding code since the same + url_decode_internal() is also used by the HTTP backend to decode query + parameters. Introduce a new argument that controls whether the + + decoding happens, and use it only in the (client-side) url_decode(). + + Reported-by: Jasper St. Pierre <jstpierre@mecheye.net> + Signed-off-by: Thomas Rast <trast@student.ethz.ch> + Signed-off-by: Junio C Hamano <gitster@pobox.com> + +diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh +index 8abb71a..4431dfd 100755 +--- a/t/t5601-clone.sh ++++ b/t/t5601-clone.sh +@@ -178,8 +178,14 @@ test_expect_success 'clone respects global branch.autosetuprebase' ' + + test_expect_success 'respect url-encoding of file://' ' + git init x+y && +- test_must_fail git clone "file://$PWD/x+y" xy-url && +- git clone "file://$PWD/x%2By" xy-url ++ git clone "file://$PWD/x+y" xy-url-1 && ++ git clone "file://$PWD/x%2By" xy-url-2 ++' ++ ++test_expect_success 'do not query-string-decode + in URLs' ' ++ rm -rf x+y && ++ git init "x y" && ++ test_must_fail git clone "file://$PWD/x+y" xy-no-plus + ' + + test_expect_success 'do not respect url-encoding of non-url path' ' +diff --git a/url.c b/url.c +index 2306236..cd8f74f 100644 +--- a/url.c ++++ b/url.c +@@ -67,7 +67,8 @@ static int url_decode_char(const char *q) + return val; + } + +-static char *url_decode_internal(const char **query, const char *stop_at, struct strbuf *out) ++static char *url_decode_internal(const char **query, const char *stop_at, ++ struct strbuf *out, int decode_plus) + { + const char *q = *query; + +@@ -90,7 +91,7 @@ static char *url_decode_internal(const char **query, const char *stop_at, struct + } + } + +- if (c == '+') ++ if (decode_plus && c == '+') + strbuf_addch(out, ' '); + else + strbuf_addch(out, c); +@@ -110,17 +111,17 @@ char *url_decode(const char *url) + strbuf_add(&out, url, colon - url); + url = colon; + } +- return url_decode_internal(&url, NULL, &out); ++ return url_decode_internal(&url, NULL, &out, 0); + } + + char *url_decode_parameter_name(const char **query) + { + struct strbuf out = STRBUF_INIT; +- return url_decode_internal(query, "&=", &out); ++ return url_decode_internal(query, "&=", &out, 1); + } + + char *url_decode_parameter_value(const char **query) + { + struct strbuf out = STRBUF_INIT; +- return url_decode_internal(query, "&", &out); ++ return url_decode_internal(query, "&", &out, 1); + } @@ -7,7 +7,7 @@ Name: git Version: 1.7.2.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast Version Control System License: GPLv2 Group: Development/Tools @@ -23,6 +23,9 @@ Patch0: git-1.5-gitweb-home-link.patch Patch1: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch # https://bugzilla.redhat.com/500137 Patch2: git-1.6-update-contrib-hooks-path.patch +# Do not unquote + into ' ' in URLs +# cherry-picked from upstream +Patch3: git-1.7.2.1-730220de.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: desktop-file-utils @@ -227,6 +230,7 @@ Requires: emacs-git = %{version}-%{release} %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 # Use these same options for every invocation of 'make'. # Otherwise it will rebuild in %%install due to flags changes. @@ -454,6 +458,9 @@ rm -rf %{buildroot} # No files for you! %changelog +* Fri Jul 30 2010 Thomas Spura <tomspur@fedoraproject.org> - 1.7.2.1-2 +- cherry-pick: "Do not unquote + into ' ' in URLs" + * Thu Jul 29 2010 Todd Zullinger <tmz@pobox.com> - 1.7.2.1-1 - Update to git-1.7.2.1 |