View Issue Details

This bug affects 1 person(s).
 12
IDProjectCategoryView StatusLast Update
15965Bug reports_ Unknownpublic2021-09-07 08:21
Reporteredv Assigned Toc_schmitz  
PrioritynoneSeveritypartial_block 
Status closedResolutionfixed 
Product Version4.1.6 
Summary15965: survey crashes when send-button is pressed starting with 4.1.6 (PHP 7.2, missing sodium)
Description

After installing LS version 4.1.6 every survey crashes when the send-button is pressed. It does not matter if the survey was newly created with 4.1.6 or if it worked in 4.1.4. The error message says 500 "invalid signature". I never used encryption because i dont need it.
If i go back to 4.1.4 all works fine as expected. I tried 4.1.8 without success - same problem. I think something changed between 4.1.4 and 4.1.6.

My OS ist CentOS 7.7 (newly updated..) with php PHP 7.3.15 (cli) (built: Feb 18 2020 09:25:23) ( NTS ) from

[remi-php73]
name=Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php73/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php73/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php73/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

I installed php 7.x to get to use LS 4.1.x and i worked like a charm with 4.1.4.
My Database ist # mysql --version
mysql Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1

Additional Information

When i switch back to 4.1.4 all is working as expected.

TagsNo tags attached.
Attached Files
SodiumException.html (23,665 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SodiumException</title>

<style type="text/css">
/*<![CDATA[*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}

body {
	font: normal 9pt "Verdana";
	color: #000;
	background: #fff;
}

h1 {
	font: normal 18pt "Verdana";
	color: #f00;
	margin-bottom: .5em;
}

h2 {
	font: normal 14pt "Verdana";
	color: #800000;
	margin-bottom: .5em;
}

h3 {
	font: bold 11pt "Verdana";
}

pre {
	font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace;
}

pre span.error {
	display: block;
	background: #fce3e3;
}

pre span.ln {
	color: #999;
	padding-right: 0.5em;
	border-right: 1px solid #ccc;
}

pre span.error-ln {
	font-weight: bold;
}

.container {
	margin: 1em 4em;
}

.version {
	color: gray;
	font-size: 8pt;
	border-top: 1px solid #aaa;
	padding-top: 1em;
	margin-bottom: 1em;
}

.message {
	color: #000;
	padding: 1em;
	font-size: 11pt;
	background: #f3f3f3;
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin-bottom: 1em;
	line-height: 160%;
}

.source {
	margin-bottom: 1em;
}

.code pre {
	background-color: #ffe;
	margin: 0.5em 0;
	padding: 0.5em;
	line-height: 125%;
	border: 1px solid #eee;
}

.source .file {
	margin-bottom: 1em;
	font-weight: bold;
}

.traces {
	margin: 2em 0;
}

.trace {
	margin: 0.5em 0;
	padding: 0.5em;
}

.trace.app {
	border: 1px dashed #c00;
}

.trace .number {
	text-align: right;
	width: 2em;
	padding: 0.5em;
}

.trace .content {
	padding: 0.5em;
}

.trace .plus,
.trace .minus {
	display:inline;
	vertical-align:middle;
	text-align:center;
	border:1px solid #000;
	color:#000;
	font-size:10px;
	line-height:10px;
	margin:0;
	padding:0 1px;
	width:10px;
	height:10px;
}

.trace.collapsed .minus,
.trace.expanded .plus,
.trace.collapsed pre {
	display: none;
}

.trace-file {
	cursor: pointer;
	padding: 0.2em;
}

.trace-file:hover {
	background: #f0ffff;
}
/*]]>*/
</style>
</head>

<body>
<div class="container">
	<h1>SodiumException</h1>

	<p class="message">
		Falscher Schlüssel für Entschlüsselung! Der Schlüssel hat sich seit 
dem letzten Speichern dieser Daten geändert, sodass die Daten nicht 
entschlüsselt werden können. Bitte konsultieren Sie unser Handbuch unter
 https://manual.limesurvey.org/Data_encryption#Errors.	</p>

	<div class="source">
		<p class="file">/var/www/html/limesurvey-4.1.8/application/core/LSSodium.php(112)</p>
		<div class="code"><pre><span class="ln">100</span>     /**
<span class="ln">101</span>      * 
<span class="ln">102</span>      * Decrypt encrypted string.
<span class="ln">103</span>      * @param string $sEncryptedString Encrypted string to decrypt
<span class="ln">104</span>      * @param bool $bReturnFalseIfError false by default. If TRUE, return false in case of error (bad decryption). Else, return given $encryptedInput value
<span class="ln">105</span>      * @return string Return decrypted value (string or unsezialized object) if suceeded. Return FALSE if an error occurs (bad password/salt given) or inpyt encryptedString
<span class="ln">106</span>      */
<span class="ln">107</span>     public function decrypt($sEncryptedString, $bReturnFalseIfError=false){     
<span class="ln">108</span>         if ($this-&gt;bLibraryExists === true){
<span class="ln">109</span>             if (!empty($sEncryptedString) &amp;&amp; $sEncryptedString != 'null'){
<span class="ln">110</span>                 $plaintext = ParagonIE_Sodium_Compat::crypto_sign_open(base64_decode($sEncryptedString), $this-&gt;sEncryptionPublicKey);
<span class="ln">111</span>                 if ($plaintext === false){
<span class="error"><span class="ln error-ln">112</span>                     throw new SodiumException(sprintf(gT("Wrong decryption key! Decryption key has changed since this data were last saved, so data can't be decrypted. Please consult our manual at %s.", 'unescaped'), 'https://manual.limesurvey.org/Data_encryption#Errors'));
</span><span class="ln">113</span>                 } else {
<span class="ln">114</span>                     return $plaintext;
<span class="ln">115</span>                 }
<span class="ln">116</span>             }
<span class="ln">117</span>         } else {
<span class="ln">118</span>             return $sEncryptedString;
<span class="ln">119</span>         }
<span class="ln">120</span> 
<span class="ln">121</span>     }    
<span class="ln">122</span>  
<span class="ln">123</span>     /**
<span class="ln">124</span>      * 
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/models/LSActiveRecord.php(353): <strong>LSSodium</strong>-&gt;<strong>decrypt</strong>()				</div>

				<div class="code"><pre><span class="ln">348</span>         // if $value is provided, it would decrypt
<span class="ln">349</span>         if (!empty($value)){
<span class="ln">350</span>             
<span class="ln">351</span>             // load sodium library
<span class="ln">352</span>             $sodium = Yii::app()-&gt;sodium;
<span class="error"><span class="ln error-ln">353</span>             return $sodium-&gt;decrypt($value);
</span><span class="ln">354</span>         }
<span class="ln">355</span>     }
<span class="ln">356</span> 
<span class="ln">357</span> 
<span class="ln">358</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/core/LimeMailer.php(131): <strong>LSActiveRecord</strong>::<strong>decryptSingle</strong>()				</div>

				<div class="code"><pre><span class="ln">126</span>         parent::__construct($exceptions);
<span class="ln">127</span>         /* Global configuration for ALL email of this LimeSurvey instance */
<span class="ln">128</span>         $emailmethod = Yii::app()-&gt;getConfig('emailmethod');
<span class="ln">129</span>         $emailsmtphost = Yii::app()-&gt;getConfig("emailsmtphost");
<span class="ln">130</span>         $emailsmtpuser = Yii::app()-&gt;getConfig("emailsmtpuser");
<span class="error"><span class="ln error-ln">131</span>         $emailsmtppassword = LSActiveRecord::decryptSingle(Yii::app()-&gt;getConfig("emailsmtppassword"));
</span><span class="ln">132</span>         $emailsmtpdebug = Yii::app()-&gt;getConfig("emailsmtpdebug");
<span class="ln">133</span>         $emailsmtpssl = Yii::app()-&gt;getConfig("emailsmtpssl");
<span class="ln">134</span>         $defaultlang = Yii::app()-&gt;getConfig("defaultlang");
<span class="ln">135</span>         $emailcharset = Yii::app()-&gt;getConfig("emailcharset");
<span class="ln">136</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/helpers/frontend_helper.php(430): <strong>LimeMailer</strong>-&gt;<strong>__construct</strong>()				</div>

				<div class="code"><pre><span class="ln">425</span>     if ($quotaexit == false) {
<span class="ln">426</span>         if ($token &amp;&amp; trim(strip_tags($thissurvey['email_confirm'])) != "" &amp;&amp; $thissurvey['sendconfirmation'] == "Y") {
<span class="ln">427</span>             $sToAddress = validateEmailAddresses($token-&gt;email);
<span class="ln">428</span>             if ($sToAddress) {
<span class="ln">429</span>                 templatereplace("{SID}",$thissurvey); /* Force a replacement to fill coreReplacement like {SURVEYRESOURCESURL} for example */
<span class="error"><span class="ln error-ln">430</span>                 $mail = new \LimeMailer;
</span><span class="ln">431</span>                 $mail-&gt;setSurvey($surveyid);
<span class="ln">432</span>                 $mail-&gt;setToken($token-&gt;token);
<span class="ln">433</span>                 $mail-&gt;setTypeWithRaw('confirm',Yii::app()-&gt;getLanguage());
<span class="ln">434</span>                 $mail-&gt;replaceTokenAttributes = true;
<span class="ln">435</span>                 $mail-&gt;addUrlsPlaceholders(array('SURVEY'));
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/helpers/SurveyRuntimeHelper.php(1250): <strong>submittokens</strong>()				</div>

				<div class="code"><pre><span class="ln">1245</span>                 $this-&gt;aSurveyInfo['aCompleted']['sEndText'] = $this-&gt;processString($this-&gt;aSurveyInfo['surveyls_endtext'], 3,1);
<span class="ln">1246</span>             }
<span class="ln">1247</span> 
<span class="ln">1248</span>             //Update the token if needed and send a confirmation email
<span class="ln">1249</span>             if ($surveyActive &amp;&amp; $oSurvey-&gt;getHasTokensTable()) {
<span class="error"><span class="ln error-ln">1250</span>                 submittokens();
</span><span class="ln">1251</span>             }
<span class="ln">1252</span>             //Send notifications
<span class="ln">1253</span>             if($surveyActive) {
<span class="ln">1254</span>                 sendSubmitNotifications($this-&gt;iSurveyid);
<span class="ln">1255</span>             }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/helpers/SurveyRuntimeHelper.php(217): <strong>SurveyRuntimeHelper</strong>-&gt;<strong>moveSubmitIfNeeded</strong>()				</div>

				<div class="code"><pre><span class="ln">212</span>             // TODO: move somewhere else
<span class="ln">213</span>             $this-&gt;setNotAnsweredAndNotValidated();
<span class="ln">214</span>         } else {
<span class="ln">215</span>             $this-&gt;setPreview();
<span class="ln">216</span>         }
<span class="error"><span class="ln error-ln">217</span>         $this-&gt;moveSubmitIfNeeded();
</span><span class="ln">218</span>         $this-&gt;setGroup();
<span class="ln">219</span>         $this-&gt;fixMaxStep();
<span class="ln">220</span> 
<span class="ln">221</span>         //******************************************************************************************************
<span class="ln">222</span>         //PRESENT SURVEY
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/controllers/survey/index.php(604): <strong>SurveyRuntimeHelper</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">599</span>         unset($redata);
<span class="ln">600</span>         $redata = compact(array_keys(get_defined_vars()));
<span class="ln">601</span>         Yii::import('application.helpers.SurveyRuntimeHelper');
<span class="ln">602</span>         $tmp = new SurveyRuntimeHelper();
<span class="ln">603</span>         // try {
<span class="error"><span class="ln error-ln">604</span>             $tmp-&gt;run($surveyid, $redata);
</span><span class="ln">605</span>         // } catch (WrongTemplateVersionException $ex) {
<span class="ln">606</span>         //     echo $ex-&gt;getMessage();
<span class="ln">607</span>         // }
<span class="ln">608</span>     }
<span class="ln">609</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/controllers/survey/index.php(24): <strong>index</strong>-&gt;<strong>action</strong>()				</div>

				<div class="code"><pre><span class="ln">19</span>     public $oTemplate;
<span class="ln">20</span> 
<span class="ln">21</span>     public function run()
<span class="ln">22</span>     {
<span class="ln">23</span>         useFirebug();
<span class="error"><span class="ln error-ln">24</span>         $this-&gt;action();
</span><span class="ln">25</span>     }
<span class="ln">26</span> 
<span class="ln">27</span>     public function action()
<span class="ln">28</span>     {
<span class="ln">29</span>         global $surveyid;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/actions/CAction.php(76): <strong>index</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">71</span>     {
<span class="ln">72</span>         $method=new ReflectionMethod($this, 'run');
<span class="ln">73</span>         if($method-&gt;getNumberOfParameters()&gt;0)
<span class="ln">74</span>             return $this-&gt;runWithParamsInternal($this, $method, $params);
<span class="ln">75</span> 
<span class="error"><span class="ln error-ln">76</span>         $this-&gt;run();
</span><span class="ln">77</span>         return true;
<span class="ln">78</span>     }
<span class="ln">79</span> 
<span class="ln">80</span>     /**
<span class="ln">81</span>      * Executes a method of an object with the supplied named parameters.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CController.php(308): <strong>CAction</strong>-&gt;<strong>runWithParams</strong>()				</div>

				<div class="code"><pre><span class="ln">303</span>     {
<span class="ln">304</span>         $priorAction=$this-&gt;_action;
<span class="ln">305</span>         $this-&gt;_action=$action;
<span class="ln">306</span>         if($this-&gt;beforeAction($action))
<span class="ln">307</span>         {
<span class="error"><span class="ln error-ln">308</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">309</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">310</span>             else
<span class="ln">311</span>                 $this-&gt;afterAction($action);
<span class="ln">312</span>         }
<span class="ln">313</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>()				</div>

				<div class="code"><pre><span class="ln">281</span>      * @see runAction
<span class="ln">282</span>      */
<span class="ln">283</span>     public function runActionWithFilters($action,$filters)
<span class="ln">284</span>     {
<span class="ln">285</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">286</span>             $this-&gt;runAction($action);
</span><span class="ln">287</span>         else
<span class="ln">288</span>         {
<span class="ln">289</span>             $priorAction=$this-&gt;_action;
<span class="ln">290</span>             $this-&gt;_action=$action;
<span class="ln">291</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>()				</div>

				<div class="code"><pre><span class="ln">260</span>         {
<span class="ln">261</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">262</span>                 $parent=Yii::app();
<span class="ln">263</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">264</span>             {
<span class="error"><span class="ln error-ln">265</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">266</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">267</span>             }
<span class="ln">268</span>         }
<span class="ln">269</span>         else
<span class="ln">270</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CWebApplication.php(282): <strong>CController</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">277</span>         {
<span class="ln">278</span>             list($controller,$actionID)=$ca;
<span class="ln">279</span>             $oldController=$this-&gt;_controller;
<span class="ln">280</span>             $this-&gt;_controller=$controller;
<span class="ln">281</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">282</span>             $controller-&gt;run($actionID);
</span><span class="ln">283</span>             $this-&gt;_controller=$oldController;
<span class="ln">284</span>         }
<span class="ln">285</span>         else
<span class="ln">286</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
<span class="ln">287</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#12			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>()				</div>

				<div class="code"><pre><span class="ln">136</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">137</span>                 $_GET[$name]=$value;
<span class="ln">138</span>         }
<span class="ln">139</span>         else
<span class="ln">140</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">141</span>         $this-&gt;runController($route);
</span><span class="ln">142</span>     }
<span class="ln">143</span> 
<span class="ln">144</span>     /**
<span class="ln">145</span>      * Registers the core application components.
<span class="ln">146</span>      * This method overrides the parent implementation by registering additional core components.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#13			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">180</span>     public function run()
<span class="ln">181</span>     {
<span class="ln">182</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">183</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="ln">184</span>         register_shutdown_function(array($this,'end'),0,false);
<span class="error"><span class="ln error-ln">185</span>         $this-&gt;processRequest();
</span><span class="ln">186</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">187</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">188</span>     }
<span class="ln">189</span> 
<span class="ln">190</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/index.php(195): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">190</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">191</span> 
<span class="ln">192</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">193</span> 
<span class="ln">194</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">195</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">196</span> 
<span class="ln">197</span> /* End of file index.php */
<span class="ln">198</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2020-03-09 13:20:36 Apache/2.4.6 (CentOS) PHP/7.3.15 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.22-dev	</div>
</div>

