From: Sven Schöling Date: Wed, 24 Jan 2018 15:16:31 +0000 (+0100) Subject: Controller::LoginScreen: AuthHandler::handle ohne Argumente aufrufen X-Git-Tag: release-3.5.4~504 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=ae69689aea78c4a209523c22392683fa34ce77f3;p=kivitendo-erp.git Controller::LoginScreen: AuthHandler::handle ohne Argumente aufrufen Abgesehen davon, dass die Parameter nicht mehr benutzt werden, behebt das einen ganz ekeligen Bug: "panic: attempt to copy freed scalar" Das Problem ist, dass der AuthHandler selber das Einloggen übernimmt und dafür %::myconfig neu beschreibt. Wenn währenddessen aber ein Alias von einem %::myconfig Value auf dem Stack liegt, wird der sofort freigegeben weil der Stack nicht refcounted ist. Normalerweise fällt das nicht weiter auf, und die Daten werden im final pass aufgeräumt. Aber mit backtrace_on_error wird bei einem Fehler sofort ein Carp::confess aufgerufen, und das nimmt für den Stacktrace den Stack auseinander und stolpert dabei über den bereits freigegeben Wert. --- diff --git a/SL/Controller/LoginScreen.pm b/SL/Controller/LoginScreen.pm index 8ac63a72d..673c6b43c 100644 --- a/SL/Controller/LoginScreen.pm +++ b/SL/Controller/LoginScreen.pm @@ -58,7 +58,7 @@ sub action_login { %::myconfig = $login ? $::auth->read_user(login => $login) : (); $::locale = Locale->new($::myconfig{countrycode}) if $::myconfig{countrycode}; - SL::Dispatcher::AuthHandler::User->new->handle(countrycode => $::myconfig{countrycode}); + SL::Dispatcher::AuthHandler::User->new->handle; $::request->layout(SL::Layout::Dispatcher->new(style => $::myconfig{menustyle}));