[bugfix] Fix images not being processed correctly sometimes (#437)

* bump exif-terminator to latest version

* add and test giant turnip from turnip.farm

* don't error if content property is nil
This commit is contained in:
tobi
2022-03-21 19:46:51 +01:00
committed by GitHub
parent 36b2f2b4e6
commit 25cab0e1f4
22 changed files with 245 additions and 46 deletions

View File

@ -23,7 +23,7 @@ import (
"fmt"
"io"
jpegstructure "github.com/dsoprea/go-jpeg-image-structure/v2"
jpegstructure "github.com/superseriousbusiness/go-jpeg-image-structure/v2"
)
var markerLen = map[byte]int{

View File

@ -0,0 +1,47 @@
/*
exif-terminator
Copyright (C) 2022 SuperSeriousBusiness admin@gotosocial.org
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package terminator
import "fmt"
var logger ErrorLogger
func init() {
logger = &defaultErrorLogger{}
}
// ErrorLogger denotes a generic error logging function.
type ErrorLogger interface {
Error(args ...interface{})
}
type defaultErrorLogger struct{}
func (d *defaultErrorLogger) Error(args ...interface{}) {
fmt.Println(args...)
}
// SetErrorLogger allows a user of the exif-terminator library
// to set the logger that will be used for error logging.
//
// If it is not set, the default error logger will be used, which
// just prints errors to stdout.
func SetErrorLogger(errorLogger ErrorLogger) {
logger = errorLogger
}

View File

@ -25,7 +25,7 @@ import (
"fmt"
"io"
jpegstructure "github.com/dsoprea/go-jpeg-image-structure/v2"
jpegstructure "github.com/superseriousbusiness/go-jpeg-image-structure/v2"
pngstructure "github.com/dsoprea/go-png-image-structure/v2"
)
@ -109,8 +109,11 @@ func scanAndClose(scanner *bufio.Scanner, writer io.WriteCloser) {
// until the pipeReader starts being read by the caller, which
// is why we do this asynchronously
go func() {
defer writer.Close()
for scanner.Scan() {
}
writer.Close()
if scanner.Err() != nil {
logger.Error(scanner.Err())
}
}()
}

View File

@ -232,8 +232,8 @@ func (js *JpegSplitter) readSegment(data []byte) (count int, err error) {
err = binary.Read(b, binary.BigEndian, &l)
log.PanicIf(err)
if l <= 2 {
log.Panicf("length of size read for non-special marker (%02x) is unexpectedly not more than two.", markerId)
if l < 2 {
log.Panicf("length of size read for non-special marker (%02x) is unexpectedly less than two.", markerId)
}
// (l includes the bytes of the length itself.)