Skip to content

Commit

Permalink
Return an error from ReadToMax when it panics (#925)
Browse files Browse the repository at this point in the history
  • Loading branch information
mcastorina committed Nov 16, 2022
1 parent eb4ff43 commit b3d3f53
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions pkg/handlers/archive.go
Expand Up @@ -136,14 +136,20 @@ func (d *Archive) extractorHandler(archiveChan chan ([]byte)) func(context.Conte
}

// ReadToMax reads up to the max size.
func (d *Archive) ReadToMax(reader io.Reader) ([]byte, error) {
func (d *Archive) ReadToMax(reader io.Reader) (data []byte, err error) {
// Archiver v4 is in alpha and using an experimental version of
// rardecode. There is a bug somewhere with rar decoder format 29
// that can lead to a panic. An issue is open in rardecode repo
// https://github.com/nwaples/rardecode/issues/30.
defer func() {
if err := recover(); err != nil {
log.Errorf("Panic occurred when reading archive: %v", err)
if r := recover(); r != nil {
log.Errorf("Panic occurred when reading archive: %v", r)
// Return an error from ReadToMax.
if e, ok := r.(error); ok {
err = e
} else {
err = fmt.Errorf("Panic occurred: %v", r)
}
}
}()
fileContent := bytes.Buffer{}
Expand Down

0 comments on commit b3d3f53

Please sign in to comment.