Condition Coverage

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

line%coveragecondition
255100
ABdec
000
011
1X1
&Scalar::Util::blessed($class) || eval {         do {         $class->isa(__PACKAGE__) } }
26267
ABdec
0X0
100
111
defined $params and keys %{$params;}
271100
Adec
00
11
$params ||= {}
27520
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")
28233
ABdec
000
011
1X1
$params->{'logger'} // $class->{'logger'}
29820
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")
3670
ABdec
0X0
100
111
require File::Basename and "File::Basename"->import
3700
ABdec
000
011
1X1
$self->_get_env("SCRIPT_NAME") // $0
3870
ABdec
0X0
100
111
"File::Spec"->file_name_is_absolute($script_name) and -r $script_name
752100
ABCdec
0XX0
1000
1011
11X1
defined $self->{'paramref'} and !defined($params->{'allow'}) || defined $self->{'allow'} && $params->{'allow'} eq $self->{'allow'}
771100
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'}
79867
ABdec
0X0
100
111
defined $content_type and $content_type =~ m[multipart/form-data]i
814100
ABdec
000
011
1X1
not defined $content_length or $content_length =~ /\D/
818100
ABdec
0X0
100
111
$self->{'max_upload_size'} >= 0 and $content_length > $self->{'max_upload_size'}
826100
ABdec
000
011
1X1
not defined $content_type or $content_type =~ m[application/x-www-form-urlencoded]
91833
ABdec
0X0
100
111
require JSON::MaybeXS and "JSON::MaybeXS"->import
107667
ABdec
000
011
1X1
index($orig_value, q[']) != -1 || index($orig_value, '%27') != -1
107733
ABdec
000
011
1X1
index($orig_value, '#') != -1 || index($orig_value, '%23') != -1
107867
ABdec
000
011
1X1
index($orig_value, '=') != -1 || index($orig_value, '%3D') != -1
107967
ABdec
000
011
1X1
index($orig_value, ';') != -1 || index($orig_value, '%3B') != -1
108580
ABCDdec
000X0
00100
00111
01XX1
1XXX1
$has_quote or $has_hash or $has_equals and $has_dash
10866
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|#)/i 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
110567
ABdec
000
011
1X1
index($orig_value, 'SELECT') != -1 || index($orig_value, 'select') != -1
111067
ABdec
000
011
1X1
index($orig_value, '/**/') != -1 || index($orig_value, '/AND/') != -1
113738
ABCDEFGdec
00000000
00000011
000001X1
00001XX1
0001XXX1
001XXXX1
01XXXXX1
1XXXXXX1
$agent =~ /\bSELECT\b.{1,500}?\bAND\b/i or $agent =~ /\bORDER\s+BY\b/i or $agent =~ /\bOR\s+NOT\b/i or $agent =~ /\bAND\b\s+\d+=\d+/ or $agent =~ /\bTHEN\b.{1,300}?\bELSE\b.{1,300}?\bEND\b/i or $agent =~ /\bAND\b.{1,500}?\bSELECT\b/i or $agent =~ /\sAND\s.{1,500}?\sAND\s/
115460
ABCDdec
00000
00011
001X1
01XX1
1XXX1
$value =~ m[(?:%3C|<)(?:%2F|/)*[a-z0-9%]+(?:%3E|>)]xi or $value =~ /(?:%3C|<)[^>]+(?:%3E|>)/i or $orig_value =~ m[(?:%3C|<)(?:%2F|/)*[a-z0-9%]+(?:%3E|>)]xi or $orig_value =~ /(?:%3C|<)[^>]+(?:%3E|>)/i
1185100
ABdec
0X0
100
111
$FORM{$key} and $FORM{$key} ne $value
1265100
ABdec
0X0
100
111
$self->{'allow'} and not exists $self->{'allow'}{$field}
127467
ABdec
0X0
100
111
$self->{'in_param'} and $self->{'allow'}
150167
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
1508100
ABdec
0X0
100
111
defined $remote and $self->{'cache'}
152467
ABdec
0X0
100
111
defined $device && $device =~ /blackberry|webos|iphone|ipod|ipad|android/i
152550
ABCdec
0XX0
10X0
1100
1111
$is_mobile and $self->{'cache'} and defined $remote
1549100
ABdec
0X0
100
111
$ENV{'HTTP_USER_AGENT'} and $ENV{'HTTP_USER_AGENT'} =~ /\b(?:iPad|TabletPC)\b/
1591100
Adec
00
11
Params::Get::get_params(undef, @_) || {}
1602100
Adec
00
11
$self->params || (return '')
162250
Adec
00
11
$rc ||= ""
1642100
ABdec
0X0
100
111
ref $self and exists $self->{'protocol'}
1647100
ABdec
0X0
100
111
$ENV{'SERVER_PROTOCOL'} and $ENV{'SERVER_PROTOCOL'} =~ m[^HTTP/]
100
ABdec
0X0
100
111
$ENV{'SCRIPT_URI'} and $ENV{'SCRIPT_URI'} =~ m[^([a-zA-Z][a-zA-Z0-9+\-.]*)://]
1668100
ABdec
0X0
100
111
not defined $result and $ENV{'REMOTE_ADDR'}
1717100
ABdec
0X0
100
111
$ENV{'C_DOCUMENT_ROOT'} and -d $ENV{'C_DOCUMENT_ROOT'}
171967
ABdec
0X0
100
111
-d $dir and -w $dir
172333
ABdec
0X0
100
111
-d $dir and -w $dir
1727100
ABdec
0X0
100
111
$ENV{'DOCUMENT_ROOT'} and -d $ENV{'DOCUMENT_ROOT'}
172967
ABdec
0X0
100
111
-d $dir and -w $dir
1733100
ABdec
0X0
100
111
$params->{'default'} and ref $params->{'default'}
1754100
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'}
1793100
ABdec
0X0
100
111
$_[0] and ref $_[0]
1809100
ABdec
0X0
100
111
$_[0] and ref $_[0]
184075
ABCdec
0XX0
10X0
1100
1111
length $dir and -d $dir and -w $dir
184860
ABCDdec
0XXX0
10XX0
110X0
11100
11111
defined $rc and length $rc and -d $rc and -w $rc
185333
ABdec
000
011
1X1
not defined $dir or length $dir == 0
185467
ABdec
000
011
1X1
$self->{'logdir'} ||= $dir
1886100
ABdec
0X0
100
111
$remote and $agent
189750
ABCDEFGdec
00000000
00000011
000001X1
00001XX1
0001XXX1
001XXXX1
01XXXXX1
1XXXXXX1
$agent =~ /\bSELECT\b.{1,500}?\bAND\b/i or $agent =~ /\bORDER\s+BY\b/i or $agent =~ /\bOR\s+NOT\b/i or $agent =~ /\bAND\b\s+\d+=\d+/ or $agent =~ /\bTHEN\b.{1,300}?\bELSE\b.{1,300}?\bEND\b/i or $agent =~ /\bAND\b.{1,500}?\bSELECT\b/i or $agent =~ /\sAND\s.{1,500}?\sAND\s/
1948100
ABdec
000
011
1X1
$referrer =~ /\)/ or $referrer =~ /$CRAWLER_REFERER_RE/
197967
ABdec
0X0
100
111
defined $is_robot && $is_robot
2027100
ABdec
0X0
100
111
$remote and $agent
206167
ABdec
000
011
1X1
$browser->google || $browser->msn || $browser->baidu || $browser->altavista || $browser->yahoo || $browser->bingbot
206375
ABCdec
0000
0011
01X1
1XX1
$agent =~ m[SeznamBot/] or $agent =~ m[Google-InspectionTool/] or $agent =~ m[Googlebot/]
206967
ABdec
0X0
100
111
$is_search and $self->{'cache'}
20840
ABdec
000
011
1X1
gethostbyaddr(inet_aton($safe_remote), 2) || $safe_remote
20900
ABCDdec
0XX00
0XX11
10X00
10X11
11000
11011
111X1
defined $hostname and $hostname =~ /\b(?:google|msnbot|bingbot|amazonbot|GPTBot)\b/i and not $hostname =~ /^google-proxy/i or Net::CIDR::cidrlookup($remote, @cidr_blocks)
2199100
ABdec
0X0
100
111
$remote and $agent
2443100
ABCdec
0XX0
1000
1011
11X1
$method and $method eq 'OPTIONS' || $method eq 'DELETE'
2444100
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'}
2450100
Adec
00
11
$self->{'status'} || 200
266367
ABdec
0X0
100
111
exists $self->{'auto_load'} and &boolean($self->{'auto_load'})->isFalse
266633
ABdec
000
011
1X1
ref $self eq __PACKAGE__ or UNIVERSAL::isa((&CORE::GLOBAL::caller())[0], __PACKAGE__)