Skip to content

Commit 90fc42b

Browse files
committed
Add Seek to file head before handling zip file entry
1 parent e1bfe17 commit 90fc42b

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

scanner/trivy/jar/parse.go

+9-7
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ func WithSize(size int64) Option {
8787
}
8888

8989
func NewParser(opts ...Option) *Parser {
90-
fmt.Printf("foo: %+v\n", "foo")
9190
p := &Parser{}
9291

9392
for _, opt := range opts {
@@ -110,7 +109,6 @@ func (p *Parser) Parse(r dio.ReadSeekerAt) ([]JarLibrary, error) {
110109
func (p *Parser) parseArtifact(filePath string, size int64, r dio.ReadSeekerAt) ([]JarLibrary, error) {
111110
log.Logger.Debugw("Parsing Java artifacts...", zap.String("file", filePath))
112111

113-
// TODO(shino): Calculate!
114112
sha1, err := digest.CalcSHA1(r)
115113
if err != nil {
116114
return nil, xerrors.Errorf("Failed to calculate SHA1. err: %w", err)
@@ -181,12 +179,12 @@ func (p *Parser) parseArtifact(filePath string, size int64, r dio.ReadSeekerAt)
181179
func (p *Parser) parseInnerJar(zf *zip.File, rootPath string) ([]JarLibrary, error) {
182180
fr, err := zf.Open()
183181
if err != nil {
184-
return nil, xerrors.Errorf("unable to open %s: %w", zf.Name, err)
182+
return nil, xerrors.Errorf("Failed to open file %s. err: %w", zf.Name, err)
185183
}
186184

187-
f, err := os.CreateTemp("", "inner")
185+
f, err := os.CreateTemp("", "inner-*")
188186
if err != nil {
189-
return nil, xerrors.Errorf("unable to create a temp file: %w", err)
187+
return nil, xerrors.Errorf("Failed to create tmp file for %s. err: %w", zf.Name, err)
190188
}
191189
defer func() {
192190
f.Close()
@@ -195,7 +193,11 @@ func (p *Parser) parseInnerJar(zf *zip.File, rootPath string) ([]JarLibrary, err
195193

196194
// Copy the file content to the temp file
197195
if _, err = io.Copy(f, fr); err != nil {
198-
return nil, xerrors.Errorf("file copy error: %w", err)
196+
return nil, xerrors.Errorf("Failed to copy file %s. err: %w", zf.Name, err)
197+
}
198+
199+
if _, err = f.Seek(0, io.SeekStart); err != nil {
200+
return nil, xerrors.Errorf("Failed to seek file %s. err: %w", zf.Name, err)
199201
}
200202

201203
// build full path to inner jar
@@ -204,7 +206,7 @@ func (p *Parser) parseInnerJar(zf *zip.File, rootPath string) ([]JarLibrary, err
204206
// Parse jar/war/ear recursively
205207
innerLibs, err := p.parseArtifact(fullPath, int64(zf.UncompressedSize64), f)
206208
if err != nil {
207-
return nil, xerrors.Errorf("failed to parse %s: %w", zf.Name, err)
209+
return nil, xerrors.Errorf("Failed to parse file %s. err: %w", zf.Name, err)
208210
}
209211

210212
return innerLibs, nil

0 commit comments

Comments
 (0)