ICMP6 type/code validation test, perl warnings test
authorMichael Rash <mbr@cipherdyne.org>
Sat, 24 Mar 2012 01:09:38 +0000 (21:09 -0400)
committerMichael Rash <mbr@cipherdyne.org>
Sat, 24 Mar 2012 01:09:38 +0000 (21:09 -0400)
test/test-psad.pl

index a93f79b..3db2f38 100755 (executable)
@@ -19,6 +19,7 @@ my $ack_scan_file  = 'ack_scan_1000_1150';
 my $udp_scan_file  = 'udp_scan_1000_1150';
 my $ipv6_connect_scan_file  = 'ipv6_tcp_connect_nmap_default_scan';
 my $ipv6_ping_scan_file = 'ipv6_ping_scan';
+my $ipv6_invalid_icmp6_type_code_file = 'ipv6_invalid_icmp6_type_code';
 my $ignore_ipv4_auto_dl_file = "$conf_dir/auto_dl_ignore_192.168.10.55";
 my $ignore_ipv4_subnet_auto_dl_file = "$conf_dir/auto_dl_ignore_192.168.10.0_24";
 my $ignore_ipv6_addr_auto_dl_file = "$conf_dir/auto_dl_ignore_ipv6_addr";
@@ -514,6 +515,20 @@ my @tests = (
         'exec_err'  => $NO,
         'fatal'     => $NO
     },
+    {
+        'category'  => 'operations',
+        'detail'    => 'IPv6 invalid ICMP6 type/code detection',
+        'err_msg'   => 'did not generate detection event',
+        'positive_output_matches' => [
+                qr/Invalid\sICMP6/,
+                qr/SRC\:.*2001\:DB8\:0\:F101\:\:2/],
+        'match_all' => $MATCH_ALL_RE,
+        'function'  => \&generic_exec,
+        'cmdline'   => "$psadCmd --test-mode -A -m $scans_dir/" .
+                &fw_type() . "/$ipv6_invalid_icmp6_type_code_file -c $default_conf",
+        'exec_err'  => $NO,
+        'fatal'     => $NO
+    },
 
     {
         'category'  => 'operations',
@@ -555,6 +570,18 @@ my @tests = (
         'fatal'     => $NO
     },
 
+    {
+        'category'  => 'errors',
+        'detail'    => 'look for perl warnings',
+        'err_msg'   => 'found perl warnings',
+        'negative_output_matches' => [qr/Use\sof\suninitialized\svalue/i],
+        'match_all' => $MATCH_ALL_RE,
+        'function'  => \&look_for_warnings,
+        'cmdline'   => "grep -i uninit $output_dir/*.test",
+        'exec_err'  => $IGNORE,
+        'fatal'     => $NO
+    },
+
 );
 
 my @args_cp = @ARGV;
@@ -651,6 +678,21 @@ sub validate_config() {
     return &generic_exec($test_hr);
 }
 
+sub look_for_warnings() {
+    my $test_hr = shift;
+
+    my $orig_test_file = $current_test_file;
+
+    $current_test_file = "$output_dir/grep.output";
+
+    my $rv = &generic_exec($test_hr);
+
+    copy $current_test_file, $orig_test_file;
+    unlink $current_test_file;
+
+    return $rv;
+}
+
 sub generic_exec() {
     my $test_hr = shift;
 
@@ -734,7 +776,7 @@ sub file_find_regex() {
             next LINE if $line =~ /file_file_regex\(\)/;
             if ($line =~ $re) {
                 push @write_lines, "[.] file_find_regex() " .
-                    "Matched '$re' with line: $line";
+                    "Matched '$re' with line: $line (file: $file)\n";
                 $found = 1;
                 last LINE;
             }
@@ -745,7 +787,7 @@ sub file_find_regex() {
             }
         } else {
             push @write_lines, "[.] file_find_regex() " .
-                "did not match '$re'\n";
+                "did not match '$re' (file: $file)\n";
             if ($match_all_flag == $MATCH_ALL_RE) {
                 last RE;
             }