LCStoreDB has a problem under postgres.
The lc_key 'deps' contains objects which will be serialized and than there are \0 in the serialized string, but for postgres a \0 is end of input stream, this means the lc_value for deps is cut of at the first \0, which breaks unserialize when getting this value back.
The insert row is ([...] is a placeholder to make it shorter):
array (
'lc_lang' => 'de', 'lc_key' => 'deps', 'lc_value' => 'a:9:{i:0;O:14:"FileDependency":2:{s:24:"' . "\0" . 'FileDependency' . "\0" . 'filename";s:110:[...];i:2;}}',
)
Gives:
INSERT /* LCStoreDB::set */ INTO "l10n_cache" (lc_lang,lc_key,lc_value) VALUES ('de','deps','a:9:{i:0;O:14:"FileDependency":2:{s:24:"')
Reading on the internet, the only chance here is to use bytea, which can be done by using Database::decodeBlob and Database::encodeBlob. Than the \0 is changed to \000, but I didnot know, if oracle and sqlite still will work than.
Maybe there is another solution.
Version: 1.23.0
Severity: normal