[PATCHv2/RFC 2/3] gitweb: Harden parse_commit and parse_commits
From: Jakub Narebski <hidden>
Date: 2016-06-15 22:53:05
Subsystem:
the rest · Maintainer:
Linus Torvalds
Gitweb has problems and gives errors when repository it shows is on unborn branch (HEAD doesn't point to a valid commit), but there exist other branches. One of errors that shows in gitweb logs is undefined $commit_id in parse_commits() subroutine. Therefore we harden both parse_commit() and parse_commits() against undefined $commit_id, and against no output from git-rev-list because HEAD doesn't point to a commit. Reported-by: rajesh boyapati <redacted> Signed-off-by: Jakub Narebski <redacted> --- This patch first appeared on git mailing list in "Fwd: Git-web error" thread as [PATCH] gitweb: Harden parse_commit and parse_commits Message-Id: [ref] http://article.gmane.org/gmane.comp.version-control.git/190237 More prevention of generating warnings, rather than real fix. gitweb/gitweb.perl | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 0fdca5b..2eaf585 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl@@ -3334,6 +3334,8 @@ sub parse_commit { my ($commit_id) = @_; my %co; + return unless defined $commit_id; + local $/ = "\0"; open my $fd, "-|", git_cmd(), "rev-list",
@@ -3343,7 +3345,9 @@ sub parse_commit { $commit_id, "--", or die_error(500, "Open git-rev-list failed"); - %co = parse_commit_text(<$fd>, 1); + my $commit_text = <$fd>; + %co = parse_commit_text($commit_text, 1) + if defined $commit_text; close $fd; return %co;
@@ -3353,6 +3357,7 @@ sub parse_commits { my ($commit_id, $maxcount, $skip, $filename, @args) = @_; my @cos; + return unless defined $commit_id; $maxcount ||= 1; $skip ||= 0;
--
1.7.9