Accurate dimensions check for images

This commit is contained in:
mdashlw 2025-03-03 04:30:35 +00:00 committed by GitHub
parent 243de283da
commit fc616e7dfa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,6 +1,7 @@
defmodule Philomena.Images.Image do defmodule Philomena.Images.Image do
use Ecto.Schema use Ecto.Schema
import Bitwise
import Ecto.Changeset import Ecto.Changeset
alias Philomena.ImageIntensities.ImageIntensity alias Philomena.ImageIntensities.ImageIntensity
@ -187,8 +188,8 @@ defmodule Philomena.Images.Image do
"contents corrupt, not recognized, or dimensions are too large to process" "contents corrupt, not recognized, or dimensions are too large to process"
) )
width > 32767 or height > 32767 -> ((width + 63 &&& -64) * 8 + 1024) * (height + 128) >= 2_147_483_647 ->
add_error(changeset, :image, "side dimensions are larger than 32767 px") add_error(changeset, :image, "dimensions are too large to process")
true -> true ->
changeset changeset