summaryrefslogtreecommitdiff
path: root/gitweb/gitweb.perl
diff options
context:
space:
mode:
authorMarcelo Roberto Jimenez <marcelo.jimenez@gmail.com>2024-01-10 22:57:09 (GMT)
committerJunio C Hamano <gitster@pobox.com>2024-01-11 00:08:21 (GMT)
commitac62a3649fcfd7f2caa80ffdfb8c3135764291ef (patch)
tree97902ef02d65f5130e2a447143485667c5fc5695 /gitweb/gitweb.perl
parent564d0252ca632e0264ed670534a51d18a689ef5d (diff)
downloadgit-ac62a3649fcfd7f2caa80ffdfb8c3135764291ef.zip
git-ac62a3649fcfd7f2caa80ffdfb8c3135764291ef.tar.gz
git-ac62a3649fcfd7f2caa80ffdfb8c3135764291ef.tar.bz2
gitweb: die when a configuration file cannot be read
Fix a possibility of a permission to access error go unnoticed. Perl uses two different variables to manage errors from a "do $filename" construct. One is $@, which is set in this case when do is unable to compile the file. The other is $!, which is set in case do cannot read the file. The current code only checks "$@", which means a configuration file passed to GitWeb that is not readable by the server process does not cause it to "die". Make sure we also check and act on "$!" to fix this. Signed-off-by: Marcelo Roberto Jimenez <marcelo.jimenez@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'gitweb/gitweb.perl')
-rwxr-xr-xgitweb/gitweb.perl4
1 files changed, 3 insertions, 1 deletions
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index e66eb3d..5d01220 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -728,9 +728,11 @@ our $per_request_config = 1;
sub read_config_file {
my $filename = shift;
return unless defined $filename;
- # die if there are errors parsing config file
if (-e $filename) {
do $filename;
+ # die if there is a problem accessing the file
+ die $! if $!;
+ # die if there are errors parsing config file
die $@ if $@;
return 1;
}