From e28907aa3ee0217bdea8a57d0ebbde2a93ba797f Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Thu, 6 Nov 2025 12:16:02 +0100 Subject: [PATCH] MT#63876 prevent adding elements in array refs perl 5.36 seems to be sensitive when auto-vivifying new elements of array refs. Attempt to free unreferenced scalar: .. panic: attempt to copy freed scalar .. so this should be done with dereferenced array (lists) only instead. Change-Id: Ifb728021df21deb50e1b1222d077a3623dc3c580 (cherry picked from commit 495b7943e61d56d8b67e7d296241b0a1d7e07d26) --- NGCP/CDR/Exporter.pm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/NGCP/CDR/Exporter.pm b/NGCP/CDR/Exporter.pm index ea751e7..ab5b6cd 100644 --- a/NGCP/CDR/Exporter.pm +++ b/NGCP/CDR/Exporter.pm @@ -598,6 +598,7 @@ sub load_rewrite_rules { sub apply_sclidui_rwrs { my ($reseller_id,$row,$position_offset) = @_; + my @row = @$row; # prevent panic with arrayref auto-vivification $position_offset //= 0; my $row_type; if ('system' eq $reseller_id) { @@ -607,8 +608,8 @@ sub apply_sclidui_rwrs { } if (defined $field_positions->{source_cli}->{$row_type}) { foreach my $i (@{$field_positions->{source_cli}->{$row_type}}) { - $row->[$i + $position_offset] = apply_rewrite( - number => $row->[$i + $position_offset], + $row[$i + $position_offset] = apply_rewrite( + number => $row[$i + $position_offset], dir => 'caller_out', rwrs_id => (prefval($reseller_id,'cdr_export_sclidui_rwrs_id') // 0), ); @@ -616,14 +617,14 @@ sub apply_sclidui_rwrs { } if (defined $field_positions->{destination_user_in}->{$row_type}) { foreach my $i (@{$field_positions->{destination_user_in}->{$row_type}}) { - $row->[$i + $position_offset] = apply_rewrite( - number => $row->[$i + $position_offset], + $row[$i + $position_offset] = apply_rewrite( + number => $row[$i + $position_offset], dir => 'callee_out', rwrs_id => (prefval($reseller_id,'cdr_export_sclidui_rwrs_id') // 0), ); } } - return @$row; + return @row; } sub apply_rewrite {