Skip to content

Commit 8011080

Browse files
boris-tomosystechbors2908
authored andcommitted
Fix Vulnerabiliry Extension Deserialization Problem
Signed-off-by: bors2908 <[email protected]>
1 parent 59c2790 commit 8011080

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

src/main/java/org/cyclonedx/util/ExtensionDeserializer.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -210,30 +210,46 @@ private List<Rating> processRatings(final JsonNode ratings) {
210210
if (ratings != null) {
211211
if (ratings.isArray() && !ratings.isEmpty()) {
212212
for (JsonNode rating : ratings) {
213-
ratingsList.add(processRating(rating));
213+
ratingsList.addAll(processRatingIntermediate(rating));
214214
}
215215
} else {
216-
ratingsList.add(processRating(ratings));
216+
ratingsList.addAll(processRatingIntermediate(ratings));
217217
}
218218
}
219219
return ratingsList.isEmpty() ? null : ratingsList;
220220
}
221221

222-
private Rating processRating(final JsonNode ratingNode) {
223-
Rating rating = new Rating();
222+
private List<Rating> processRatingIntermediate(final JsonNode ratingNode) {
223+
List<Rating> ratingsList = new ArrayList<>();
224+
224225
JsonNode r = ratingNode.get(Vulnerability10.RATING);
226+
225227
if (r != null) {
226-
if (r.get(Vulnerability10.SCORE) != null) {
228+
if (r.isArray() && !r.isEmpty()) {
229+
for (JsonNode rating : r) {
230+
ratingsList.add(processRating(rating));
231+
}
232+
} else {
233+
ratingsList.add(processRating(r));
234+
}
235+
}
236+
return ratingsList;
237+
}
238+
239+
private Rating processRating(final JsonNode ratingNode) {
240+
Rating rating = new Rating();
241+
if (ratingNode != null) {
242+
if (ratingNode.get(Vulnerability10.SCORE) != null) {
227243
Score score = new Score();
228-
JsonNode s = r.get(Vulnerability10.SCORE);
244+
JsonNode s = ratingNode.get(Vulnerability10.SCORE);
229245
score.setBase(getAsDouble(Vulnerability10.BASE, s));
230246
score.setImpact(getAsDouble(Vulnerability10.IMPACT, s));
231247
score.setExploitability(getAsDouble(Vulnerability10.EXPLOITABILITY, s));
232248
rating.setScore(score);
233249
}
234-
rating.setSeverity(Severity.fromString(getAsString(Vulnerability10.SEVERITY, r)));
235-
rating.setMethod(ScoreSource.fromString(getAsString(Vulnerability10.METHOD, r)));
236-
rating.setVector(getAsString(Vulnerability10.VECTOR, r));
250+
rating.setSeverity(Severity.fromString(getAsString(Vulnerability10.SEVERITY, ratingNode)));
251+
rating.setMethod(ScoreSource.fromString(getAsString(Vulnerability10.METHOD, ratingNode)));
252+
rating.setVector(getAsString(Vulnerability10.VECTOR, ratingNode));
237253
}
238254

239255
return rating;

0 commit comments

Comments
 (0)