<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/gitweb/gitweb.perl, branch v2.32.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.32.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.32.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2021-04-08T22:54:26Z</updated>
<entry>
<title>gitweb: add "e-mail privacy" feature to redact e-mail addresses</title>
<updated>2021-04-08T22:54:26Z</updated>
<author>
<name>Georgios Kontaxis</name>
<email>geko1702+commits@99rst.org</email>
</author>
<published>2021-03-28T23:26:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0996dd3d6dbcc132cf212f3420b89947fd9cc2ba'/>
<id>urn:sha1:0996dd3d6dbcc132cf212f3420b89947fd9cc2ba</id>
<content type='text'>
Gitweb extracts content from the Git log and makes it accessible
over HTTP. As a result, e-mail addresses found in commits are
exposed to web crawlers and they may not respect robots.txt.
This can result in unsolicited messages.

Introduce an 'email-privacy' feature which redacts e-mail addresses
from the generated HTML content. Specifically, obscure addresses
retrieved from the the author/committer and comment sections of the
Git log. The feature is off by default.

This feature does not prevent someone from downloading the
unredacted commit log, e.g., by cloning the repository, and
extracting information from it. It aims to hinder the low-
effort, bulk collection of e-mail addresses by web crawlers.

Signed-off-by: Georgios Kontaxis &lt;geko1702+commits@99rst.org&gt;
Acked-by: Eric Wong &lt;e@80x24.org&gt;
Acked-by: Ævar Arnfjörð Bjarmason &lt;avarab@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'eb/gitweb-more-trailers'</title>
<updated>2020-05-01T20:39:56Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-05-01T20:39:55Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=49349e988318d4bdf89b8c9a03916533bede4b8b'/>
<id>urn:sha1:49349e988318d4bdf89b8c9a03916533bede4b8b</id>
<content type='text'>
Gitweb updates.

* eb/gitweb-more-trailers:
  gitweb: Recognize *-to and Closes/Fixes trailers
</content>
</entry>
<entry>
<title>gitweb: Recognize *-to and Closes/Fixes trailers</title>
<updated>2020-04-25T05:19:04Z</updated>
<author>
<name>Emma Brooks</name>
<email>me@pluvano.com</email>
</author>
<published>2020-04-25T02:17:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4d9378bfad4a283d5e06fbbeba80b5db6be73bc4'/>
<id>urn:sha1:4d9378bfad4a283d5e06fbbeba80b5db6be73bc4</id>
<content type='text'>
Commit trailers like "Thanks-to:", "Fixes:", and "Closes:" are fairly
common, but gitweb didn't highlight them like other trailers.

Signed-off-by: Emma Brooks &lt;me@pluvano.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>gitweb: fix UTF-8 encoding when using CGI::Fast</title>
<updated>2020-03-29T16:06:51Z</updated>
<author>
<name>Julien Moutinho</name>
<email>julm+git@sourcephile.fr</email>
</author>
<published>2020-03-29T00:20:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=2ecfcdecc612505291cfdffb886b5d7615c3e581'/>
<id>urn:sha1:2ecfcdecc612505291cfdffb886b5d7615c3e581</id>
<content type='text'>
FCGI streams are implemented using the older stream API: TIEHANDLE,
therefore applying PerlIO layers using binmode() has no effect to them.
The solution in this patch is to redefine the FCGI::Stream::PRINT function
to use UTF-8 as output encoding, except within git_blob_plain() and git_snapshot()
which must still output in raw binary mode.

This problem and solution were previously reported back in 2012:
- http://git.661346.n2.nabble.com/Gitweb-running-as-FCGI-does-not-print-its-output-in-UTF-8-td7573415.html
- http://stackoverflow.com/questions/5005104

Signed-off-by: Julien Moutinho &lt;julm+git@sourcephile.fr&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'do/gitweb-typofix-in-comments'</title>
<updated>2020-01-08T20:44:11Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-01-08T20:44:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c5dc20638baf54c43092ee676e0692cba954b194'/>
<id>urn:sha1:c5dc20638baf54c43092ee676e0692cba954b194</id>
<content type='text'>
Typofix.

* do/gitweb-typofix-in-comments:
  gitweb: fix a couple spelling errors in comments
</content>
</entry>
<entry>
<title>gitweb: fix a couple spelling errors in comments</title>
<updated>2020-01-04T23:09:33Z</updated>
<author>
<name>Denis Ovsienko</name>
<email>denis@ovsienko.info</email>
</author>
<published>2020-01-04T17:39:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4e2c4c0d4f0e44909a7e38caadbb79ef9534f3e2'/>
<id>urn:sha1:4e2c4c0d4f0e44909a7e38caadbb79ef9534f3e2</id>
<content type='text'>
Signed-off-by: Denis Ovsienko &lt;denis@ovsienko.info&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/gitweb-anti-xss'</title>
<updated>2019-12-01T17:04:41Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2019-12-01T17:04:41Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6c630f237e72d3adef8a089bdf984ec1e47b2708'/>
<id>urn:sha1:6c630f237e72d3adef8a089bdf984ec1e47b2708</id>
<content type='text'>
Some codepaths in "gitweb" that forgot to escape URLs generated
based on end-user input have been corrected.

