Disallow ?FORMAT when $max_format == 1

Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
Tom Eastep 2012-12-25 08:10:48 -08:00
parent 575020c851
commit 3f28af80d2

View File

@ -2006,7 +2006,14 @@ sub do_open_file( $ ) {
$currentfilename = $fname;
}
#
# Arguments are:
#
# - file name
# - Maximum value allowed in ?FORMAT directives
# - ?COMMENT allowed in this file
# - Ignore ?COMMENT in ths file
#
sub open_file( $;$$$ ) {
my ( $fname, $mf, $ca, $nc ) = @_;
@ -2275,6 +2282,7 @@ sub process_compiler_directive( $$$$ ) {
FORMAT => sub() {
unless ( $omitting ) {
directive_error( "?FORMAT is not allowed in this file", $filename, $linenumber ) unless $max_format > 1;
directive_error( "Missing format", $filename, $linenumber ) unless supplied $expression;
directive_error( "Invalid format ($expression)", $filename, $linenumber ) unless $expression =~ /^\d+$/;
directive_error( "Format must be between 1 and $max_format", $filename, $linenumber ) unless $expression && $expression <= $max_format;