[bugfix] Allow processing of .png files where checksum is not correct (#487)

* add png stripping code from google/wuffs

* experiment with stripping data from pngs

* add test images

* use StrippedPngDecode for pngs

* add StrippedPngDecode func

* update tests for (no)alphachannel pngs

* nolint on copied function
This commit is contained in:
tobi 2022-04-25 14:45:44 +02:00 committed by GitHub
commit eeb78bd141
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 352 additions and 3 deletions

View file

@ -74,7 +74,7 @@ func decodeImage(r io.Reader, contentType string) (*imageMeta, error) {
case mimeImageJpeg:
i, err = jpeg.Decode(r)
case mimeImagePng:
i, err = png.Decode(r)
i, err = StrippedPngDecode(r)
default:
err = fmt.Errorf("content type %s not recognised", contentType)
}
@ -117,7 +117,7 @@ func deriveThumbnail(r io.Reader, contentType string, createBlurhash bool) (*ima
case mimeImageJpeg:
i, err = jpeg.Decode(r)
case mimeImagePng:
i, err = png.Decode(r)
i, err = StrippedPngDecode(r)
case mimeImageGif:
i, err = gif.Decode(r)
default:
@ -175,7 +175,7 @@ func deriveStaticEmoji(r io.Reader, contentType string) (*imageMeta, error) {
switch contentType {
case mimeImagePng:
i, err = png.Decode(r)
i, err = StrippedPngDecode(r)
if err != nil {
return nil, err
}