diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php index e8981169d4984b18b9fb0d0ebd8e8b766b1bd397..09c38b3a5aaff5a9d71c6bc6d2f982212cbdbef3 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php @@ -76,6 +76,7 @@ class SimpleSAML_Metadata_MetaDataStorageHandlerPdo extends SimpleSAML_Metadata_ * given file. * * @throws Exception If a database error occurs. + * @throws SimpleSAML_Error_Exception If the metadata can be retrieved from the database, but cannot be decoded. */ private function load($set) { @@ -92,7 +93,14 @@ class SimpleSAML_Metadata_MetaDataStorageHandlerPdo extends SimpleSAML_Metadata_ $metadata = array(); while ($d = $stmt->fetch()) { - $metadata[$d['entity_id']] = json_decode($d['entity_data'], true); + $data = json_decode($d['entity_data'], true); + if ($data === null) { + throw new SimpleSAML_Error_Exception("Cannot decode metadata for entity '${d['entity_id']}'"); + } + if (!array_key_exists('entityid', $data)) { + $data['entityid'] = $d['entity_id']; + } + $metadata[$d['entity_id']] = $data; } return $metadata; diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php index a34f194913e09d352fb79e98bef0e20181321e89..c487d31b7c04026105ee99cca160e48f0e63947c 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php @@ -195,6 +195,10 @@ class SimpleSAML_Metadata_MetaDataStorageHandlerSerialize extends SimpleSAML_Met return null; } + if (!array_key_exists('entityid', $data)) { + $data['entityid'] = $entityId; + } + return $data; }