diff options
author | Mark Rada <marada@uwaterloo.ca> | 2009-09-26 13:46:08 -0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2009-09-29 10:06:51 -0700 |
commit | fdb0c36e903d13c184f9a465035c75565c5c072a (patch) | |
tree | c7deeda56ce7eb610db3ec4c44e671b96fe8203d /gitweb | |
parent | 1be224ba6e99f0ab34c998d7fa8023b76a15c8b6 (diff) | |
download | git-fdb0c36e903d13c184f9a465035c75565c5c072a.tar.gz git-fdb0c36e903d13c184f9a465035c75565c5c072a.tar.xz |
gitweb: check given hash before trying to create snapshot
Makes things nicer in cases when you hand craft the snapshot URL but
make a typo in defining the hash variable (e.g. netx instead of next);
you will now get an error message instead of a broken tarball.
Tests for t9501 are included to demonstrate added functionality.
Signed-off-by: Mark Rada <marada@uwaterloo.ca>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'gitweb')
-rwxr-xr-x | gitweb/gitweb.perl | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 24b219310..8d4a2ae60 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -5196,8 +5196,11 @@ sub git_snapshot { die_error(403, "Unsupported snapshot format"); } - if (!defined $hash) { - $hash = git_get_head_hash($project); + my $type = git_get_type("$hash^{}"); + if (!$type) { + die_error(404, 'Object does not exist'); + } elsif ($type eq 'blob') { + die_error(400, 'Object is not a tree-ish'); } my $name = $project; |