Skip to content

Commit 5599f5b

Browse files
authored
fix: correct XML/JSON report CVSS field & HTML report URL mappings (#8156)
Signed-off-by: Chad Wilson <[email protected]>
1 parent a61c70b commit 5599f5b

File tree

8 files changed

+225
-180
lines changed

8 files changed

+225
-180
lines changed

core/src/main/java/org/owasp/dependencycheck/reporting/EscapeTool.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,12 @@
1717
*/
1818
package org.owasp.dependencycheck.reporting;
1919

20-
import java.io.UnsupportedEncodingException;
2120
import java.net.URLEncoder;
2221
import java.util.Set;
2322
import javax.annotation.concurrent.ThreadSafe;
2423
import static java.nio.charset.StandardCharsets.UTF_8;
2524
import org.apache.commons.text.StringEscapeUtils;
2625
import org.owasp.dependencycheck.dependency.naming.Identifier;
27-
import org.slf4j.Logger;
28-
import org.slf4j.LoggerFactory;
2926

3027
/**
3128
* An extremely simple wrapper around various escape utils to perform URL and
@@ -36,12 +33,6 @@
3633
*/
3734
@ThreadSafe
3835
public class EscapeTool {
39-
40-
/**
41-
* The logger.
42-
*/
43-
private static final Logger LOGGER = LoggerFactory.getLogger(EscapeTool.class);
44-
4536
/**
4637
* URL Encodes the provided text.
4738
*
@@ -52,13 +43,7 @@ public String url(String text) {
5243
if (text == null || text.isEmpty()) {
5344
return text;
5445
}
55-
try {
56-
return URLEncoder.encode(text, UTF_8.name());
57-
} catch (UnsupportedEncodingException ex) {
58-
LOGGER.warn("UTF-8 is not supported?");
59-
LOGGER.info("", ex);
60-
}
61-
return "";
46+
return URLEncoder.encode(text, UTF_8);
6247
}
6348

6449
/**
@@ -74,6 +59,10 @@ public String html(String text) {
7459
return StringEscapeUtils.escapeHtml4(text);
7560
}
7661

62+
public String html(Object o) {
63+
return xml(o == null ? null : o.toString());
64+
}
65+
7766
/**
7867
* XML Encodes the provided text.
7968
*
@@ -87,6 +76,10 @@ public String xml(String text) {
8776
return StringEscapeUtils.escapeXml11(text);
8877
}
8978

79+
public String xml(Object o) {
80+
return xml(o == null ? null : o.toString());
81+
}
82+
9083
/**
9184
* JSON Encodes the provided text.
9285
*
@@ -100,6 +93,10 @@ public String json(String text) {
10093
return StringEscapeUtils.escapeJson(text);
10194
}
10295

96+
public String json(Object o) {
97+
return xml(o == null ? null : o.toString());
98+
}
99+
103100
/**
104101
* JavaScript encodes the provided text.
105102
*
@@ -126,7 +123,7 @@ public String csv(String text) {
126123
return "\"\"";
127124
}
128125
final String str = text.trim().replace("\n", " ");
129-
if (str.trim().length() == 0) {
126+
if (str.isBlank()) {
130127
return "\"\"";
131128
}
132129
return StringEscapeUtils.escapeCsv(str);

core/src/main/java/org/owasp/dependencycheck/reporting/ReportGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ private VelocityContext createContext(String applicationName, List<Dependency> d
260260
final String scanDateJunit = DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(dt);
261261
final String scanDateGitLab = DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(dt.withNano(0));
262262

263+
// Remember to update type definitions at templates/velocity_implicit.vm
263264
final VelocityContext ctxt = new VelocityContext();
264265
ctxt.put("applicationName", applicationName);
265266
dependencies.sort(Dependency.NAME_COMPARATOR);

core/src/main/java/org/owasp/dependencycheck/reporting/ReportTool.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,15 @@ private String determineScore(Vulnerability vuln) {
125125
return "unknown";
126126
}
127127

128+
/**
129+
* Map severity names from various sources to a standard set of severity names.
130+
* @param sev the severity name
131+
* @return the standardized severity name (critical, high, medium, low, unknown)
132+
*/
133+
public String normalizeSeverity(Object sev) {
134+
return normalizeSeverity(sev.toString());
135+
}
136+
128137
/**
129138
* Map severity names from various sources to a standard set of severity names.
130139
* @param sev the severity name

core/src/main/resources/templates/htmlReport.vsl

Lines changed: 14 additions & 8 deletions
Large diffs are not rendered by default.

core/src/main/resources/templates/jenkinsReport.vsl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Copyright (c) 2012 Jeremy Long. All Rights Reserved.
2727
<title>Dependency-Check Report</title>
2828
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2929
<link rel="shortcut icon" href="data:;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVLSURBVFhHvZdvbFRFEMB3913v9Vr+FKUNRdtrewg1lQgRE0gMYkJSowYMwcSPkGDwg8ZigMR+UYzGaIuAEj+R+IfE+EUlRL+QYAwhGBMqkFQDpO1xd/YPBaSU9u767r0dZ5a513vtXVsq8Zcsb3bu9c3szuzsIMU8iEaj5fhYJlzRYCkZ7Utd+wbnQL+Nd0TeoyeAPLFgf/oiyTNxXw6g4WUhTz4JEtaiNXLCEE8l3seHJjlzsOJHfLxMsgHE4cje9B6eTUPxc0ZoxbFHG1qVFq9rCRsKjc+KFG3oFGQ6Kw6xJsCsDqDxNZYWbWSYVUFAJFkyaA2XWAxiHIlcGPukYg1rDCVDQKsOadmqBaxllY8CuKHBuqOlHlNKufFk/GdUmxxoeqTpMbBg1dGXRlZtqHc2R8rgedIXgk4eqNyXMblS1AE2vhWNP84qAxl2hewno6wyFHOAZOLAc6PRbU+kd2OyrmbVPTg3pjlQzDgazGmh40rKMY3LZrVBCi/Tl0z+gqJxYGV9fWNOWC0kF3Jm1/C2pZWwk6cG2olpOcDb7hsHgLQGcUWAGs0bV1K7EuSQFbbOLKmuPkOvkZ64mkzG8bXz5BirDBuP1fzQP6I+5yl9eAS9vxjYAVz9esx0P2a0ck+73VKGPFaR8Vtpx7k0ODiYZlVJmpcvfzirwi1SyUWsMiF5ZXX6A1zJzsq9mRO+A7T1lO2BIyZVN/6bJZFWnQO4Wl1dnerq6sqRbq401TWtw9qxjGT6zhfbs3+0Hrw+THPfgVhdA8Xdz3j84RpIdZOngrY1kUgMOR3lG1kVREkHhBp3smJ4wdLmf+TuoJOxuroW3NI6zN6L9B1W33MAV1+FW99mNIgUclBaYtCPObjx3lTqT5KxqJyk52y4nv5u4f7stzzNY+Hww0ncS0JXBIoDWryRN07JVlVTc9Xo74OQpV7F6ndk5CO7iVVEwDihVqxYYVtKrOc5bckIgHJIpnhl3MxfpWIuJZyWAMdo0Io1AOXMJFI0hm3VzrOiYG2BmsLEAz0Zd9DWzZmyHd/tLt+bOUmDthuzun3C8dryjqCDdzF5tqcPRr40f1AElcvl6lgmJkC5d1kWYS8bZ3HOVL0z0TcKiz70tBjAML4opVgsoeB2nIJyXfeKJfRxGo52j4ds+xwWmN9t1/7t8sDALX7vvqjdd31cChgi40YhZdXUSyiPGkAjPalUL43+/v6/e3p6btC4PHB5XsZ9sMqxZJAWbGIxwJz6gfkAWl5jcUYUbU1+3D60uIp0PPwiNR/wZAW3HERRh5Sy4C3LEhdoiAn368b6xhdoxKLRVn5nXmDpfZZFg7J00f5QgRYJlkV5GWyJVnk2yRpUKBaLFZ6QOYMFaAdW0x08xcXDr5E9E8V3wAmFD7NseO3pMf8uh1xuJYuzQuGjMJreT4rJc4/XrvZk6aZ0yZ47WPkm47M55mxnET23IrW1tRU8DUBFBlf2faYzcptGuefETRix9+NXDNhLHJmpPTenAON1xMyQRbZevaV5ooanwrbsdSz6kPF8kaEz7o9CqOEAvPO59yuFccBR4a/MjGnfNDp5M2IzgQnpd8QB41NBoxRvarWyVrgRe77Ad4vhHzX6H41S8l2eitO9ZR+/+dNDZ3lqbsW+VN/52x12YxlY04xbZd5IqUSbCd8BSiLby13AlTWwSnx6tvKNY10LzCmhm7E3kTiFYqAp/a/4lZCSUYIX6Frffmb86K6nxqJknDoZVD1Q48S0ajc1FBTXU8mFzVs/G77OmgdK0XLLZ7nNnGHuXvmn/w9yYrwzUvIefzAI8S83C2sS1J4rmAAAAABJRU5ErkJggg==" />
30+
<!--suppress CssUnknownProperty, CssUnusedSymbol, HtmlDeprecatedAttribute, CssRedundantUnit, CssReplaceWithShorthandSafely -->
3031
<style type="text/css">
3132
#modal-background {
3233
display: none;
@@ -479,6 +480,9 @@ Getting Help: <a href="https://github.com/dependency-check/DependencyCheck/issue
479480
#set($cnt=0)
480481
#if($exceptions)
481482
#macro( writeHtmlException $type $ex $depth)
483+
#* @vtlvariable name="type" type="java.lang.String" *#
484+
#* @vtlvariable name="ex" type="java.lang.Throwable" *#
485+
#* @vtlvariable name="depth" type="java.lang.Integer" *#
482486
#set($cnt=$cnt+1)
483487
<h4 id="header$cnt" class="subsectionheader white">$enc.html($ex.getMessage())</h4>
484488
<div id="content$cnt" class="subsectioncontent standardsubsection">
@@ -750,7 +754,7 @@ Getting Help: <a href="https://github.com/dependency-check/DependencyCheck/issue
750754
#foreach($ref in $vuln.getReferences(true))
751755
#if ($ref.url && $ref.name)
752756
<li>$enc.html($ref.source) - <a target="_blank" href="$enc.html($ref.url)">$enc.html($ref.name)</a></li>
753-
#elseif ($ref.uri)
757+
#elseif ($ref.url)
754758
<li>$enc.html($ref.source) - <a target="_blank" href="$enc.html($ref.url)">$enc.html($ref.url)</a></li>
755759
#elseif ($ref.name)
756760
<li>$enc.html($ref.source) - $enc.html($ref.name)</li>

0 commit comments

Comments
 (0)