From 8703df323392f8aa11c1c232a04be49c44f090bf Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <roeland@famdouma.nl>
Date: Mon, 22 Jan 2018 13:57:00 +0100
Subject: [PATCH] If the preview is size 0 it is invalid

* delete it
* throw a NotFound Exception
  - This should a proper 404 to the user
  - Next time it is then regenerated

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
---
 lib/private/Preview/Generator.php | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php
index 60b7536d074..08f6b604eca 100644
--- a/lib/private/Preview/Generator.php
+++ b/lib/private/Preview/Generator.php
@@ -110,6 +110,11 @@ class Generator {
 
 		// Get the max preview and infer the max preview sizes from that
 		$maxPreview = $this->getMaxPreview($previewFolder, $file, $mimeType);
+		if ($maxPreview->getSize() === 0) {
+			$maxPreview->delete();
+			throw new NotFoundException('Max preview size 0, invalid!');
+		}
+
 		list($maxWidth, $maxHeight) = $this->getPreviewSize($maxPreview);
 
 		// If both width and heigth are -1 we just want the max preview
@@ -129,15 +134,20 @@ class Generator {
 		// Try to get a cached preview. Else generate (and store) one
 		try {
 			try {
-				$file = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType());
+				$preview = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType());
 			} catch (NotFoundException $e) {
-				$file = $this->generatePreview($previewFolder, $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight);
+				$preview = $this->generatePreview($previewFolder, $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight);
 			}
 		} catch (\InvalidArgumentException $e) {
 			throw new NotFoundException();
 		}
 
-		return $file;
+		if ($preview->getSize() === 0) {
+			$preview->delete();
+			throw new NotFoundException('Cached preview size 0, invalid!');
+		}
+
+		return $preview;
 	}
 
 	/**
-- 
GitLab