From 4601f268a08b28c56131e6a5bf3709fbdbb6ccfc Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Mon, 13 Jul 2026 15:07:49 +0200 Subject: [PATCH] Fix XML-RPC handling of undefined and empty values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⓘ Normalize undefined and empty XML-RPC values during encoding and parsing, preventing uninitialized-value warnings and uncontrolled error-log growth. https://github.com/webmin/webmin/issues/2793 --- xmlrpc-lib.pl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/xmlrpc-lib.pl b/xmlrpc-lib.pl index 90c089506..02a37963f 100644 --- a/xmlrpc-lib.pl +++ b/xmlrpc-lib.pl @@ -18,7 +18,7 @@ my ($base64) = &find_xmls("base64", $value, 1); my ($struct) = &find_xmls("struct", $value, 1); my ($array) = &find_xmls("array", $value, 1); if ($scalar) { - return $scalar->[1]->[2]; + return $scalar->[1]->[2] // ""; } elsif ($date) { # Need to decode date @@ -26,7 +26,7 @@ elsif ($date) { } elsif ($base64) { # Convert to binary - return &decode_base64($base64->[1]->[2]); + return &decode_base64($base64->[1]->[2] // ""); } elsif ($struct) { # Parse member names and values @@ -35,7 +35,7 @@ elsif ($struct) { my ($name) = &find_xmls("name", $member, 1); my ($value) = &find_xmls("value", $member, 1); my $perlv = &parse_xml_value($value); - $rv{$name->[1]->[2]} = $perlv; + $rv{$name->[1]->[2] // ""} = $perlv; } return \%rv; } @@ -51,7 +51,7 @@ elsif ($array) { } else { # Fallback - just a string directly in the value - return $value->[1]->[2]; + return $value->[1]->[2] // ""; } } @@ -60,6 +60,7 @@ else { sub encode_xml_value { my ($perlv) = @_; +$perlv = "" if (!defined($perlv)); if (ref($perlv) eq "ARRAY") { # Convert to array XML format my $xmlrv = "\n\n";