@@ -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
170163func mightAffectPackages (v * osvschema.Vulnerability , names []string ) bool {
@@ -230,15 +223,21 @@ func (db *ZipDB) loadZipFile(zipFile *zip.File, names []string) {
230223func (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