From 6cf077c9b4688fe3d19195866a84f13ee8bd9c09 Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Fri, 9 Jun 2017 13:01:14 -0400 Subject: [PATCH] Bug 18771: CGI.pm: Subroutine multi_param redefined The commands in the test plan are examples, and may need varying depending on your installation. This was created as a result of attempting to clean the installation process up. However, I believe the redefine might exist normally too. I just didn't check. This is tested on a Debian 8 box sudo apt-get update'd fully. TEST PLAN --------- empty error log $ echo > ~/koha-dev/var/log/koha-error_log drop and recreate and empty db > drop database koha_library; > create database koha_library; > quit run the web installer, but DO NOT LOG IN! *opening chrome to Staff Client URL* check the error log $ less ~/koha-dev/var/log/koha-error_log ... [Fri Jun 09 13:08:52.793627 2017] [cgi:error] [pid 5802] [client 192.168.71.101:58169] AH01215: [Fri Jun 9 13:08:52 2017] CGI.pm: Subroutine multi_param redefined at /usr/share/perl5/CGI.pm line 419. ... apply first patch empty error log $ echo > ~/koha-dev/var/log/koha-error_log refresh the installation login page recheck the error log $ less ~/koha-dev/var/log/koha-error_log [Fri Jun 09 12:59:06.705954 2017] [cgi:error] [pid 5692] [client 192.168.71.101:57887] AH01215: Low version [Fri Jun 09 12:59:06.723323 2017] [cgi:error] [pid 5692] [client 192.168.71.101:57887] AH01215: Is actually: 4.09 ... notice that 4.09 is bigger than the 4.08 condition, and that the code was triggered because $CGI::VERSION is undefined, since there was no require to set the VERSION value. apply second patch empty error log $ echo > ~/koha-dev/var/log/koha-error_log refresh the installation login page recheck the error log $ less ~/koha-dev/var/log/koha-error_log notice no reference to "Subroutine multi_param redefined" run koha qa test tools --- C4/Context.pm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/C4/Context.pm b/C4/Context.pm index a50ddfd..5e3f828 100644 --- a/C4/Context.pm +++ b/C4/Context.pm @@ -81,11 +81,17 @@ BEGIN { # Redefine multi_param if cgi version is < 4.08 # Remove the "CGI::param called in list context" warning in this case if (!defined($CGI::VERSION) || $CGI::VERSION < 4.08) { + print STDERR "Low version\n"; + require CGI; # Can't check version without the require. + print STDERR "Is actually: $CGI::VERSION\n"; no warnings 'redefine'; *CGI::multi_param = \&CGI::param; use warnings 'redefine'; $CGI::LIST_CONTEXT_WARN = 0; } + else { + print STDERR "Okay version\n"; + } } # else there is no browser to send fatals to! } -- 2.1.4