Condition Coverage

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

line%coveragecondition
155100
Adec
00
11
Params::Get::get_params(undef, @_) || {}
17520
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")
2340
ABdec
0X0
100
111
require File::Basename and "File::Basename"->import
23767
ABdec
000
011
1X1
$self->_get_env("SCRIPT_NAME") // $0
254100
ABdec
0X0
100
111
"File::Spec"->file_name_is_absolute($script_name) and -r $script_name
38067
ABdec
0X0
100
111
$$self{"site"} and $$self{"cgi_site"}
38367
ABdec
000
011
1X1
$ENV{'HTTP_HOST'} || $ENV{'SERVER_NAME'} || $ENV{'SSL_TLS_SNI'}
39260
ABCDdec
0XXX0
10XX0
110X0
11100
11111
$ENV{"SERVER_NAME"} and $host eq $ENV{"SERVER_NAME"} and my $protocol = $self->protocol and $self->protocol ne "http"
40433
ABdec
000
011
1X1
$$self{"site"} ||= $$self{"cgi_site"}
407100
Adec
00
11
$self->protocol || 'http'
41033
ABdec
0X0
100
111
$$self{"site"} and $$self{"cgi_site"}
62050
ABCdec
0XX0
1000
1011
11X1
defined $$self{"paramref"} and !defined($$params{'allow'}) || defined $$self{'allow'} && $$params{'allow'} eq $$self{'allow'}
647100
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'}
6510
ABdec
0X0
100
111
IO::Interactive::is_interactive() and not $$self{"args_read"}
69067
ABdec
0X0
100
111
defined $content_type and $content_type =~ m[multipart/form-data]i
70067
ABdec
000
011
1X1
not defined $content_length or $content_length =~ /\D/
70467
ABdec
0X0
100
111
$$self{"max_upload_size"} >= 0 and $content_length > $$self{"max_upload_size"}
712100
ABdec
000
011
1X1
not defined $content_type or $content_type =~ m[application/x-www-form-urlencoded]
80033
ABdec
0X0
100
111
require JSON::MaybeXS and "JSON::MaybeXS"->import
937100
ABdec
000
011
1X1
not defined $ENV{"REQUEST_METHOD"} or $ENV{"REQUEST_METHOD"} eq "GET"
94136
ABCDEFGHIJdec
00000000000
00000000011
000000001X1
00000001XX1
0000001XXX1
000001XXXX1
00001XXXXX1
0001XXXXXX1
001XXXXXXX1
01XXXXXXXX1
1XXXXXXXXX1
$value =~ /(\%27)|(\')|(\%23)|(\#)/xi or $value =~ /((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-)|(\%3B)|(;))/i or $value =~ /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))\s*(OR|AND|UNION|SELECT|--)/xi or $value =~ /((\%27)|(\'))union/xi or $value =~ /select[[a-z]\s\*]from/xi or $value =~ /\sAND\s1=1/xi or $value =~ /\sOR\s.+\sAND\s/ or $value =~ m[/\*\*/ORDER/\*\*/BY/\*\*]xi or $value =~ m[/AND/.+\(SELECT/] or $value =~ /exec(\s|\+)+(s|x)p\w+/xi
9600
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/
97040
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
991100
ABdec
0X0
100
111
$FORM{$key} and $FORM{$key} ne $value
1046100
ABdec
0X0
100
111
$$self{"allow"} and not exists $$self{"allow"}{$field}
105567
ABdec
0X0
100
111
$$self{"in_param"} and $$self{"allow"}
125267
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
125967
ABdec
0X0
100
111
defined $remote and $$self{"cache"}
127567
ABdec
0X0
100
111
defined $device && $device =~ /blackberry|webos|iphone|ipod|ipad|android/i
127650
ABCdec
0XX0
10X0
1100
1111
$is_mobile and $$self{"cache"} and defined $remote
1299100
ABdec
0X0
100
111
$ENV{"HTTP_USER_AGENT"} and $ENV{"HTTP_USER_AGENT"} =~ /.+(iPad|TabletPC).+/
1324100
Adec
00
11
$self->params || (return '')
1359100
ABdec
0X0
100
111
$ENV{"SCRIPT_URI"} and $ENV{"SCRIPT_URI"} =~ m[^(.+)://.+]
1362100
ABdec
0X0
100
111
$ENV{"SERVER_PROTOCOL"} and $ENV{"SERVER_PROTOCOL"} =~ m[^HTTP/]
1431100
ABdec
0X0
100
111
$ENV{"C_DOCUMENT_ROOT"} and -d $ENV{"C_DOCUMENT_ROOT"}
143367
ABdec
0X0
100
111
-d $dir and -w $dir
143733
ABdec
0X0
100
111
-d $dir and -w $dir
1441100
ABdec
0X0
100
111
$ENV{"DOCUMENT_ROOT"} and -d $ENV{"DOCUMENT_ROOT"}
144333
ABdec
0X0
100
111
-d $dir and -w $dir
1465100
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"}
1500100
ABdec
0X0
100
111
$_[0] and ref $_[0]
151667
ABdec
0X0
100
111
$_[0] and ref $_[0]
153950
ABCdec
0XX0
10X0
1100
1111
length $dir and -d $dir and -w $dir
154760
ABCDdec
0XXX0
10XX0
110X0
11100
11111
defined $rc and length $rc and -d $rc and -w $rc
155233
ABdec
000
011
1X1
not defined $dir or length $dir == 0
155367
ABdec
000
011
1X1
$$self{"logdir"} ||= $dir
1585100
ABdec
0X0
100
111
$remote and $agent
159125
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/
165467
ABdec
000
011
1X1
$referrer =~ /\)/ or &List::Util::any(sub {         $_ =~ /^$referrer/; } , @crawler_lists)
166533
ABdec
0X0
100
111
defined $remote and $$self{"cache"}
169267
ABdec
0X0
100
111
defined $is_robot && $is_robot
1740100
ABdec
0X0
100
111
$remote and $agent
17490
ABdec
0X0
100
111
defined $remote and $$self{"cache"}
177367
ABdec
000
011
1X1
$browser->google || $browser->msn || $browser->baidu || $browser->altavista || $browser->yahoo || $browser->bingbot
177550
ABCdec
0000
0011
01X1
1XX1
$agent =~ m[SeznamBot/] or $agent =~ m[Google-InspectionTool/] or $agent =~ m[Googlebot/]
178167
ABdec
0X0
100
111
$is_search and $$self{"cache"}
17880
ABdec
000
011
1X1
gethostbyaddr(inet_aton($remote), 2) || $remote
17920
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)
1936100
ABCdec
0XX0
1000
1011
11X1
$method and $method eq 'OPTIONS' || $method eq 'DELETE'
1937100
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"}
194350
Adec
00
11
$$self{'status'} || 200
204233
ABdec
0X0
100
111
scalar @messages and my $logger = $$self{"logger"}
212967
ABdec
0X0
100
111
exists $self->{'auto_load'} and &boolean($$self{"auto_load"})->isFalse
213233
ABdec
000
011
1X1
ref $self eq __PACKAGE__ or UNIVERSAL::isa((&CORE::GLOBAL::caller())[0], __PACKAGE__)