From 96b38935a64c5631fe931ffbcc4d6a9978e8bd7b Mon Sep 17 00:00:00 2001 From: Caleb Gardner Date: Sat, 18 Jun 2022 06:46:00 -0500 Subject: [PATCH] Found the problem file. NOW TO DEBUG --- exp_test.go | 6 +++--- internal/metadata/reader.go | 6 ++++++ squashfs_test.go | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/exp_test.go b/exp_test.go index b67d99d..cdca880 100644 --- a/exp_test.go +++ b/exp_test.go @@ -290,9 +290,9 @@ func TestSTUFF(t *testing.T) { if err != nil { t.Fatal(err) } - os.Remove(wd + "/testing/test.txt") - testOut, _ := os.Create(wd + "/testing/test.txt") - testFil, err := rdr.Open("PortableApps/Notepad++Portable/App/Readme.txt") + os.Remove(wd + "/testing/test.xml") + testOut, _ := os.Create(wd + "/testing/test.xml") + testFil, err := rdr.Open("PortableApps/Notepad++Portable/App/Notepad++64/functionList/cobol-free.xml") if err != nil { t.Fatal(err) } diff --git a/internal/metadata/reader.go b/internal/metadata/reader.go index a5e48fb..3496150 100644 --- a/internal/metadata/reader.go +++ b/internal/metadata/reader.go @@ -2,6 +2,8 @@ package metadata import ( "encoding/binary" + "errors" + "fmt" "io" "github.com/CalebQ42/squashfs/internal/decompress" @@ -36,6 +38,10 @@ func (r *Reader) Advance() error { } comp := size&0x8000 != 0x8000 size &^= 0x8000 + if size > 8196 { + fmt.Println("uhoh") + return errors.New("AH") + } r.cur = io.LimitReader(r.master, int64(size)) if comp { r.cur, err = r.d.Reader(r.cur) diff --git a/squashfs_test.go b/squashfs_test.go index 9960012..d22c000 100644 --- a/squashfs_test.go +++ b/squashfs_test.go @@ -72,8 +72,8 @@ func TestExtractQuick(t *testing.T) { } op := squashfs.DefaultOptions() op.Verbose = true - sub := - err = rdr.ExtractWithOptions(libPath, op) + sub, _ := rdr.Sub("PortableApps/Notepad++Portable/App/Notepad++64/functionList") + err = sub.(*squashfs.FS).ExtractWithOptions(libPath, op) if err != nil { t.Fatal(err) }