diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2024-11-05 09:26:16 +0100 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2024-11-05 09:26:16 +0100 |
commit | 0dd86983bb669b0f958db9075c878521b3e830a7 (patch) | |
tree | 6cc663a8b847713b83ef4d7c118e66bd6c8d5476 | |
parent | bd8348f5c1ab1732de02ccff8fefd8919ba2a8fd (diff) | |
download | nextcloud-server-fix/dav/carddav-read-card-memory-usage.tar.gz nextcloud-server-fix/dav/carddav-read-card-memory-usage.zip |
fix(dav): Reduce memory usage while reading CardDAV cardsfix/dav/carddav-read-card-memory-usage
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
-rw-r--r-- | apps/dav/lib/CardDAV/CardDavBackend.php | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index f7d0a888efd..b44fd37f488 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -519,6 +519,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { $result = $query->executeQuery(); $row = $result->fetch(); if (!$row) { + $result->closeCursor(); return false; } $row['etag'] = '"' . $row['etag'] . '"'; @@ -528,6 +529,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { if ($modified) { $row['size'] = strlen($row['carddata']); } + $result->closeCursor(); return $row; } @@ -974,7 +976,12 @@ class CardDavBackend implements BackendInterface, SyncSupport { */ private function readBlob($cardData, &$modified = false) { if (is_resource($cardData)) { - $cardData = stream_get_contents($cardData); + $stringCardData = stream_get_contents($cardData); + if ($stringCardData === false) { + return ''; + } + fclose($cardData); + $cardData = $stringCardData; } // Micro optimisation |