From 3e631f418a3fafa485b650f0975ee0d06e366884 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 23 Feb 2017 10:02:57 +0100 Subject: [PATCH] Bug 17380: Add some checks around Authorities::Types->find Resolves: Use of uninitialized value $biblio_fields in scalar chop at authorities/detail.pl line 212. Can't call method "authtypetext" on an undefined value at authorities/detail.pl line 216. Can't call method "authtypecode" on an undefined value at authorities/detail.pl line 180. NOTE: Some of these problems have actually been resolved now by bugs 18801 and 18811, but it is still better imo to have these checks. Test plan: [1] Verify unchanged behavior. Search for some authorities on authorities.pl and click on the details of a record. [2] Open an authorities detail page and change the authid in the URL to a not existing number. Instead of an internal server error, you should see a message like "The authority record you requested does not exist". Signed-off-by: Marcel de Rooy Signed-off-by: Josef Moravec Signed-off-by: Nick Clemens Signed-off-by: Jonathan Druart --- authorities/authorities.pl | 3 ++- authorities/detail.pl | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/authorities/authorities.pl b/authorities/authorities.pl index 5935b07195..caeafcddfd 100755 --- a/authorities/authorities.pl +++ b/authorities/authorities.pl @@ -660,12 +660,13 @@ if ($op eq "duplicate") my $authority_types = Koha::Authority::Types->search( {}, { order_by => ['authtypetext'] } ); +my $type = $authority_types->find($authtypecode); $template->param( authority_types => $authority_types, authtypecode => $authtypecode, authid => $authid, linkid => $linkid, - authtypetext => $authority_types->find($authtypecode)->authtypetext, + authtypetext => $type ? $type->authtypetext : "", hide_marc => C4::Context->preference('hide_marc'), ); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/authorities/detail.pl b/authorities/detail.pl index 38af541a9b..31187ec412 100755 --- a/authorities/detail.pl +++ b/authorities/detail.pl @@ -178,7 +178,8 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user( my $authid = $query->param('authid'); -my $authtypecode = Koha::Authorities->find($authid)->authtypecode; +my $authobj = Koha::Authorities->find($authid); +my $authtypecode = $authobj ? $authobj->authtypecode : q{}; $tagslib = &GetTagsLabels(1,$authtypecode); # Build list of authtypes for showing them @@ -209,15 +210,16 @@ my $biblio_fields; while (my ($tagfield) = $sth->fetchrow) { $biblio_fields.= $tagfield."9,"; } -chop $biblio_fields; +chop $biblio_fields if $biblio_fields; build_tabs ($template, $record, $dbh,"",$query); +my $type = $authority_types->find($authtypecode); $template->param( authid => $authid, count => $count, biblio_fields => $biblio_fields, - authtypetext => $authority_types->find($authtypecode)->authtypetext, + authtypetext => $type ? $type->authtypetext: "", authtypecode => $authtypecode, authority_types => $authority_types, csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $query->cookie('CGISESSID') }), -- 2.39.5