aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2024-11-05 09:26:16 +0100
committerChristoph Wurst <christoph@winzerhof-wurst.at>2024-11-05 09:26:16 +0100
commit0dd86983bb669b0f958db9075c878521b3e830a7 (patch)
tree6cc663a8b847713b83ef4d7c118e66bd6c8d5476
parentbd8348f5c1ab1732de02ccff8fefd8919ba2a8fd (diff)
downloadnextcloud-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.php9
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