#!/usr/local/bin/perl -I/nfs/saruman/bmc/lib -w
#
# $Id: verify-rule,v 1.1 2007/07/12 14:01:14 bmc Exp $
#

use strict;
use Fatal qw/open close/;
use Net::Snort::Parser::File;
use Net::Snort::Parser::Rule;

my $rule_parser = Net::Snort::Parser::Rule->new();
$rule_parser->max_ruleopt_len(1024);

my $failed = 0;
foreach my $file (@ARGV) {
    my @lines = parse_file($file);
    foreach my $line (@lines) {
        if (check($line->{'line'})) {
            $failed++;
        }
    }
}

sub check {
    my ($input) = @_;
    if (length($input) > 1023) {
        warn "FAILED : too long => $input\n";
        return 1;
    }
    my $rule = $rule_parser->parse_rule($input);
    if ($rule) {
        if ($rule->{'failed'}) {
            warn "FAILED : $rule->{'failed'} => $input\n";
            return 1;
        }
    }
}

exit($failed);
