aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Preview/SVG.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Preview/SVG.php')
-rw-r--r--lib/private/Preview/SVG.php23
1 files changed, 16 insertions, 7 deletions
diff --git a/lib/private/Preview/SVG.php b/lib/private/Preview/SVG.php
index 14bdfc46096..0400038d980 100644
--- a/lib/private/Preview/SVG.php
+++ b/lib/private/Preview/SVG.php
@@ -44,9 +44,6 @@ class SVG extends ProviderV2 {
*/
public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
try {
- $svg = new \Imagick();
- $svg->setBackgroundColor(new \ImagickPixel('transparent'));
-
$content = stream_get_contents($file->fopen('r'));
if (substr($content, 0, 5) !== '<?xml') {
$content = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . $content;
@@ -57,13 +54,25 @@ class SVG extends ProviderV2 {
return null;
}
+ $svg = new \Imagick();
+
+ $svg->pingImageBlob($content);
+ $mimeType = $svg->getImageMimeType();
+ if (!preg_match($this->getMimeType(), $mimeType)) {
+ throw new \Exception('File mime type does not match the preview provider: ' . $mimeType);
+ }
+
+ $svg->setBackgroundColor(new \ImagickPixel('transparent'));
$svg->readImageBlob($content);
$svg->setImageFormat('png32');
} catch (\Exception $e) {
- \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [
- 'exception' => $e,
- 'app' => 'core',
- ]);
+ \OC::$server->get(LoggerInterface::class)->error(
+ 'File: ' . $file->getPath() . ' Imagick says:',
+ [
+ 'exception' => $e,
+ 'app' => 'core',
+ ]
+ );
return null;
}