<script type="text/javascript">
/*<![CDATA[*/
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)");
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)");

var e = document.getElementsByTagName("div");
for(var j=0,len=e.length;j<len;j++){
	if(traceReg.test(e[j].className)){
		e[j].onclick = function(){
			var trace = this.parentNode.parentNode;
			if(collapsedReg.test(trace.className))
				trace.className = trace.className.replace("collapsed", "expanded");
			else
				trace.className = trace.className.replace("expanded", "collapsed");
		}
	}
}
/*]]>*/
</script>



</body></html>
SodiumException.html (23,665 bytes)   
SodiumException1.html (27,353 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SodiumException</title>

<style type="text/css">
/*<![CDATA[*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}

body {
	font: normal 9pt "Verdana";
	color: #000;
	background: #fff;
}

h1 {
	font: normal 18pt "Verdana";
	color: #f00;
	margin-bottom: .5em;
}

h2 {
	font: normal 14pt "Verdana";
	color: #800000;
	margin-bottom: .5em;
}

h3 {
	font: bold 11pt "Verdana";
}

pre {
	font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace;
}

pre span.error {
	display: block;
	background: #fce3e3;
}

pre span.ln {
	color: #999;
	padding-right: 0.5em;
	border-right: 1px solid #ccc;
}

pre span.error-ln {
	font-weight: bold;
}

.container {
	margin: 1em 4em;
}

.version {
	color: gray;
	font-size: 8pt;
	border-top: 1px solid #aaa;
	padding-top: 1em;
	margin-bottom: 1em;
}

.message {
	color: #000;
	padding: 1em;
	font-size: 11pt;
	background: #f3f3f3;
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin-bottom: 1em;
	line-height: 160%;
}

.source {
	margin-bottom: 1em;
}

.code pre {
	background-color: #ffe;
	margin: 0.5em 0;
	padding: 0.5em;
	line-height: 125%;
	border: 1px solid #eee;
}

.source .file {
	margin-bottom: 1em;
	font-weight: bold;
}

.traces {
	margin: 2em 0;
}

.trace {
	margin: 0.5em 0;
	padding: 0.5em;
}

.trace.app {
	border: 1px dashed #c00;
}

.trace .number {
	text-align: right;
	width: 2em;
	padding: 0.5em;
}

.trace .content {
	padding: 0.5em;
}

.trace .plus,
.trace .minus {
	display:inline;
	vertical-align:middle;
	text-align:center;
	border:1px solid #000;
	color:#000;
	font-size:10px;
	line-height:10px;
	margin:0;
	padding:0 1px;
	width:10px;
	height:10px;
}

.trace.collapsed .minus,
.trace.expanded .plus,
.trace.collapsed pre {
	display: none;
}

.trace-file {
	cursor: pointer;
	padding: 0.2em;
}

.trace-file:hover {
	background: #f0ffff;
}
/*]]>*/
</style>
</head>

<body>
<div class="container">
	<h1>SodiumException</h1>

	<p class="message">
		Invalid signature	</p>

	<div class="source">
		<p class="file">/var/www/html/limesurvey-4.1.8/application/third_party/sodium_compat/src/Core/Ed25519.php(197)</p>
		<div class="code"><pre><span class="ln">185</span>      */
<span class="ln">186</span>     public static function sign_open($message, $pk)
<span class="ln">187</span>     {
<span class="ln">188</span>         /** @var string $signature */
<span class="ln">189</span>         $signature = self::substr($message, 0, 64);
<span class="ln">190</span> 
<span class="ln">191</span>         /** @var string $message */
<span class="ln">192</span>         $message = self::substr($message, 64);
<span class="ln">193</span> 
<span class="ln">194</span>         if (self::verify_detached($signature, $message, $pk)) {
<span class="ln">195</span>             return $message;
<span class="ln">196</span>         }
<span class="error"><span class="ln error-ln">197</span>         throw new SodiumException('Invalid signature');
</span><span class="ln">198</span>     }
<span class="ln">199</span> 
<span class="ln">200</span>     /**
<span class="ln">201</span>      * @internal You should not use this directly from another application
<span class="ln">202</span>      *
<span class="ln">203</span>      * @param string $message
<span class="ln">204</span>      * @param string $sk
<span class="ln">205</span>      * @return string
<span class="ln">206</span>      * @throws SodiumException
<span class="ln">207</span>      * @throws TypeError
<span class="ln">208</span>      */
<span class="ln">209</span>     public static function sign_detached($message, $sk)
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/third_party/sodium_compat/src/Crypto.php(1233): <strong>ParagonIE_Sodium_Core_Ed25519</strong>::<strong>sign_open</strong>()				</div>

				<div class="code"><pre><span class="ln">1228</span>      * @throws SodiumException
<span class="ln">1229</span>      * @throws TypeError
<span class="ln">1230</span>      */
<span class="ln">1231</span>     public static function sign_open($signedMessage, $pk)
<span class="ln">1232</span>     {
<span class="error"><span class="ln error-ln">1233</span>         return ParagonIE_Sodium_Core_Ed25519::sign_open($signedMessage, $pk);
</span><span class="ln">1234</span>     }
<span class="ln">1235</span> 
<span class="ln">1236</span>     /**
<span class="ln">1237</span>      * Verify a detached signature of a given message and public key.
<span class="ln">1238</span>      *
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/third_party/sodium_compat/src/Compat.php(2088): <strong>ParagonIE_Sodium_Crypto</strong>::<strong>sign_open</strong>()				</div>

				<div class="code"><pre><span class="ln">2083</span>             return call_user_func('\\Sodium\\crypto_sign_open', $signedMessage, $publicKey);
<span class="ln">2084</span>         }
<span class="ln">2085</span>         if (PHP_INT_SIZE === 4) {
<span class="ln">2086</span>             return ParagonIE_Sodium_Crypto32::sign_open($signedMessage, $publicKey);
<span class="ln">2087</span>         }
<span class="error"><span class="ln error-ln">2088</span>         return ParagonIE_Sodium_Crypto::sign_open($signedMessage, $publicKey);
</span><span class="ln">2089</span>     }
<span class="ln">2090</span> 
<span class="ln">2091</span>     /**
<span class="ln">2092</span>      * Generate a new random Ed25519 keypair.
<span class="ln">2093</span>      *
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/core/LSSodium.php(110): <strong>ParagonIE_Sodium_Compat</strong>::<strong>crypto_sign_open</strong>()				</div>

				<div class="code"><pre><span class="ln">105</span>      * @return string Return decrypted value (string or unsezialized object) if suceeded. Return FALSE if an error occurs (bad password/salt given) or inpyt encryptedString
<span class="ln">106</span>      */
<span class="ln">107</span>     public function decrypt($sEncryptedString, $bReturnFalseIfError=false){     
<span class="ln">108</span>         if ($this-&gt;bLibraryExists === true){
<span class="ln">109</span>             if (!empty($sEncryptedString) &amp;&amp; $sEncryptedString != 'null'){
<span class="error"><span class="ln error-ln">110</span>                 $plaintext = ParagonIE_Sodium_Compat::crypto_sign_open(base64_decode($sEncryptedString), $this-&gt;sEncryptionPublicKey);
</span><span class="ln">111</span>                 if ($plaintext === false){
<span class="ln">112</span>                     throw new SodiumException(sprintf(gT("Wrong decryption key! Decryption key has changed since this data were last saved, so data can't be decrypted. Please consult our manual at %s.", 'unescaped'), 'https://manual.limesurvey.org/Data_encryption#Errors'));
<span class="ln">113</span>                 } else {
<span class="ln">114</span>                     return $plaintext;
<span class="ln">115</span>                 }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/models/LSActiveRecord.php(353): <strong>LSSodium</strong>-&gt;<strong>decrypt</strong>("eoXd/gGjSKFClhW1jiKNKzNMk6P2sJ4PZN6CL1na4y8l5rNokwxxzaXFGrushZNn...")				</div>

				<div class="code"><pre><span class="ln">348</span>         // if $value is provided, it would decrypt
<span class="ln">349</span>         if (!empty($value)){
<span class="ln">350</span>             
<span class="ln">351</span>             // load sodium library
<span class="ln">352</span>             $sodium = Yii::app()-&gt;sodium;
<span class="error"><span class="ln error-ln">353</span>             return $sodium-&gt;decrypt($value);
</span><span class="ln">354</span>         }
<span class="ln">355</span>     }
<span class="ln">356</span> 
<span class="ln">357</span> 
<span class="ln">358</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/core/LimeMailer.php(131): <strong>LSActiveRecord</strong>::<strong>decryptSingle</strong>("eoXd/gGjSKFClhW1jiKNKzNMk6P2sJ4PZN6CL1na4y8l5rNokwxxzaXFGrushZNn...")				</div>

				<div class="code"><pre><span class="ln">126</span>         parent::__construct($exceptions);
<span class="ln">127</span>         /* Global configuration for ALL email of this LimeSurvey instance */
<span class="ln">128</span>         $emailmethod = Yii::app()-&gt;getConfig('emailmethod');
<span class="ln">129</span>         $emailsmtphost = Yii::app()-&gt;getConfig("emailsmtphost");
<span class="ln">130</span>         $emailsmtpuser = Yii::app()-&gt;getConfig("emailsmtpuser");
<span class="error"><span class="ln error-ln">131</span>         $emailsmtppassword = LSActiveRecord::decryptSingle(Yii::app()-&gt;getConfig("emailsmtppassword"));
</span><span class="ln">132</span>         $emailsmtpdebug = Yii::app()-&gt;getConfig("emailsmtpdebug");
<span class="ln">133</span>         $emailsmtpssl = Yii::app()-&gt;getConfig("emailsmtpssl");
<span class="ln">134</span>         $defaultlang = Yii::app()-&gt;getConfig("defaultlang");
<span class="ln">135</span>         $emailcharset = Yii::app()-&gt;getConfig("emailcharset");
<span class="ln">136</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/helpers/frontend_helper.php(430): <strong>LimeMailer</strong>-&gt;<strong>__construct</strong>()				</div>

				<div class="code"><pre><span class="ln">425</span>     if ($quotaexit == false) {
<span class="ln">426</span>         if ($token &amp;&amp; trim(strip_tags($thissurvey['email_confirm'])) != "" &amp;&amp; $thissurvey['sendconfirmation'] == "Y") {
<span class="ln">427</span>             $sToAddress = validateEmailAddresses($token-&gt;email);
<span class="ln">428</span>             if ($sToAddress) {
<span class="ln">429</span>                 templatereplace("{SID}",$thissurvey); /* Force a replacement to fill coreReplacement like {SURVEYRESOURCESURL} for example */
<span class="error"><span class="ln error-ln">430</span>                 $mail = new \LimeMailer;
</span><span class="ln">431</span>                 $mail-&gt;setSurvey($surveyid);
<span class="ln">432</span>                 $mail-&gt;setToken($token-&gt;token);
<span class="ln">433</span>                 $mail-&gt;setTypeWithRaw('confirm',Yii::app()-&gt;getLanguage());
<span class="ln">434</span>                 $mail-&gt;replaceTokenAttributes = true;
<span class="ln">435</span>                 $mail-&gt;addUrlsPlaceholders(array('SURVEY'));
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/helpers/SurveyRuntimeHelper.php(1250): <strong>submittokens</strong>()				</div>

				<div class="code"><pre><span class="ln">1245</span>                 $this-&gt;aSurveyInfo['aCompleted']['sEndText'] = $this-&gt;processString($this-&gt;aSurveyInfo['surveyls_endtext'], 3,1);
<span class="ln">1246</span>             }
<span class="ln">1247</span> 
<span class="ln">1248</span>             //Update the token if needed and send a confirmation email
<span class="ln">1249</span>             if ($surveyActive &amp;&amp; $oSurvey-&gt;getHasTokensTable()) {
<span class="error"><span class="ln error-ln">1250</span>                 submittokens();
</span><span class="ln">1251</span>             }
<span class="ln">1252</span>             //Send notifications
<span class="ln">1253</span>             if($surveyActive) {
<span class="ln">1254</span>                 sendSubmitNotifications($this-&gt;iSurveyid);
<span class="ln">1255</span>             }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/helpers/SurveyRuntimeHelper.php(217): <strong>SurveyRuntimeHelper</strong>-&gt;<strong>moveSubmitIfNeeded</strong>()				</div>

				<div class="code"><pre><span class="ln">212</span>             // TODO: move somewhere else
<span class="ln">213</span>             $this-&gt;setNotAnsweredAndNotValidated();
<span class="ln">214</span>         } else {
<span class="ln">215</span>             $this-&gt;setPreview();
<span class="ln">216</span>         }
<span class="error"><span class="ln error-ln">217</span>         $this-&gt;moveSubmitIfNeeded();
</span><span class="ln">218</span>         $this-&gt;setGroup();
<span class="ln">219</span>         $this-&gt;fixMaxStep();
<span class="ln">220</span> 
<span class="ln">221</span>         //******************************************************************************************************
<span class="ln">222</span>         //PRESENT SURVEY
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/controllers/survey/index.php(604): <strong>SurveyRuntimeHelper</strong>-&gt;<strong>run</strong>("617545",
 array("surveyid" =&gt; "617545", "thissurvey" =&gt; array("htmlemail" 
=&gt; "N", "format" =&gt; "G", "tokenencryptionoptions" =&gt; "{ 
"enabled":"Y","columns":{ "firstname":"N","lastname":"N","emai...", 
"template" =&gt; "fruity", ...), "thisstep" =&gt; "1", "clienttoken" 
=&gt; "mops", ...))				</div>

				<div class="code"><pre><span class="ln">599</span>         unset($redata);
<span class="ln">600</span>         $redata = compact(array_keys(get_defined_vars()));
<span class="ln">601</span>         Yii::import('application.helpers.SurveyRuntimeHelper');
<span class="ln">602</span>         $tmp = new SurveyRuntimeHelper();
<span class="ln">603</span>         // try {
<span class="error"><span class="ln error-ln">604</span>             $tmp-&gt;run($surveyid, $redata);
</span><span class="ln">605</span>         // } catch (WrongTemplateVersionException $ex) {
<span class="ln">606</span>         //     echo $ex-&gt;getMessage();
<span class="ln">607</span>         // }
<span class="ln">608</span>     }
<span class="ln">609</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/application/controllers/survey/index.php(24): <strong>index</strong>-&gt;<strong>action</strong>()				</div>

				<div class="code"><pre><span class="ln">19</span>     public $oTemplate;
<span class="ln">20</span> 
<span class="ln">21</span>     public function run()
<span class="ln">22</span>     {
<span class="ln">23</span>         useFirebug();
<span class="error"><span class="ln error-ln">24</span>         $this-&gt;action();
</span><span class="ln">25</span>     }
<span class="ln">26</span> 
<span class="ln">27</span>     public function action()
<span class="ln">28</span>     {
<span class="ln">29</span>         global $surveyid;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/actions/CAction.php(76): <strong>index</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">71</span>     {
<span class="ln">72</span>         $method=new ReflectionMethod($this, 'run');
<span class="ln">73</span>         if($method-&gt;getNumberOfParameters()&gt;0)
<span class="ln">74</span>             return $this-&gt;runWithParamsInternal($this, $method, $params);
<span class="ln">75</span> 
<span class="error"><span class="ln error-ln">76</span>         $this-&gt;run();
</span><span class="ln">77</span>         return true;
<span class="ln">78</span>     }
<span class="ln">79</span> 
<span class="ln">80</span>     /**
<span class="ln">81</span>      * Executes a method of an object with the supplied named parameters.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CController.php(308): <strong>CAction</strong>-&gt;<strong>runWithParams</strong>(array("r" =&gt; "survey/index", "sid" =&gt; "617545"))				</div>

				<div class="code"><pre><span class="ln">303</span>     {
<span class="ln">304</span>         $priorAction=$this-&gt;_action;
<span class="ln">305</span>         $this-&gt;_action=$action;
<span class="ln">306</span>         if($this-&gt;beforeAction($action))
<span class="ln">307</span>         {
<span class="error"><span class="ln error-ln">308</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">309</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">310</span>             else
<span class="ln">311</span>                 $this-&gt;afterAction($action);
<span class="ln">312</span>         }
<span class="ln">313</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#12			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(index)				</div>

				<div class="code"><pre><span class="ln">281</span>      * @see runAction
<span class="ln">282</span>      */
<span class="ln">283</span>     public function runActionWithFilters($action,$filters)
<span class="ln">284</span>     {
<span class="ln">285</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">286</span>             $this-&gt;runAction($action);
</span><span class="ln">287</span>         else
<span class="ln">288</span>         {
<span class="ln">289</span>             $priorAction=$this-&gt;_action;
<span class="ln">290</span>             $this-&gt;_action=$action;
<span class="ln">291</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#13			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(index, array())				</div>

				<div class="code"><pre><span class="ln">260</span>         {
<span class="ln">261</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">262</span>                 $parent=Yii::app();
<span class="ln">263</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">264</span>             {
<span class="error"><span class="ln error-ln">265</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">266</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">267</span>             }
<span class="ln">268</span>         }
<span class="ln">269</span>         else
<span class="ln">270</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CWebApplication.php(282): <strong>CController</strong>-&gt;<strong>run</strong>("index")				</div>

				<div class="code"><pre><span class="ln">277</span>         {
<span class="ln">278</span>             list($controller,$actionID)=$ca;
<span class="ln">279</span>             $oldController=$this-&gt;_controller;
<span class="ln">280</span>             $this-&gt;_controller=$controller;
<span class="ln">281</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">282</span>             $controller-&gt;run($actionID);
</span><span class="ln">283</span>             $this-&gt;_controller=$oldController;
<span class="ln">284</span>         }
<span class="ln">285</span>         else
<span class="ln">286</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
<span class="ln">287</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#15			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("survey/index")				</div>

				<div class="code"><pre><span class="ln">136</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">137</span>                 $_GET[$name]=$value;
<span class="ln">138</span>         }
<span class="ln">139</span>         else
<span class="ln">140</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">141</span>         $this-&gt;runController($route);
</span><span class="ln">142</span>     }
<span class="ln">143</span> 
<span class="ln">144</span>     /**
<span class="ln">145</span>      * Registers the core application components.
<span class="ln">146</span>      * This method overrides the parent implementation by registering additional core components.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#16			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">180</span>     public function run()
<span class="ln">181</span>     {
<span class="ln">182</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">183</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="ln">184</span>         register_shutdown_function(array($this,'end'),0,false);
<span class="error"><span class="ln error-ln">185</span>         $this-&gt;processRequest();
</span><span class="ln">186</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">187</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">188</span>     }
<span class="ln">189</span> 
<span class="ln">190</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#17			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/limesurvey-4.1.8/index.php(195): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">190</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">191</span> 
<span class="ln">192</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">193</span> 
<span class="ln">194</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">195</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">196</span> 
<span class="ln">197</span> /* End of file index.php */
<span class="ln">198</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2020-03-09 13:01:57 Apache/2.4.6 (CentOS) PHP/7.3.14 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.22-dev	</div>
</div>

<script type="text/javascript">
/*<![CDATA[*/
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)");
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)");

var e = document.getElementsByTagName("div");
for(var j=0,len=e.length;j<len;j++){
	if(traceReg.test(e[j].className)){
		e[j].onclick = function(){
			var trace = this.parentNode.parentNode;
			if(collapsedReg.test(trace.className))
				trace.className = trace.className.replace("collapsed", "expanded");
			else
				trace.className = trace.className.replace("expanded", "collapsed");
		}
	}
}
/*]]>*/
</script>



</body></html>
SodiumException1.html (27,353 bytes)   
tokens_617545.csv (234 bytes)   
tid,firstname,lastname,email,emailstatus,token,language,validfrom,validuntil,invited,reminded,remindercount,completed,usesleft
"1","Claire","Grube","joerg.hartmann@lrh.sachsen-anhalt.de","OK","mops","de","","","N","N","0","N","61"
tokens_617545.csv (234 bytes)   
user01.png (108,364 bytes)
php.conf (1,252 bytes)   
#
# The following lines prevent .user.ini files from being viewed by Web clients.
#
<Files ".user.ini">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
        Satisfy All
    </IfModule>
</Files>

#
# Allow php to handle Multiviews
#
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

# mod_php options
<IfModule  mod_php7.c>
    #
    # Cause the PHP interpreter to handle files with a .php extension.
    #
    <FilesMatch \.(php|phar)$>
        SetHandler application/x-httpd-php
    </FilesMatch>

    #
    # Uncomment the following lines to allow PHP to pretty-print .phps
    # files as PHP source code:
    #
    #<FilesMatch \.phps$>
    #    SetHandler application/x-httpd-php-source
    #</FilesMatch>

    #
    # Apache specific PHP configuration options
    # those can be override in each configured vhost
    #
    php_value session.save_handler "files"
    php_value session.save_path    "/var/lib/php/session"
    php_value soap.wsdl_cache_dir  "/var/lib/php/wsdlcache"

    #php_value opcache.file_cache   "/var/lib/php/opcache"
</IfModule>
php.conf (1,252 bytes)   
Bug heat12
Complete LimeSurvey version number (& build)limesurvey4.1.6+200220
I will donate to the project if issue is resolvedNo
BrowserFirefox , IE 11
Database type & versionmysql Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1
Server OS (if known)CentOS 7.7
Webserver software & version (if known)Apache/2.4.6 (CentOS) PHP/7.3.15 configured
PHP VersionPHP 7.3.15 (cli) (built: Feb 18 2020 09:25:23) ( NTS )

Users monitoring this issue

There are no users monitoring this issue.

Activities

jelo

jelo

2020-03-10 14:55

partner   ~56391

Last edited: 2020-03-10 14:56

I would try to move to PHP 7.2 or try to install sodium under PHP 7.3.

Under 7.3.:
sudo yum install php-sodium

When the issue vanishes, there still is a bug in LimeSurvey, but it is a checking issue for the sodium lib.

vadikcoma

vadikcoma

2020-03-10 15:43

reporter   ~56392

I'm having the same issue.

php 7.4 with sodium module gives - CException attribute LSYii_Application.sodium not defined
php 7.3 with sodium module gives Internal Server Error. CDbConnection failed to open the DB connection.

jelo

jelo

2020-03-10 15:49

partner   ~56393

@vadikcoma: If you have the time and the patience it would be interesting if PHP 7.2 will work as a workaround.
Sodium is not in PHP 7.2. and LimeSurvey uses a different routine. Might work as a workaround till the bug is found and fixed.

vadikcoma

vadikcoma

2020-03-10 15:54

reporter   ~56394

I tried 7.2 - same thing. CException attribute LSYii_Application.sodium not defined

I got it going with 7.3, however I had to delete config file, so now it looks like a fresh installation rather than upgrade. Also I'm getting Low Memory warning, however in PHP settings I have 512 MB allocated

c_schmitz

c_schmitz

2020-03-16 23:44

administrator   ~56585

This is about the encryption for the SMTP password field.
If you update and accidentally delete the file /application/config/security.php then your encrypted password cannot be read anymore.
Can you if this is/was the case?

edv

edv

2020-03-17 12:09

reporter   ~56602

Dear C_schmitz,

you are right. I made updates from 4.1.4 to 4.1.6 / 4.1.8.
With 3.x versions it was not nessecary to copy "security.php" (never noticed this file before).
I live with Limesurvey since 2.6 and made lots of update, so i thought i would know how to to this.
But (maybe since 4.x) even https://manual.limesurvey.org/Upgrading_from_a_previous_version speaks about "security.php".
I copied the security.php from the 4.1.4 installation to the 4.1.8 one and it is now working as expected.
So - this was all my fault :-( , because i did not RTFM.
Sorry.....

regards
Jörg

ollehar

ollehar

2021-03-10 21:02

administrator   ~63133

Please update to the latest version and check if the bug can still be reproduced. Thank you.

galads

galads

2021-09-07 08:21

reporter   ~66351

Hello edv,

we have asked for feedback on this issue. Because we did not get an answer we assume that the issue is resolved.
However, should you be able to reproduce the issue using the latest version, please feel free to re-open the issue and give us exact details on how to reproduce it.

Thank you and best regards,

galads

Issue History

Date Modified Username Field Change
2020-03-09 14:51 edv New Issue
2020-03-09 14:51 edv File Added: limesurvey_survey_617545.lss
2020-03-09 14:51 edv File Added: SodiumException.html
2020-03-09 14:51 edv File Added: SodiumException1.html
2020-03-09 14:51 edv File Added: tokens_617545.csv
2020-03-09 14:51 edv File Added: user01.png
2020-03-09 14:51 edv File Added: php.conf
2020-03-10 14:55 jelo Note Added: 56391
2020-03-10 14:56 jelo Note Edited: 56391
2020-03-10 15:43 vadikcoma Note Added: 56392
2020-03-10 15:49 jelo Note Added: 56393
2020-03-10 15:54 vadikcoma Note Added: 56394
2020-03-11 11:13 ollehar Summary survey crashes when send-button is pressed starting with 4.1.6 => survey crashes when send-button is pressed starting with 4.1.6 (PHP 7.2, missing sodium)
2020-03-16 23:44 c_schmitz Assigned To => c_schmitz
2020-03-16 23:44 c_schmitz Status new => feedback
2020-03-16 23:44 c_schmitz Note Added: 56585
2020-03-17 12:09 edv Note Added: 56602
2020-03-17 12:09 edv Status feedback => assigned
2021-03-10 21:02 ollehar Status assigned => feedback
2021-03-10 21:02 ollehar Note Added: 63133
2021-09-07 08:21 galads Status feedback => closed
2021-09-07 08:21 galads Resolution open => fixed
2021-09-07 08:21 galads Note Added: 66351
2021-09-07 08:21 galads Bug heat 10 => 12