Skip to content

Commit 23f4f17

Browse files
committed
Revert "refactor: reuse the size when it is already known"
This reverts commit f59188e.
1 parent 85fc99d commit 23f4f17

1 file changed

Lines changed: 27 additions & 28 deletions

File tree

  • internal/clients/clientimpl/localmatcher

internal/clients/clientimpl/localmatcher/zip.go

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -77,56 +77,49 @@ func fetchRemoteArchiveCRC32CHash(ctx context.Context, url string) (uint32, erro
7777
return 0, errors.New("could not find crc32c= checksum")
7878
}
7979

80-
func fetchLocalArchiveCRC32CHash(f *os.File) (uint32, int64, error) {
80+
func fetchLocalArchiveCRC32CHash(f *os.File) (uint32, error) {
8181
h := crc32.New(crc32.MakeTable(crc32.Castagnoli))
82-
size, err := io.Copy(h, f)
8382

84-
if err != nil {
85-
return 0, 0, err
83+
if _, err := io.Copy(h, f); err != nil {
84+
return 0, err
8685
}
8786

88-
return h.Sum32(), size, nil
87+
return h.Sum32(), nil
8988
}
9089

91-
func (db *ZipDB) fetchZip(ctx context.Context) (*os.File, int64, error) {
90+
func (db *ZipDB) fetchZip(ctx context.Context) (*os.File, error) {
9291
f, err := os.Open(db.StoredAt)
9392

9493
if db.Offline {
9594
if err != nil {
96-
return nil, 0, ErrOfflineDatabaseNotFound
97-
}
98-
99-
s, err := f.Stat()
100-
101-
if err != nil {
102-
return nil, 0, err
95+
return nil, ErrOfflineDatabaseNotFound
10396
}
10497

105-
return f, s.Size(), nil
98+
return f, nil
10699
}
107100

108101
if err == nil {
109102
remoteHash, err := fetchRemoteArchiveCRC32CHash(ctx, db.ArchiveURL)
110103

111104
if err != nil {
112-
return nil, 0, err
105+
return nil, err
113106
}
114107

115-
localHash, size, err := fetchLocalArchiveCRC32CHash(f)
108+
localHash, err := fetchLocalArchiveCRC32CHash(f)
116109

117110
if err != nil {
118-
return nil, 0, err
111+
return nil, err
119112
}
120113

121114
if remoteHash == localHash {
122-
return f, size, nil
115+
return f, nil
123116
}
124117
}
125118

126119
req, err := http.NewRequestWithContext(ctx, http.MethodGet, db.ArchiveURL, nil)
127120

128121
if err != nil {
129-
return nil, 0, fmt.Errorf("could not retrieve OSV database archive: %w", err)
122+
return nil, fmt.Errorf("could not retrieve OSV database archive: %w", err)
130123
}
131124

132125
if db.UserAgent != "" {
@@ -135,36 +128,36 @@ func (db *ZipDB) fetchZip(ctx context.Context) (*os.File, int64, error) {
135128

136129
resp, err := http.DefaultClient.Do(req)
137130
if err != nil {
138-
return nil, 0, fmt.Errorf("could not retrieve OSV database archive: %w", err)
131+
return nil, fmt.Errorf("could not retrieve OSV database archive: %w", err)
139132
}
140133

141134
defer resp.Body.Close()
142135

143136
if resp.StatusCode != http.StatusOK {
144-
return nil, 0, fmt.Errorf("db host returned %s", resp.Status)
137+
return nil, fmt.Errorf("db host returned %s", resp.Status)
145138
}
146139

147140
err = os.MkdirAll(path.Dir(db.StoredAt), 0750)
148141

149142
if err != nil {
150-
return nil, 0, fmt.Errorf("could not create cache directory: %w", err)
143+
return nil, fmt.Errorf("could not create cache directory: %w", err)
151144
}
152145

153146
f, err = os.OpenFile(db.StoredAt, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
154147

155148
if err != nil {
156-
return nil, 0, fmt.Errorf("could not create cache file: %w", err)
149+
return nil, fmt.Errorf("could not create cache file: %w", err)
157150
}
158151

159-
size, err := io.Copy(f, resp.Body)
152+
_, err = io.Copy(f, resp.Body)
160153

161154
if err != nil {
162-
return nil, 0, fmt.Errorf("could not write cache file: %w", err)
155+
return nil, fmt.Errorf("could not write cache file: %w", err)
163156
}
164157

165158
_, _ = f.Seek(0, io.SeekStart)
166159

167-
return f, size, nil
160+
return f, nil
168161
}
169162

170163
func mightAffectPackages(v *osvschema.Vulnerability, names []string) bool {
@@ -230,15 +223,21 @@ func (db *ZipDB) loadZipFile(zipFile *zip.File, names []string) {
230223
func (db *ZipDB) load(ctx context.Context, names []string) error {
231224
db.Vulnerabilities = []*osvschema.Vulnerability{}
232225

233-
f, size, err := db.fetchZip(ctx)
226+
f, err := db.fetchZip(ctx)
234227

235228
if err != nil {
236229
return err
237230
}
238231

239232
defer f.Close()
240233

241-
zipReader, err := zip.NewReader(f, size)
234+
s, err := f.Stat()
235+
236+
if err != nil {
237+
return err
238+
}
239+
240+
zipReader, err := zip.NewReader(f, s.Size())
242241
if err != nil {
243242
return fmt.Errorf("could not read OSV database archive: %w", err)
244243
}

0 commit comments

Comments
 (0)