]> git.ipfire.org Git - thirdparty/git.git/commitdiff
gitweb: die when a configuration file cannot be read
authorMarcelo Roberto Jimenez <marcelo.jimenez@gmail.com>
Wed, 10 Jan 2024 22:57:09 +0000 (19:57 -0300)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Jan 2024 00:08:21 +0000 (16:08 -0800)
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>
gitweb/gitweb.perl

index e66eb3d9bad7cf627d5ed35e13e32dafb556d5cd..5d0122020fad2907380df145e0445e7355484797 100755 (executable)
@@ -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;
        }