diff --git a/syft/pkg/cataloger/lua/rockspec_parser.go b/syft/pkg/cataloger/lua/rockspec_parser.go index 89c730923..56c9a87f2 100644 --- a/syft/pkg/cataloger/lua/rockspec_parser.go +++ b/syft/pkg/cataloger/lua/rockspec_parser.go @@ -63,8 +63,11 @@ func parseRockspecBlock(data []byte, i *int, locals map[string]string) ([]rocksp parsing.SkipWhitespace(data, i) - if *i >= len(data) && len(out) > 0 { - return nil, fmt.Errorf("unexpected end of block at %d", *i) + if *i >= len(data) { + if len(out) > 0 { + return nil, fmt.Errorf("unexpected end of block at %d", *i) + } + return out, nil } c := data[*i] diff --git a/syft/pkg/cataloger/lua/rockspec_parser_test.go b/syft/pkg/cataloger/lua/rockspec_parser_test.go index 63cbde502..0914d2695 100644 --- a/syft/pkg/cataloger/lua/rockspec_parser_test.go +++ b/syft/pkg/cataloger/lua/rockspec_parser_test.go @@ -14,6 +14,17 @@ func Test_parseRockspecData(t *testing.T) { content string wantErr require.ErrorAssertionFunc }{ + { + name: "empty file", + content: ``, + }, + { + name: "whitespace only", + content: ` + + +`, + }, { name: "basic valid content", content: `