Condition Coverage

File:blib/lib/CGI/Info.pm
Coverage:64.8%

line%coveragecondition
21067
ABdec
000
011
1X1
&Scalar::Util::blessed($class) || eval {         do {         $class->isa(__PACKAGE__) } }
21767
ABdec
0X0
100
111
defined $params and keys %{$params;}
226100
Adec
00
11
$params ||= {}
2300
ABCDdec
0XXX0
10XX0
110X0
11100
11111
&Scalar::Util::blessed($params->{'logger'}) and $params->{'logger'}->can("warn") and $params->{'logger'}->can("info") and $params->{'logger'}->can("error")
2370
ABdec
000
011
1X1
$params->{'logger'} // $class->{'logger'}
25320
ABCDdec
0XXX0
10XX0
110X0
11100
11111
&Scalar::Util::blessed($params->{'logger'}) and $params->{'logger'}->can("warn") and $params->{'logger'}->can("info") and $params->{'logger'}->can("error")
3220
ABdec
0X0
100
111
require File::Basename and "File::Basename"->import
3250
ABdec
000
011
1X1
$self->_get_env("SCRIPT_NAME") // $0
3420
ABdec
0X0
100
111
"File::Spec"->file_name_is_absolute($script_name) and -r $script_name
707100
ABCdec
0XX0
1000
1011
11X1
defined $self->{'paramref'} and !defined($params->{'allow'}) || defined $self->{'allow'} && $params->{'allow'} eq $self->{'allow'}
726100
ABdec
000
011
1X1
$ENV{'REQUEST_METHOD'} eq "GET" or $ENV{'REQUEST_METHOD'} eq "HEAD"
67
ABdec
0X0
100
111
$ENV{'GATEWAY_INTERFACE'} && $ENV{'REQUEST_METHOD'}
75367
ABdec
0X0
100
111
defined $content_type and $content_type =~ m[multipart/form-data]i
769100
ABdec
000
011
1X1
not defined $content_length or $content_length =~ /\D/
773100
ABdec
0X0
100
111
$self->{'max_upload_size'} >= 0 and $content_length > $self->{'max_upload_size'}
781100
ABdec
000
011
1X1
not defined $content_type or $content_type =~ m[application/x-www-form-urlencoded]
87333
ABdec
0X0
100
111
require JSON::MaybeXS and "JSON::MaybeXS"->import
1017100
ABdec
000
011
1X1
not defined $ENV{'REQUEST_METHOD'} or $ENV{'REQUEST_METHOD'} eq "GET"
102767
ABdec
000
011
1X1
index($orig_value, q[']) != -1 || index($orig_value, '%27') != -1
102833
ABdec
000
011
1X1
index($orig_value, '#') != -1 || index($orig_value, '%23') != -1
102967
ABdec
000
011
1X1
index($orig_value, '=') != -1 || index($orig_value, '%3D') != -1
103067
ABdec
000
011
1X1
index($orig_value, ';') != -1 || index($orig_value, '%3B') != -1
103680
ABCDdec
000X0
00100
00111
01XX1
1XXX1
$has_quote or $has_hash or $has_equals and $has_dash
10376
ABCDEFGHIdec
00XXX0X0X0
00XXX0X100
00XXX0X111
00XXX100X0
00XXX10100
00XXX10111
00XXX11XX1
0100X0X0X0
0100X0X100
0100X0X111
0100X100X0
0100X10100
0100X10111
0100X11XX1
010100X0X0
010100X100
010100X111
01010100X0
0101010100
0101010111
0101011XX1
01011XXXX1
011X00X0X0
011X00X100
011X00X111
011X0100X0
011X010100
011X010111
011X011XX1
011X1XXXX1
1XXXXXXXX1
$orig_value =~ /(\%27)|(\')|(\%23)|(\#)/xi or $has_equals and $has_quote || $has_semi || $has_dash and $orig_value =~ /((\%3D)|(=))[^-]*+((\%27)|(\')|(\-\-)|(\%3B)|(;))/i or $has_quote and $orig_value =~ /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))\s*(OR|AND|UNION|SELECT|--)/xi or $has_quote and $orig_value =~ /((\%27)|(\'))union/xi
105467
ABdec
000
011
1X1
index($orig_value, 'SELECT') != -1 || index($orig_value, 'select') != -1
105967
ABdec
000
011
1X1
index($orig_value, '/**/') != -1 || index($orig_value, '/AND/') != -1
106167
ABdec
0X0
100
111
$has_slash and $has_select
13
ABCDEFGHIJKLMNdec
0X0X0X0X0X0X0X0
0X0X0X0X0X0X100
0X0X0X0X0X0X111
0X0X0X0X0X100X0
0X0X0X0X0X10100
0X0X0X0X0X10111
0X0X0X0X0X11XX1
0X0X0X0X100X0X0
0X0X0X0X100X100
0X0X0X0X100X111
0X0X0X0X10100X0
0X0X0X0X1010100
0X0X0X0X1010111
0X0X0X0X1011XX1
0X0X0X0X11XXXX1
0X0X0X100X0X0X0
0X0X0X100X0X100
0X0X0X100X0X111
0X0X0X100X100X0
0X0X0X100X10100
0X0X0X100X10111
0X0X0X100X11XX1
0X0X0X10100X0X0
0X0X0X10100X100
0X0X0X10100X111
0X0X0X1010100X0
0X0X0X101010100
0X0X0X101010111
0X0X0X101011XX1
0X0X0X1011XXXX1
0X0X0X11XXXXXX1
0X0X100X0X0X0X0
0X0X100X0X0X100
0X0X100X0X0X111
0X0X100X0X100X0
0X0X100X0X10100
0X0X100X0X10111
0X0X100X0X11XX1
0X0X100X100X0X0
0X0X100X100X100
0X0X100X100X111
0X0X100X10100X0
0X0X100X1010100
0X0X100X1010111
0X0X100X1011XX1
0X0X100X11XXXX1
0X0X10100X0X0X0
0X0X10100X0X100
0X0X10100X0X111
0X0X10100X100X0
0X0X10100X10100
0X0X10100X10111
0X0X10100X11XX1
0X0X1010100X0X0
0X0X1010100X100
0X0X1010100X111
0X0X101010100X0
0X0X10101010100
0X0X10101010111
0X0X10101011XX1
0X0X101011XXXX1
0X0X1011XXXXXX1
0X0X11XXXXXXXX1
0X100X0X0X0X0X0
0X100X0X0X0X100
0X100X0X0X0X111
0X100X0X0X100X0
0X100X0X0X10100
0X100X0X0X10111
0X100X0X0X11XX1
0X100X0X100X0X0
0X100X0X100X100
0X100X0X100X111
0X100X0X10100X0
0X100X0X1010100
0X100X0X1010111
0X100X0X1011XX1
0X100X0X11XXXX1
0X100X100X0X0X0
0X100X100X0X100
0X100X100X0X111
0X100X100X100X0
0X100X100X10100
0X100X100X10111
0X100X100X11XX1
0X100X10100X0X0
0X100X10100X100
0X100X10100X111
0X100X1010100X0
0X100X101010100
0X100X101010111
0X100X101011XX1
0X100X1011XXXX1
0X100X11XXXXXX1
0X10100X0X0X0X0
0X10100X0X0X100
0X10100X0X0X111
0X10100X0X100X0
0X10100X0X10100
0X10100X0X10111
0X10100X0X11XX1
0X10100X100X0X0
0X10100X100X100
0X10100X100X111
0X10100X10100X0
0X10100X1010100
0X10100X1010111
0X10100X1011XX1
0X10100X11XXXX1
0X1010100X0X0X0
0X1010100X0X100
0X1010100X0X111
0X1010100X100X0
0X1010100X10100
0X1010100X10111
0X1010100X11XX1
0X101010100X0X0
0X101010100X100
0X101010100X111
0X10101010100X0
0X1010101010100
0X1010101010111
0X1010101011XX1
0X10101011XXXX1
0X101011XXXXXX1
0X1011XXXXXXXX1
0X11XXXXXXXXXX1
100X0X0X0X0X0X0
100X0X0X0X0X100
100X0X0X0X0X111
100X0X0X0X100X0
100X0X0X0X10100
100X0X0X0X10111
100X0X0X0X11XX1
100X0X0X100X0X0
100X0X0X100X100
100X0X0X100X111
100X0X0X10100X0
100X0X0X1010100
100X0X0X1010111
100X0X0X1011XX1
100X0X0X11XXXX1
100X0X100X0X0X0
100X0X100X0X100
100X0X100X0X111
100X0X100X100X0
100X0X100X10100
100X0X100X10111
100X0X100X11XX1
100X0X10100X0X0
100X0X10100X100
100X0X10100X111
100X0X1010100X0
100X0X101010100
100X0X101010111
100X0X101011XX1
100X0X1011XXXX1
100X0X11XXXXXX1
100X100X0X0X0X0
100X100X0X0X100
100X100X0X0X111
100X100X0X100X0
100X100X0X10100
100X100X0X10111
100X100X0X11XX1
100X100X100X0X0
100X100X100X100
100X100X100X111
100X100X10100X0
100X100X1010100
100X100X1010111
100X100X1011XX1
100X100X11XXXX1
100X10100X0X0X0
100X10100X0X100
100X10100X0X111
100X10100X100X0
100X10100X10100
100X10100X10111
100X10100X11XX1
100X1010100X0X0
100X1010100X100
100X1010100X111
100X101010100X0
100X10101010100
100X10101010111
100X10101011XX1
100X101011XXXX1
100X1011XXXXXX1
100X11XXXXXXXX1
10100X0X0X0X0X0
10100X0X0X0X100
10100X0X0X0X111
10100X0X0X100X0
10100X0X0X10100
10100X0X0X10111
10100X0X0X11XX1
10100X0X100X0X0
10100X0X100X100
10100X0X100X111
10100X0X10100X0
10100X0X1010100
10100X0X1010111
10100X0X1011XX1
10100X0X11XXXX1
10100X100X0X0X0
10100X100X0X100
10100X100X0X111
10100X100X100X0
10100X100X10100
10100X100X10111
10100X100X11XX1
10100X10100X0X0
10100X10100X100
10100X10100X111
10100X1010100X0
10100X101010100
10100X101010111
10100X101011XX1
10100X1011XXXX1
10100X11XXXXXX1
1010100X0X0X0X0
1010100X0X0X100
1010100X0X0X111
1010100X0X100X0
1010100X0X10100
1010100X0X10111
1010100X0X11XX1
1010100X100X0X0
1010100X100X100
1010100X100X111
1010100X10100X0
1010100X1010100
1010100X1010111
1010100X1011XX1
1010100X11XXXX1
101010100X0X0X0
101010100X0X100
101010100X0X111
101010100X100X0
101010100X10100
101010100X10111
101010100X11XX1
10101010100X0X0
10101010100X100
10101010100X111
1010101010100X0
101010101010100
101010101010111
101010101011XX1
1010101011XXXX1
10101011XXXXXX1
101011XXXXXXXX1
1011XXXXXXXXXX1
11XXXXXXXXXXXX1
$has_select and $orig_value =~ /select[[a-z]\s\*]from/xi or $has_and and $orig_value =~ /\sAND\s1=1/xi or $has_or and $has_and and $orig_value =~ /\sOR\s.*\sAND\s/ or $has_slash and $orig_value =~ m[/\*\*/ORDER/\*\*/BY/\*\*]xi or $has_dump and $orig_value =~ /var_dump[^m]*+md5/ or $has_slash and $has_select and $orig_value =~ m[/AND/[^(]*+\(SELECT/] or $has_exec and $orig_value =~ /exec(\s|\+)++(s|x)p\w+/xi
67
ABdec
0X0
100
111
$has_or and $has_and
107838
ABCDEFGdec
00000000
00000011
000001X1
00001XX1
0001XXX1
001XXXX1
01XXXXX1
1XXXXXX1
$agent =~ /SELECT.+AND.+/ or $agent =~ /ORDER BY / or $agent =~ / OR NOT / or $agent =~ / AND \d+=\d+/ or $agent =~ /THEN.+ELSE.+END/ or $agent =~ /.+AND.+SELECT.+/ or $agent =~ /\sAND\s.+\sAND\s/
108960
ABCDdec
00000
00011
001X1
01XX1
1XXX1
$value =~ m[((\%3C)|<)((\%2F)|/)*[a-z0-9\%]+((\%3E)|>)]xi or $value =~ /((\%3C)|<)[^\n]+((\%3E)|>)/i or $orig_value =~ m[((\%3C)|<)((\%2F)|/)*[a-z0-9\%]+((\%3E)|>)]xi or $orig_value =~ /((\%3C)|<)[^\n]+((\%3E)|>)/i
1112100
ABdec
0X0
100
111
$FORM{$key} and $FORM{$key} ne $value
1192100
ABdec
0X0
100
111
$self->{'allow'} and not exists $self->{'allow'}{$field}
120167
ABdec
0X0
100
111
$self->{'in_param'} and $self->{'allow'}
140967
ABdec
000
011
1X1
$agent =~ m[(android|bb\d+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino]i or substr($ENV{'HTTP_USER_AGENT'}, 0, 4) =~ m[1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-]i
1416100
ABdec
0X0
100
111
defined $remote and $self->{'cache'}
143267
ABdec
0X0
100
111
defined $device && $device =~ /blackberry|webos|iphone|ipod|ipad|android/i
143350
ABCdec
0XX0
10X0
1100
1111
$is_mobile and $self->{'cache'} and defined $remote
1456100
ABdec
0X0
100
111
$ENV{'HTTP_USER_AGENT'} and $ENV{'HTTP_USER_AGENT'} =~ /.+(iPad|TabletPC).+/
1498100
Adec
00
11
Params::Get::get_params(undef, @_) || {}
1509100
Adec
00
11
$self->params || (return '')
152950
Adec
00
11
$rc ||= ""
1546100
ABdec
0X0
100
111
$ENV{'SCRIPT_URI'} and $ENV{'SCRIPT_URI'} =~ m[^(.+)://.+]
1549100
ABdec
0X0
100
111
$ENV{'SERVER_PROTOCOL'} and $ENV{'SERVER_PROTOCOL'} =~ m[^HTTP/]
1618100
ABdec
0X0
100
111
$ENV{'C_DOCUMENT_ROOT'} and -d $ENV{'C_DOCUMENT_ROOT'}
162067
ABdec
0X0
100
111
-d $dir and -w $dir
162433
ABdec
0X0
100
111
-d $dir and -w $dir
1628100
ABdec
0X0
100
111
$ENV{'DOCUMENT_ROOT'} and -d $ENV{'DOCUMENT_ROOT'}
163067
ABdec
0X0
100
111
-d $dir and -w $dir
1634100
ABdec
0X0
100
111
$params->{'default'} and ref $params->{'default'}
1655100
ABdec
0X0
100
111
$ENV{'DOCUMENT_ROOT'} and -d $ENV{'DOCUMENT_ROOT'}
100
ABdec
0X0
100
111
$ENV{'C_DOCUMENT_ROOT'} and -d $ENV{'C_DOCUMENT_ROOT'}
1690100
ABdec
0X0
100
111
$_[0] and ref $_[0]
1706100
ABdec
0X0
100
111
$_[0] and ref $_[0]
173775
ABCdec
0XX0
10X0
1100
1111
length $dir and -d $dir and -w $dir
174560
ABCDdec
0XXX0
10XX0
110X0
11100
11111
defined $rc and length $rc and -d $rc and -w $rc
175033
ABdec
000
011
1X1
not defined $dir or length $dir == 0
175167
ABdec
000
011
1X1
$self->{'logdir'} ||= $dir
1783100
ABdec
0X0
100
111
$remote and $agent
178938
ABCDEFGdec
00000000
00000011
000001X1
00001XX1
0001XXX1
001XXXX1
01XXXXX1
1XXXXXX1
$agent =~ /SELECT.+AND.+/ or $agent =~ /ORDER BY / or $agent =~ / OR NOT / or $agent =~ / AND \d+=\d+/ or $agent =~ /THEN.+ELSE.+END/ or $agent =~ /.+AND.+SELECT.+/ or $agent =~ /\sAND\s.+\sAND\s/
185667
ABdec
000
011
1X1
$referrer =~ /\)/ or &List::Util::any(sub {         $referrer =~ /^\Q$_\E/i; } , @crawler_lists)
186767
ABdec
0X0
100
111
defined $remote and $self->{'cache'}
189467
ABdec
0X0
100
111
defined $is_robot && $is_robot
1942100
ABdec
0X0
100
111
$remote and $agent
195133
ABdec
0X0
100
111
defined $remote and $self->{'cache'}
197567
ABdec
000
011
1X1
$browser->google || $browser->msn || $browser->baidu || $browser->altavista || $browser->yahoo || $browser->bingbot
197775
ABCdec
0000
0011
01X1
1XX1
$agent =~ m[SeznamBot/] or $agent =~ m[Google-InspectionTool/] or $agent =~ m[Googlebot/]
198367
ABdec
0X0
100
111
$is_search and $self->{'cache'}
19900
ABdec
000
011
1X1
gethostbyaddr(inet_aton($remote), 2) || $remote
19940
ABCDdec
0XX00
0XX11
10X00
10X11
11000
11011
111X1
defined $hostname and $hostname =~ /google|msnbot|bingbot|amazonbot|GPTBot/ and not $hostname =~ /^google-proxy/ or Net::CIDR::cidrlookup($remote, @cidr_blocks)
2191100
ABCdec
0XX0
1000
1011
11X1
$method and $method eq 'OPTIONS' || $method eq 'DELETE'
2192100
ABdec
0X0
100
111
$method and ($method eq "POST" and not defined $ENV{'CONTENT_LENGTH'})
100
ABdec
0X0
100
111
$method eq "POST" and not defined $ENV{'CONTENT_LENGTH'}
2198100
Adec
00
11
$self->{'status'} || 200
241067
ABdec
0X0
100
111
exists $self->{'auto_load'} and &boolean($self->{'auto_load'})->isFalse
241333
ABdec
000
011
1X1
ref $self eq __PACKAGE__ or UNIVERSAL::isa((&CORE::GLOBAL::caller())[0], __PACKAGE__)