From a42f0e389916ee2f88bf9891126bef861bf024c8 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Mon, 20 Apr 2026 20:45:26 -0400 Subject: [PATCH] fix(sevenzip): add nil guard for subreader to prevent panic When opening a sevenzip archive, the init() method calls sr :=SevenZipReader() but never checked if sr was nil before using it. This could cause a nil pointer dereference when processing malformed or empty archives. Add an explicit nil check returning errFormat early if the subreader is nil. Also fixes a minor import grouping whitespace issue. --- internal/sevenzip/reader.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/sevenzip/reader.go b/internal/sevenzip/reader.go index 651ac7b..ebd05aa 100644 --- a/internal/sevenzip/reader.go +++ b/internal/sevenzip/reader.go @@ -19,6 +19,7 @@ import ( "bookhoard/internal/sevenzip/internal/pool" "bookhoard/internal/sevenzip/internal/util" + "github.com/bodgit/plumbing" "github.com/spf13/afero" ) @@ -415,6 +416,10 @@ func (z *Reader) init(r io.ReaderAt, size int64) (err error) { return err } + if sr == nil { + return errFormat + } + // Work out where we are in the file (32, avoiding magic numbers) if z.start, err = sr.Seek(0, io.SeekCurrent); err != nil { return fmt.Errorf("sevenzip: error seeking current position: %w", err)