@@ -50,13 +50,16 @@ func (a AptAnalyzer) Analyze(image pkgutil.Image) (util.Result, error) {
50
50
}
51
51
52
52
func (a AptAnalyzer ) getPackages (image pkgutil.Image ) (map [string ]util.PackageInfo , error ) {
53
- path := image .FSPath
53
+ return readStatusFile (image .FSPath )
54
+ }
55
+
56
+ func readStatusFile (root string ) (map [string ]util.PackageInfo , error ) {
54
57
packages := make (map [string ]util.PackageInfo )
55
- if _ , err := os .Stat (path ); err != nil {
58
+ if _ , err := os .Stat (root ); err != nil {
56
59
// invalid image directory path
57
60
return packages , err
58
61
}
59
- statusFile := filepath .Join (path , dpkgStatusFile )
62
+ statusFile := filepath .Join (root , dpkgStatusFile )
60
63
if _ , err := os .Stat (statusFile ); err != nil {
61
64
// status file does not exist in this layer
62
65
return packages , nil
@@ -154,28 +157,10 @@ func (a AptLayerAnalyzer) getPackages(image pkgutil.Image) ([]map[string]util.Pa
154
157
return packages , nil
155
158
}
156
159
for _ , layer := range image .Layers {
157
- layerPackages := make (map [string ]util.PackageInfo )
158
- if _ , err := os .Stat (layer .FSPath ); err != nil {
159
- // invalid layer directory path
160
+ layerPackages , err := readStatusFile (layer .FSPath )
161
+ if err != nil {
160
162
return packages , err
161
163
}
162
- statusFile := filepath .Join (layer .FSPath , dpkgStatusFile )
163
- if _ , err := os .Stat (statusFile ); err == nil {
164
- // this layer has a package database
165
- if file , err := os .Open (statusFile ); err == nil {
166
- // make sure it gets closed
167
- defer file .Close ()
168
-
169
- // create a new scanner and read the file line by line
170
- scanner := bufio .NewScanner (file )
171
- var currPackage string
172
- for scanner .Scan () {
173
- currPackage = parseLine (scanner .Text (), currPackage , layerPackages )
174
- }
175
- } else {
176
- return packages , err
177
- }
178
- }
179
164
packages = append (packages , layerPackages )
180
165
}
181
166
0 commit comments