fix: Ignore preview requests for invalid file ids

Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/46672/head
Julius Härtl 8 months ago
parent 8cc996155e
commit 6c1e896a03
  1. 4
      apps/files/lib/Controller/ApiController.php
  2. 12
      apps/files/tests/Controller/ApiControllerTest.php
  3. 4
      core/Controller/PreviewController.php
  4. 1
      tests/Core/Controller/PreviewControllerTest.php

@ -93,6 +93,10 @@ class ApiController extends Controller {
throw new NotFoundException();
}
if ($file->getId() <= 0) {
return new DataResponse(['message' => 'File not found.'], Http::STATUS_NOT_FOUND);
}
/** @var File $file */
$preview = $this->previewManager->getPreview($file, $x, $y, true);

@ -157,6 +157,7 @@ class ApiControllerTest extends TestCase {
public function testGetThumbnailInvalidImage() {
$file = $this->createMock(File::class);
$file->method('getId')->willReturn(123);
$this->userFolder->method('get')
->with($this->equalTo('unknown.jpg'))
->willReturn($file);
@ -168,8 +169,19 @@ class ApiControllerTest extends TestCase {
$this->assertEquals($expected, $this->apiController->getThumbnail(10, 10, 'unknown.jpg'));
}
public function testGetThumbnailInvalidPartFile() {
$file = $this->createMock(File::class);
$file->method('getId')->willReturn(0);
$this->userFolder->method('get')
->with($this->equalTo('unknown.jpg'))
->willReturn($file);
$expected = new DataResponse(['message' => 'File not found.'], Http::STATUS_NOT_FOUND);
$this->assertEquals($expected, $this->apiController->getThumbnail(10, 10, 'unknown.jpg'));
}
public function testGetThumbnail() {
$file = $this->createMock(File::class);
$file->method('getId')->willReturn(123);
$this->userFolder->method('get')
->with($this->equalTo('known.jpg'))
->willReturn($file);

@ -141,6 +141,10 @@ class PreviewController extends Controller {
return new DataResponse([], Http::STATUS_FORBIDDEN);
}
if ($node->getId() <= 0) {
return new DataResponse([], Http::STATUS_NOT_FOUND);
}
$storage = $node->getStorage();
if ($storage->instanceOfStorage(SharedStorage::class)) {
/** @var SharedStorage $storage */

@ -187,6 +187,7 @@ class PreviewControllerTest extends \Test\TestCase {
->willReturn($userFolder);
$file = $this->createMock(File::class);
$file->method('getId')->willReturn(123);
$userFolder->method('get')
->with($this->equalTo('file'))
->willReturn($file);

Loading…
Cancel
Save