Properly test if the file requested (cover or book) exists and send a 404 if it doesn't. Should fix #70

This commit is contained in:
Sébastien Lucas 2013-07-07 10:15:49 +02:00
bovenliggende f90077154f
commit f408a71f80
2 gewijzigde bestanden met toevoegingen van 26 en 1 verwijderingen

Bestand weergeven

@ -357,6 +357,7 @@ class Book extends Base {
else else
{ {
$data = $this->getDataById ($idData); $data = $this->getDataById ($idData);
if (!$data) return NULL;
$file = $data->name . "." . strtolower ($data->format); $file = $data->name . "." . strtolower ($data->format);
} }

Bestand weergeven

@ -9,7 +9,14 @@
require_once ("config.php"); require_once ("config.php");
require_once ("book.php"); require_once ("book.php");
require_once ("data.php"); require_once ("data.php");
function notFound () {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header("Status: 404 Not Found");
$_SERVER['REDIRECT_STATUS'] = 404;
}
global $config; global $config;
$expires = 60*60*24*14; $expires = 60*60*24*14;
header("Pragma: public"); header("Pragma: public");
@ -26,6 +33,23 @@
{ {
$book = Book::getBookById($bookId); $book = Book::getBookById($bookId);
} }
if (!$book) {
notFound ();
return;
}
if ($book && ($type == "jpg" || empty ($config['calibre_internal_directory']))) {
if ($type == "jpg") {
$file = $book->getFilePath ($type);
} else {
$file = $book->getFilePath ($type, $idData);
}
if (!$file || !file_exists ($file)) {
notFound ();
return;
}
}
switch ($type) switch ($type)
{ {