From af88e9451dde233c811076c786d108f0d6f9f239 Mon Sep 17 00:00:00 2001
From: Guillaume Rousse <guillaume.rousse@renater.fr>
Date: Wed, 14 Feb 2018 11:41:19 +0100
Subject: [PATCH] initialize output before checking parameters

---
 lib/AccountManager/WebRequest.pm | 43 ++++++++++++++++----------------
 1 file changed, 21 insertions(+), 22 deletions(-)

diff --git a/lib/AccountManager/WebRequest.pm b/lib/AccountManager/WebRequest.pm
index 1a140db..fe0587b 100644
--- a/lib/AccountManager/WebRequest.pm
+++ b/lib/AccountManager/WebRequest.pm
@@ -72,6 +72,25 @@ sub new {
 sub run {
     my ($self) = @_;
 
+    # initialize output parameters
+    $self->{out} = {
+        env => {
+            REMOTE_HOST => $ENV{REMOTE_HOST},
+            REMOTE_ADDR => $ENV{REMOTE_ADDR},
+            SCRIPT_NAME => $ENV{SCRIPT_NAME}
+        },
+        conf => {
+            accounts_validity_period => $self->{configuration}->{service}->{account_validity_period},
+            app_name                 => $self->{configuration}->{app}->{name},
+            app_url                  => $self->{configuration}->{app}->{url},
+            idp_scope                => $self->{configuration}->{idp}->{scope},
+            idp_displayname          => $self->{configuration}->{idp}->{displayname},
+            support_email            => $self->{configuration}->{app}->{support_email},
+            version                  => $self->{configuration}->{app}->{version},
+        },
+        title  => $self->{configuration}->{app}->{name}
+    };
+
     # process input parameters
     my %parameters = $self->{cgi}->Vars();
 
@@ -108,29 +127,9 @@ sub run {
         };
     }
 
-    my $action = $parameters{action} || 'home';
-
-    # initialize output parameters
-    $self->{out} = {
-        env => {
-            REMOTE_HOST => $ENV{REMOTE_HOST},
-            REMOTE_ADDR => $ENV{REMOTE_ADDR},
-            SCRIPT_NAME => $ENV{SCRIPT_NAME}
-        },
-        conf => {
-            accounts_validity_period => $self->{configuration}->{service}->{account_validity_period},
-            app_name                 => $self->{configuration}->{app}->{name},
-            app_url                  => $self->{configuration}->{app}->{url},
-            idp_scope                => $self->{configuration}->{idp}->{scope},
-            idp_displayname          => $self->{configuration}->{idp}->{displayname},
-            support_email            => $self->{configuration}->{app}->{support_email},
-            version                  => $self->{configuration}->{app}->{version},
-        },
-        action => $action,
-        title  => $self->{configuration}->{app}->{name}
-    };
-
     # process requested action
+    my $action = $parameters{action} || 'home';
+    $self->{out}->{action} = $action;
     if ($actions{$action}) {
         my $method = $actions{$action};
         $self->$method();
-- 
GitLab