From 6769209934db0c122ec7e2be2b6d74ae00ceaae1 Mon Sep 17 00:00:00 2001 From: Jacob Bachmeyer Date: Mon, 31 Oct 2022 22:23:24 -0500 Subject: [PATCH] Fix use of uninitialized values in interpret_directive --- gatekeeper.pl | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/gatekeeper.pl b/gatekeeper.pl index 3ca143a..5647cab 100755 --- a/gatekeeper.pl +++ b/gatekeeper.pl @@ -1656,15 +1656,18 @@ sub interpret_directive { my @versions = grep $_->[0] eq 'version', @$directive; if (scalar @versions == 1) { - $versions[0][1] =~ /^(\d+\.\d+)$/ - or push @errors, "invalid version $versions[0][1]"; - my $val = $1; # so far so good + if ($versions[0][1] =~ /^(\d+\.\d+)$/) { + my $val = $1; # so far so good - # We only support version 1.1/1.2 right now! - push @errors, "invalid version $val, not supported" - if (($val ne '1.1') and ($val ne '1.2')); + # We only support version 1.1/1.2 right now! + push @errors, "invalid version $val, not supported" + if (($val ne '1.1') and ($val ne '1.2')); - $header{version} = $val; # TODO: parse? + $header{version} = $val; # TODO: parse? + } else { + # version value does not match required pattern + push @errors, "invalid version $versions[0][1]"; + } } elsif (scalar @versions > 1) { push @errors, "invalid multiple version elements"; } else { # no version at all; no longer allowed @@ -1676,7 +1679,9 @@ sub interpret_directive { my $tainted_cmd = lc $item->[0]; my $tainted_val = $item->[1]; - if ($tainted_cmd eq 'directory') { + if (!$tainted_val && !($tainted_cmd =~ m/^comment|^no-op/)) { + push @errors, "invalid $tainted_cmd element with no value"; + } elsif ($tainted_cmd eq 'directory') { unless ($tainted_val =~ m/^($RE_filename_relative)$/) { push @errors, "invalid directory $tainted_val"; next; -- 2.25.1