From 4c0e86e28a04b916422fa68bfb06dc1b1113e49d Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Thu, 18 Jan 2018 15:17:05 +0100 Subject: [PATCH] TT#30653 apply_rewrite() strict checks for $subscriber variable type * returns if $subscriber is not a reference * tighten checks for the $subscriber object type Change-Id: I02410b1f34a7761bbcbe7a6bd005336211a5e0b9 (cherry picked from commit bdc54a041da839cf79275bbc4c5d2179abe5ed9a) --- lib/NGCP/Panel/Utils/Subscriber.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/NGCP/Panel/Utils/Subscriber.pm b/lib/NGCP/Panel/Utils/Subscriber.pm index 05c58f65e6..b40273ed6f 100644 --- a/lib/NGCP/Panel/Utils/Subscriber.pm +++ b/lib/NGCP/Panel/Utils/Subscriber.pm @@ -1394,10 +1394,10 @@ sub apply_rewrite { unless ($rwr_rs->count) { return $callee; } - } elsif (not $subscriber) { + } elsif (!$subscriber || !ref($subscriber)) { $c->log->warn('could not apply rewrite: no subscriber found.'); return $callee; - } elsif ($subscriber->provisioning_voip_subscriber) { + } elsif ($subscriber->can('provisioning_voip_subscriber')) { $rwr_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs( c => $c, attribute => $dir, prov_subscriber => $subscriber->provisioning_voip_subscriber, @@ -1411,7 +1411,7 @@ sub apply_rewrite { unless($rwr_rs->count) { return $callee; } - } else { + } elsif ($subscriber->can('domain')) { $sub_type = 'billing'; if ($subscriber->domain && $subscriber->domain->provisioning_voip_domain) { $rwr_rs = NGCP::Panel::Utils::Preferences::get_dom_preference_rs( @@ -1424,6 +1424,9 @@ sub apply_rewrite { } else { return $callee; } + } else { + $c->log->warn('could not apply rewrite: unknown subscriber type.'); + return $callee; } my $rule_rs = $c->model('DB')->resultset('voip_rewrite_rules')->search({