Skip to content

Commit

Permalink
Merge pull request #47536 from nextcloud/backport/47509/stable29
Browse files Browse the repository at this point in the history
[stable29] fix: gracefully handle unexpected exif orientation types
  • Loading branch information
st3iny authored Aug 27, 2024
2 parents 01b5d36 + 3f1eefd commit 6c73b11
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions lib/private/legacy/OC_Image.php
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,18 @@ protected function getWebpQuality(): int {
return min(100, max(10, (int) $quality));
}

private function isValidExifData(array $exif): bool {
if (!isset($exif['Orientation'])) {
return false;
}

if (!is_numeric($exif['Orientation'])) {
return false;
}

return true;
}

/**
* (I'm open for suggestions on better method name ;)
* Get the orientation based on EXIF data.
Expand Down Expand Up @@ -475,14 +487,11 @@ public function getOrientation(): int {
return -1;
}
$exif = @exif_read_data($this->filePath, 'IFD0');
if (!$exif) {
return -1;
}
if (!isset($exif['Orientation'])) {
if (!$exif || !$this->isValidExifData($exif)) {
return -1;
}
$this->exif = $exif;
return $exif['Orientation'];
return (int)$exif['Orientation'];
}

public function readExif($data): void {
Expand All @@ -496,10 +505,7 @@ public function readExif($data): void {
}

$exif = @exif_read_data('data://image/jpeg;base64,' . base64_encode($data));
if (!$exif) {
return;
}
if (!isset($exif['Orientation'])) {
if (!$exif || !$this->isValidExifData($exif)) {
return;
}
$this->exif = $exif;
Expand Down

0 comments on commit 6c73b11

Please sign in to comment.