View Issue Details

IDProjectCategoryView StatusLast Update
15965Bug reports_ Unknownpublic2021-03-10 21:02
Reporteredv Assigned Toc_schmitz  
PrioritynoneSeveritypartial_block 
Status feedbackResolutionopen 
Product Version4.1.6 
Summary15965: survey crashes when send-button is pressed starting with 4.1.6 (PHP 7.2, missing sodium)
DescriptionAfter 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 InformationWhen i switch back to 4.1.4 all is working as expected.
TagsNo tags attached.
Complete LimeSurvey version number (& build)limesurvey4.1.6+200220
I will donate to the project if issue is resolvedNo
BrowserFirefox , IE 11
Database & DB-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 )

Activities

edv

edv

2020-03-09 14:51

reporter  

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)   
jelo

jelo

2020-03-10 14:55

partner   ~56391

Last edited: 2020-03-10 14:56

View 2 revisions

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.

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 View Revisions
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