IcingaConfig: escape binary checksums for pgsql
This commit is contained in:
parent
8333975662
commit
9c5cd31357
|
@ -79,7 +79,7 @@ class IcingaConfig
|
||||||
$this->generateFromDb();
|
$this->generateFromDb();
|
||||||
$checksum = $this->calculateChecksum();
|
$checksum = $this->calculateChecksum();
|
||||||
$exists = $this->db->fetchOne(
|
$exists = $this->db->fetchOne(
|
||||||
$this->db->select()->from(self::$table, 'COUNT(*)')->where('checksum = ?', $checksum)
|
$this->db->select()->from(self::$table, 'COUNT(*)')->where('checksum = ?', $this->dbBin($checksum))
|
||||||
);
|
);
|
||||||
if ((int) $exists === 0) {
|
if ((int) $exists === 0) {
|
||||||
$this->store();
|
$this->store();
|
||||||
|
@ -87,6 +87,15 @@ class IcingaConfig
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function dbBin($binary)
|
||||||
|
{
|
||||||
|
if ($this->connection->getDbType() === 'pgsql') {
|
||||||
|
return Util::pgBinEscape($binary);
|
||||||
|
} else {
|
||||||
|
return $binary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected function calculateChecksum()
|
protected function calculateChecksum()
|
||||||
{
|
{
|
||||||
$files = array($this->getLastActivityHexChecksum());
|
$files = array($this->getLastActivityHexChecksum());
|
||||||
|
@ -123,7 +132,7 @@ class IcingaConfig
|
||||||
try {
|
try {
|
||||||
$existingQuery = $this->db->select()
|
$existingQuery = $this->db->select()
|
||||||
->from($fileTable, 'checksum')
|
->from($fileTable, 'checksum')
|
||||||
->where('checksum IN (?)', $this->getFilesChecksums());
|
->where('checksum IN (?)', array_map(array($this, 'dbBin'), $this->getFilesChecksums()));
|
||||||
|
|
||||||
$existing = $this->db->fetchCol($existingQuery);
|
$existing = $this->db->fetchCol($existingQuery);
|
||||||
|
|
||||||
|
@ -200,7 +209,7 @@ class IcingaConfig
|
||||||
$query = $this->db->select()->from(
|
$query = $this->db->select()->from(
|
||||||
self::$table,
|
self::$table,
|
||||||
array('checksum', 'last_activity_checksum')
|
array('checksum', 'last_activity_checksum')
|
||||||
)->where('checksum = ?', $checksum);
|
)->where('checksum = ?', $this->dbBin($checksum));
|
||||||
$result = $this->db->fetchRow($query);
|
$result = $this->db->fetchRow($query);
|
||||||
$this->checksum = $result->checksum;
|
$this->checksum = $result->checksum;
|
||||||
$this->lastActivityChecksum = $result->last_activity_checksum;
|
$this->lastActivityChecksum = $result->last_activity_checksum;
|
||||||
|
@ -215,7 +224,7 @@ class IcingaConfig
|
||||||
array('f' => 'director_generated_file'),
|
array('f' => 'director_generated_file'),
|
||||||
'cf.file_checksum = f.checksum',
|
'cf.file_checksum = f.checksum',
|
||||||
array()
|
array()
|
||||||
)->where('cf.config_checksum = ?', $checksum);
|
)->where('cf.config_checksum = ?', $this->dbBin($checksum));
|
||||||
|
|
||||||
foreach ($this->db->fetchAll($query) as $row) {
|
foreach ($this->db->fetchAll($query) as $row) {
|
||||||
$file = new IcingaConfigFile();
|
$file = new IcingaConfigFile();
|
||||||
|
|
Loading…
Reference in New Issue