This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 1be4e179571c47d6860055a68d64429f7b4bedaf Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Nov 29 08:05:38 2020 +0100 X2Go/Server/Agent/NX/Options.pm: simplify error handling by splitting intermediate checking out into a separate subroutine. --- X2Go/Server/Agent/NX/Options.pm | 90 ++++++++++++++++++++--------------------- debian/changelog | 2 + 2 files changed, 47 insertions(+), 45 deletions(-) diff --git a/X2Go/Server/Agent/NX/Options.pm b/X2Go/Server/Agent/NX/Options.pm index 8a4c068b..b7ddcca3 100644 --- a/X2Go/Server/Agent/NX/Options.pm +++ b/X2Go/Server/Agent/NX/Options.pm @@ -214,6 +214,48 @@ sub parse_options { return $ret; } +# Takes an intermediate options string representation array reference(!) and +# checks its validity. +# Returns true, iff the array reference contains at least one element (since +# the terminating display port specifier is mandatory) and all elements are +# defined. +# Otherwise, returns false. +sub validate_intermediate { + my $ret = 1; + + my $intermediate = shift; + + if (!(defined ($intermediate))) { + print {*STDERR} "Invalid options reference passed to check function (undefined), returning false.\n"; + $ret = 0; + } + + if ($ret) { + if ('ARRAY' ne ref ($intermediate)) { + print {*STDERR} 'Invalid options reference type passed to check function (' . ref ($intermediate) . "), returning false.\n"; + $ret = 0; + } + } + + if ($ret) { + if (0 == scalar (@{$intermediate})) { + print {*STDERR} "Empty options array reference passed to check function, returning false.\n"; + $ret = 0; + } + } + + if ($ret) { + foreach my $entry (@{$intermediate}) { + if (!defined ($entry)) { + print {*STDERR} "Invalid options array reference passed to check function, at least one element is undefined, returning false.\n"; + $ret = 0; + } + } + } + + return $ret; +} + # Takes an intermediate options string representation array reference(!) and # returns a string. # This is essentially the opposite of parse_options. @@ -227,21 +269,7 @@ sub intermediate_to_string { my $options = shift; - if ('ARRAY' ne ref ($options)) { - print {*STDERR} 'Invalid options reference type passed (' . ref ($options) . "), returning undef.\n"; - $error_detected = 1; - } - - if (!($error_detected)) { - if (0 < scalar (@{$options})) { - foreach my $entry (@{$options}) { - if (!defined ($entry)) { - print {*STDERR} "Invalid options array passed, returning undef.\n"; - $error_detected = 1; - } - } - } - } + $error_detected = (!(validate_intermediate ($options))); if (!($error_detected)) { # Last entry should contain the display port part only. @@ -554,21 +582,7 @@ sub transform_intermediate { my $mode = shift; my $option = shift; - if ('ARRAY' ne ref ($intermediate)) { - print {*STDERR} 'Invalid options reference type passed (' . ref ($intermediate) . "), erroring out.\n"; - $error_detected = 1; - } - - if (!($error_detected)) { - if (0 < scalar (@{$intermediate})) { - foreach my $entry (@{$intermediate}) { - if (!defined ($entry)) { - print {*STDERR} "Invalid options array passed, erroring out.\n"; - $error_detected = 1; - } - } - } - } + $error_detected = (!(validate_intermediate ($intermediate))); if (!($error_detected)) { if (!(defined ($mode)) || (MODE_INVALID == $mode)) { @@ -724,21 +738,7 @@ sub compact_intermediate { my $intermediate = shift; - if ('ARRAY' ne ref ($intermediate)) { - print {*STDERR} 'Invalid options reference type passed (' . ref ($intermediate) . "), erroring out.\n"; - $error_detected = 1; - } - - if (!($error_detected)) { - if (0 < scalar (@{$intermediate})) { - foreach my $entry (@{$intermediate}) { - if (!defined ($entry)) { - print {*STDERR} "Invalid options array passed, erroring out.\n"; - $error_detected = 1; - } - } - } - } + $error_detected = (!(validate_intermediate ($intermediate))); if (!($error_detected)) { # First, save display number part. diff --git a/debian/changelog b/debian/changelog index 82572d4e..5494d6aa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -338,6 +338,8 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium mode. Needs proper implementation. - x2goserver/bin/x2goupdateoptionsstring: fix syntax and strict mode errors. + - X2Go/Server/Agent/NX/Options.pm: simplify error handling by splitting + intermediate checking out into a separate subroutine. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git