From c17656ce9b0ae5e41bdde89926fcaa5b4a571747 Mon Sep 17 00:00:00 2001 From: Tamino Bauknecht Date: Thu, 23 Nov 2023 21:10:22 +0100 Subject: [PATCH] SymlinkManager: Various small but important fixes --- lib/private/Files/SymlinkManager.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/private/Files/SymlinkManager.php b/lib/private/Files/SymlinkManager.php index f93845efa479a..bfdabae8bca43 100644 --- a/lib/private/Files/SymlinkManager.php +++ b/lib/private/Files/SymlinkManager.php @@ -54,7 +54,7 @@ public function __construct() { * @return bool */ public function isSymlink($node) { - return $this->getId($node) === false; + return $this->getId($node) !== false; } /** @@ -64,9 +64,9 @@ public function isSymlink($node) { */ public function storeSymlink($node) { if ($this->isSymlink($node)) { - $this->insertSymlink($node); - } else { $this->updateSymlink($node); + } else { + $this->insertSymlink($node); } } @@ -97,7 +97,7 @@ public function purgeSymlink($path = '/') { $query = $this->connection->getQueryBuilder(); $query->select('*') ->from(self::TABLE_NAME) - ->where($query->expr()->like('storage', $query->createNamedParameter($this->connection->escapeLikeParameter($path) . '/%'))); + ->where($query->expr()->like('path', $query->createNamedParameter($this->connection->escapeLikeParameter($path) . '/%'))); $result = $query->executeQuery(); while ($row = $result->fetch()) { @@ -147,6 +147,9 @@ private function updateSymlink($node) { ->set('storage', $query->createNamedParameter($storageId)) ->set('path', $query->createNamedParameter($path)) ->set('last_updated', $query->createNamedParameter($lastUpdated)); + if ($query->executeStatement() != 1) { + throw new \OCP\DB\Exception("Invalid number of rows changed while updating symlink!"); + } } /** @@ -164,6 +167,9 @@ private function insertSymlink($node) { ->setValue('storage', $query->createNamedParameter($storageId)) ->setValue('path', $query->createNamedParameter($path)) ->setValue('last_updated', $query->createNamedParameter($lastUpdated)); + if ($query->executeStatement() != 1) { + throw new \OCP\DB\Exception("Invalid number of rows changed while inserting symlink!"); + } } /**