This commit is contained in:
Philipp Holzer 2021-08-20 20:03:42 +02:00
parent a338e4cbff
commit 06371d29a6
No known key found for this signature in database
GPG key ID: 9A28B7D4FF5667BD
5 changed files with 19 additions and 14 deletions

View file

@ -499,8 +499,8 @@ class BBCode
} }
$i = $curlResult->getBody(); $i = $curlResult->getBody();
$contType = $curlResult->getContentType(); $type = $curlResult->getContentType();
$type = Images::getMimeTypeByData($i, $mtch[1], $contType); $type = Images::getMimeTypeByData($i, $mtch[1], $type);
if ($i) { if ($i) {
$Image = new Image($i, $type); $Image = new Image($i, $type);

View file

@ -492,17 +492,17 @@ class Photo
if (!empty($image_url)) { if (!empty($image_url)) {
$ret = DI::httpRequest()->get($image_url); $ret = DI::httpRequest()->get($image_url);
$img_str = $ret->getBody(); $img_str = $ret->getBody();
$contType = $ret->getContentType(); $type = $ret->getContentType();
} else { } else {
$img_str = ''; $img_str = '';
$contType = ''; $type = '';
} }
if ($quit_on_error && ($img_str == "")) { if ($quit_on_error && ($img_str == "")) {
return false; return false;
} }
$type = Images::getMimeTypeByData($img_str, $image_url, $contType); $type = Images::getMimeTypeByData($img_str, $image_url, $type);
$Image = new Image($img_str, $type); $Image = new Image($img_str, $type);
if ($Image->isValid()) { if ($Image->isValid()) {

View file

@ -1095,13 +1095,13 @@ class User
$curlResult = DI::httpRequest()->get($photo); $curlResult = DI::httpRequest()->get($photo);
if ($curlResult->isSuccess()) { if ($curlResult->isSuccess()) {
$img_str = $curlResult->getBody(); $img_str = $curlResult->getBody();
$contType = $curlResult->getContentType(); $type = $curlResult->getContentType();
} else { } else {
$img_str = ''; $img_str = '';
$contType = ''; $type = '';
} }
$type = Images::getMimeTypeByData($img_str, $photo, $contType); $type = Images::getMimeTypeByData($img_str, $photo, $type);
$Image = new Image($img_str, $type); $Image = new Image($img_str, $type);
if ($Image->isValid()) { if ($Image->isValid()) {

View file

@ -429,6 +429,11 @@ class Probe
return false; return false;
} }
// If the file is too large then exit
if (($curlResult->getInfo()['download_content_length'] ?? 0) > 1000000) {
return false;
}
// If it isn't a HTML file then exit // If it isn't a HTML file then exit
if (($curlResult->getContentType() != '') && !strstr(strtolower($curlResult->getContentType()), 'html')) { if (($curlResult->getContentType() != '') && !strstr(strtolower($curlResult->getContentType()), 'html')) {
return false; return false;

View file

@ -77,21 +77,21 @@ class Images
* *
* @param string $image_data Image data * @param string $image_data Image data
* @param string $filename File name (for guessing the type via the extension) * @param string $filename File name (for guessing the type via the extension)
* @param string $mimeType possible mime type * @param string $mime default mime type
* *
* @return string * @return string
* @throws \Exception * @throws \Exception
*/ */
public static function getMimeTypeByData(string $image_data, string $filename = '', string $mimeType = '') public static function getMimeTypeByData(string $image_data, string $filename = '', string $mime = '')
{ {
if (substr($mimeType, 0, 6) == 'image/') { if (substr($mime, 0, 6) == 'image/') {
Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mimeType]); Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mime]);
return $mimeType; return $mime;
} }
$image = @getimagesizefromstring($image_data); $image = @getimagesizefromstring($image_data);
if (!empty($image['mime'])) { if (!empty($image['mime'])) {
Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mimeType, 'mime' => $image['mime']]); Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mime, 'mime' => $image['mime']]);
return $image['mime']; return $image['mime'];
} }