* jk/gitweb-anti-xss:
  gitweb: escape URLs generated by href()
  t/gitweb-lib.sh: set $REQUEST_URI
  t/gitweb-lib.sh: drop confusing quotes
  t9502: pass along all arguments in xss helper
</content>
</entry>
<entry>
<title>gitweb: escape URLs generated by href()</title>
<updated>2019-11-18T01:46:56Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2019-11-15T09:06:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=a376e37b2c418b8f630741552d76a5b18c87c133'/>
<id>urn:sha1:a376e37b2c418b8f630741552d76a5b18c87c133</id>
<content type='text'>
There's a cross-site scripting problem in gitweb, where it will print
URLs generated by its href() helper without further quoting. This allows
an attacker to point a victim to a specially crafted gitweb URL and
inject arbitrary HTML into the resulting page (which the victim sees as
coming from gitweb).

The base of the URL comes from evaluate_uri(), which pulls the value of
$REQUEST_URI via the CGI module. It tries to strip off $PATH_INFO, but
fails to do so in some cases (including ones that contain special
characters, like "+"). Most of the uses of the URL end up being passed
to "$cgi-&gt;a(-href = href())", which will get quoted properly by the CGI
module. But in a few places, we output them ourselves as part of
manually-generated HTML, and whatever was in the original URL will
appear unquoted in the output.

Given that all of the nearby variables placed into this manual HTML
_are_ quoted, it seems like the authors assumed that these URLs would
not need quoting. So it's possible that the bug is actually in
evaluate_uri(), which should be doing a more careful job of stripping
$PATH_INFO. There's some discussion in a comment in that function, as
well as the commit message in 81d3fe9f48 (gitweb: fix wrong base URL
when non-root DirectoryIndex, 2009-02-15). But I'm not sure I understand
it.

Regardless, it's a good idea to quote these values at the point of
insertion into the HTML output:

  1. Even if there is a bug in evaluate_uri(), this would give us
     belt-and-suspenders protection.

  2. evaluate_uri() is only handling the base. Some generated URLs will
     also mention arbitrary refs or filenames in the repositories, and
     these should be quoted anyway.

  3. It should never _hurt_ to quote (and that's what all of the
     $cgi-&gt;a() calls are doing already).

So there may be further work here, but this patch at least prevents the
XSS vulnerability, and shouldn't make anything worse.

The test here covers the calls in print_feed_meta(), but I manually
audited every call to href() to see how its output was used, and quoted
appropriately. Most of them are esc_attr(), as they're used in tag
attributes, but I used esc_html() when the URLs were printed bare. The
distinction is largely academic, as one is implemented as a wrapper for
the other.

Reported-by: NAKAYAMA DAISUKE &lt;nakyamad@icloud.com&gt;
Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Fix spelling errors in code comments</title>
<updated>2019-11-10T07:00:54Z</updated>
<author>
<name>Elijah Newren</name>
<email>newren@gmail.com</email>
</author>
<published>2019-11-05T17:07:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=15beaaa3d1f6b555900446deb5e376b4f806d734'/>
<id>urn:sha1:15beaaa3d1f6b555900446deb5e376b4f806d734</id>
<content type='text'>
Reported-by: Jens Schleusener &lt;Jens.Schleusener@fossies.org&gt;
Signed-off-by: Elijah Newren &lt;newren@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>gitweb: make hash size independent</title>
<updated>2019-04-01T02:57:39Z</updated>
<author>
<name>brian m. carlson</name>
<email>sandals@crustytoothpaste.net</email>
</author>
<published>2019-02-19T00:05:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cfb049119c9e8b8f66a2e1faf1621ac48f714412'/>
<id>urn:sha1:cfb049119c9e8b8f66a2e1faf1621ac48f714412</id>
<content type='text'>
Gitweb has several hard-coded 40 values throughout it to check for
values that are passed in or acquired from Git.  To simplify the code,
introduce a regex variable that matches either exactly 40 or exactly 64
hex characters, and use this variable anywhere we would have previously
hard-coded a 40 in a regex.

Add some helper functions which allow us to write tighter regexes that
match exactly the number of hex characters we're expecting.

Similarly, switch the code that looks for deleted diffinfo information
to look for either 40 or 64 zeros, and update one piece of code to use
this function.  Finally, when formatting a log line, allow an
abbreviated describe output to contain up to 64 characters.

Helped-by: Ævar Arnfjörð Bjarmason &lt;avarab@gmail.com&gt;
Signed-off-by: brian m. carlson &lt;sandals@crustytoothpaste.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
