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();
$contType = $curlResult->getContentType();
$type = Images::getMimeTypeByData($i, $mtch[1], $contType);
$type = $curlResult->getContentType();
$type = Images::getMimeTypeByData($i, $mtch[1], $type);
if ($i) {
$Image = new Image($i, $type);

View file

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

View file

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

View file

@ -429,6 +429,11 @@ class Probe
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 (($curlResult->getContentType() != '') && !strstr(strtolower($curlResult->getContentType()), 'html')) {
return false;

View file

@ -77,21 +77,21 @@ class Images
*
* @param string $image_data Image data
* @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
* @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/') {
Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mimeType]);
return $mimeType;
if (substr($mime, 0, 6) == 'image/') {
Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mime]);
return $mime;
}
$image = @getimagesizefromstring($image_data);
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'];
}