Skip to content

Commit 734c09b

Browse files
committed
Fix module loading
1 parent d4160bc commit 734c09b

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

cgi-bin/page.fcgi

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,10 @@ sub doit
328328

329329
# Check if this is a CAPTCHA verification attempt
330330
if ($info->param('g-recaptcha-response')) {
331-
require 'VWF::CAPTCHA' && VWF::CAPTCHA->import() unless VWF::CAPTCHA->can('new');
331+
unless(VWF::CAPTCHA->can('new')) {
332+
require VWF::CAPTCHA;
333+
VWF::CAPTCHA->import();
334+
}
332335

333336
my $recaptcha_config = $config->recaptcha();
334337
if ($recaptcha_config && $recaptcha_config->{enabled}) {
@@ -389,7 +392,10 @@ sub doit
389392
$logger->warn("Hard rate limit exceeded for $client_ip ($request_count requests)");
390393
$info->status(429);
391394

392-
require 'VWF::Display::captcha' && VWF::Display::captcha->import() unless VWF::Display::captcha->can('new');
395+
unless(VWF::Display::captcha->can('new')) {
396+
require VWF::Display::captcha;
397+
VWF::Display::captcha->import();
398+
}
393399
my $display = VWF::Display::captcha->new({
394400
cachedir => $cachedir,
395401
info => $info,
@@ -538,7 +544,10 @@ sub doit
538544

539545
# TODO: consider creating a whitelist of valid modules
540546
$logger->debug("doit(): Loading module $display_module from @INC");
541-
eval "require $display_module; 1" && $display_module->import() unless $display_module->can('new');
547+
unless($display_module->can('new')) {
548+
eval "require $display_module; 1";
549+
$display_module->import();
550+
}
542551
if($@) {
543552
$logger->debug("Failed to load module $display_module: $@");
544553
$logger->info("Unknown page $page");
@@ -773,7 +782,10 @@ sub vwflog
773782
}
774783

775784
if($syslog) {
776-
require 'Sys::Syslog' && Sys::Syslog->import() unless Sys::Syslog->can('openlog');
785+
unless(Sys::Syslog->can('openlog')) {
786+
require Sys::Syslog;
787+
Sys::Syslog->import();
788+
}
777789

778790
if(ref($syslog) eq 'HASH') {
779791
Sys::Syslog::setlogsock($syslog);

lib/VWF/Display.pm

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,10 @@ sub new
8181

8282
if(defined($ENV{'HTTP_REFERER'})) {
8383
# Protect against Shellshocker
84-
require 'Data::Validate::URI' && Data::Validate::URI->import() unless Data::Validate::URI->can('new');
84+
unless(Data::Validate::URI->can('new')) {
85+
require Data::Validate::URI;
86+
Data::Validate::URI->import();
87+
}
8588

8689
unless(Data::Validate::URI->new()->is_uri($ENV{'HTTP_REFERER'})) {
8790
return; # Block invalid referrers

0 commit comments

Comments
 (0)