@@ -439,14 +439,15 @@ protected function serialize($value, $path) {
439439 }
440440
441441 protected function unserialize ($ value , $ path ) {
442- if (substr ( $ value, 0 , 2 ) == "O: " ) {
442+ if ($ value[ 0 ] === "O " && $ value [ 1 ] === " : " ) {
443443 return unserialize ($ value );
444444 } else if ($ this ->config ['crypto ' ] instanceof \Closure) {
445445 $ crypto = $ this ->config ['crypto ' ]();
446+ list ($ token ,$ datavalue ) = explode (': ' , $ value , 2 );
446447 foreach ($ crypto as $ cryptoConfig ) {
447448 $ cryptoToken = $ cryptoConfig ['token ' ];
448- if (substr ( $ value , 0 , strlen ( $ cryptoToken )+ 1 ) == ( $ cryptoToken . " : " ) ) {
449- $ value = substr ( $ value , strlen ( $ cryptoToken )+ 1 ) ;
449+ if ($ token === $ cryptoToken ) {
450+ $ value = $ datavalue ;
450451 switch ($ cryptoConfig ['method ' ]) {
451452 case 'ar_crypt ' :
452453 $ key = base64_decode ($ cryptoConfig ['key ' ]);
@@ -459,7 +460,7 @@ protected function unserialize($value, $path) {
459460 }
460461 }
461462
462- if (substr ( $ decryptedValue, 0 , 2 ) == "O: " ) {
463+ if ($ decryptedValue[ 0 ] === "O " && $ decryptedValue [ 1 ] === " : " ) {
463464 return unserialize ($ decryptedValue );
464465 } else {
465466 $ dummy = unserialize ('O:6:"object":7:{s:5:"value";s:0:"";s:3:"nls";O:6:"object":2:{s:7:"default";s:2:"nl";s:4:"list";a:1:{s:2:"nl";s:10:"Nederlands";}}s:2:"nl";O:6:"object":1:{s:4:"name";s:14:"Crypted object";}s:6:"config";O:6:"object":2:{s:10:"owner_name";s:6:"Nobody";s:5:"owner";s:6:"nobody";}s:5:"mtime";i:0;s:5:"ctime";i:0;s:5:"muser";s:6:"nobody";} ' );
0 commit comments