diff --git a/dependency-check-ant/apidocs/allclasses-frame.html b/dependency-check-ant/apidocs/allclasses-frame.html index d9ba34e40..7137249f2 100644 --- a/dependency-check-ant/apidocs/allclasses-frame.html +++ b/dependency-check-ant/apidocs/allclasses-frame.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-ant 1.0.1 API) +All Classes (Dependency-Check Ant Task 1.0.2 API) - + diff --git a/dependency-check-ant/apidocs/allclasses-noframe.html b/dependency-check-ant/apidocs/allclasses-noframe.html index 158b19afd..9a1aa6dc0 100644 --- a/dependency-check-ant/apidocs/allclasses-noframe.html +++ b/dependency-check-ant/apidocs/allclasses-noframe.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-ant 1.0.1 API) +All Classes (Dependency-Check Ant Task 1.0.2 API) - + diff --git a/dependency-check-ant/apidocs/constant-values.html b/dependency-check-ant/apidocs/constant-values.html index 25b4d802b..5e23243ff 100644 --- a/dependency-check-ant/apidocs/constant-values.html +++ b/dependency-check-ant/apidocs/constant-values.html @@ -2,13 +2,13 @@ - + -Constant Field Values (dependency-check-ant 1.0.1 API) +Constant Field Values (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ Constant Field Values (dependency-check-ant 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Constant Field Values (dependency-check-ant 1.0.1 API)"; + parent.document.title="Constant Field Values (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/deprecated-list.html b/dependency-check-ant/apidocs/deprecated-list.html index 26ec11a2f..88e48e2af 100644 --- a/dependency-check-ant/apidocs/deprecated-list.html +++ b/dependency-check-ant/apidocs/deprecated-list.html @@ -2,13 +2,13 @@ - + -Deprecated List (dependency-check-ant 1.0.1 API) +Deprecated List (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ Deprecated List (dependency-check-ant 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Deprecated List (dependency-check-ant 1.0.1 API)"; + parent.document.title="Deprecated List (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/help-doc.html b/dependency-check-ant/apidocs/help-doc.html index 8483ffaa6..39d3f4c97 100644 --- a/dependency-check-ant/apidocs/help-doc.html +++ b/dependency-check-ant/apidocs/help-doc.html @@ -2,13 +2,13 @@ - + -API Help (dependency-check-ant 1.0.1 API) +API Help (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ API Help (dependency-check-ant 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="API Help (dependency-check-ant 1.0.1 API)"; + parent.document.title="API Help (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/index-all.html b/dependency-check-ant/apidocs/index-all.html index 872a848bf..39fd338a3 100644 --- a/dependency-check-ant/apidocs/index-all.html +++ b/dependency-check-ant/apidocs/index-all.html @@ -2,13 +2,13 @@ - + -Index (dependency-check-ant 1.0.1 API) +Index (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ Index (dependency-check-ant 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Index (dependency-check-ant 1.0.1 API)"; + parent.document.title="Index (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/index.html b/dependency-check-ant/apidocs/index.html index 239ca9d25..56b710c6d 100644 --- a/dependency-check-ant/apidocs/index.html +++ b/dependency-check-ant/apidocs/index.html @@ -2,10 +2,10 @@ - + -dependency-check-ant 1.0.1 API +Dependency-Check Ant Task 1.0.2 API diff --git a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/DependencyCheckTask.html b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/DependencyCheckTask.html index 509784f13..82e69915b 100644 --- a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/DependencyCheckTask.html +++ b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/DependencyCheckTask.html @@ -2,13 +2,13 @@ - + -DependencyCheckTask (dependency-check-ant 1.0.1 API) +DependencyCheckTask (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ DependencyCheckTask (dependency-check-ant 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DependencyCheckTask (dependency-check-ant 1.0.1 API)"; + parent.document.title="DependencyCheckTask (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.ReportFormats.html b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.ReportFormats.html index 24c5dde1a..d82bd0c0e 100644 --- a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.ReportFormats.html +++ b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.ReportFormats.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask.ReportFormats (dependency-check-ant 1.0.1 API) +Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask.ReportFormats (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask.ReportForma function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask.ReportFormats (dependency-check-ant 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask.ReportFormats (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.html b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.html index 167356fb8..2efee726b 100644 --- a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.html +++ b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/class-use/DependencyCheckTask.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask (dependency-check-ant 1.0.1 API) +Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask (dependency-check-ant 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.taskdefs.DependencyCheckTask (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-frame.html b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-frame.html index 88f9ccbb7..1850baed7 100644 --- a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-frame.html +++ b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.taskdefs (dependency-check-ant 1.0.1 API) +org.owasp.dependencycheck.taskdefs (Dependency-Check Ant Task 1.0.2 API) - + diff --git a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-summary.html b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-summary.html index d6ce2734f..705a4d100 100644 --- a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-summary.html +++ b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.taskdefs (dependency-check-ant 1.0.1 API) +org.owasp.dependencycheck.taskdefs (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.taskdefs (dependency-check-ant 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.taskdefs (dependency-check-ant 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.taskdefs (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-tree.html b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-tree.html index a8fa1c409..6f107f2a4 100644 --- a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-tree.html +++ b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.taskdefs Class Hierarchy (dependency-check-ant 1.0.1 API) +org.owasp.dependencycheck.taskdefs Class Hierarchy (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.taskdefs Class Hierarchy (dependency-check-ant 1.0.1 A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.taskdefs Class Hierarchy (dependency-check-ant 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.taskdefs Class Hierarchy (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-use.html b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-use.html index 1aa679460..204f8bbc6 100644 --- a/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-use.html +++ b/dependency-check-ant/apidocs/org/owasp/dependencycheck/taskdefs/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.taskdefs (dependency-check-ant 1.0.1 API) +Uses of Package org.owasp.dependencycheck.taskdefs (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.taskdefs (dependency-check-ant 1.0.1 A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.taskdefs (dependency-check-ant 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.taskdefs (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/apidocs/overview-tree.html b/dependency-check-ant/apidocs/overview-tree.html index 423bfd6c9..734b61865 100644 --- a/dependency-check-ant/apidocs/overview-tree.html +++ b/dependency-check-ant/apidocs/overview-tree.html @@ -2,13 +2,13 @@ - + -Class Hierarchy (dependency-check-ant 1.0.1 API) +Class Hierarchy (Dependency-Check Ant Task 1.0.2 API) - + @@ -16,7 +16,7 @@ Class Hierarchy (dependency-check-ant 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Class Hierarchy (dependency-check-ant 1.0.1 API)"; + parent.document.title="Class Hierarchy (Dependency-Check Ant Task 1.0.2 API)"; } } diff --git a/dependency-check-ant/checkstyle.html b/dependency-check-ant/checkstyle.html index 29768deda..ba82f71b4 100644 --- a/dependency-check-ant/checkstyle.html +++ b/dependency-check-ant/checkstyle.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Checkstyle Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -242,7 +242,7 @@ Warnings Warnings Errors Errors -18 +19 0 0 0 diff --git a/dependency-check-ant/checkstyle.rss b/dependency-check-ant/checkstyle.rss index cedea92a6..d901dca64 100644 --- a/dependency-check-ant/checkstyle.rss +++ b/dependency-check-ant/checkstyle.rss @@ -2,13 +2,13 @@ - dependency-check-ant - Checkstyle report + Dependency-Check Ant Task - Checkstyle report https://github.com/jeremylong/DependencyCheck.git/dependency-check-ant - dependency-check-ant - Checkstyle report + Dependency-Check Ant Task - Checkstyle report en-us ©2012 - 2013 OWASP - File: 18, + <title>File: 19, Errors: 0, Warnings: 0, Infos: 0 @@ -68,6 +68,20 @@ <td> 0 </td> + </tr> + <tr> + <td> + <a href="https://github.com/jeremylong/DependencyCheck.git/dependency-check-ant/checkstyle.html#target.dependency-check-data.data.properties">target/dependency-check-data/data.properties</a> + </td> + <td> + 0 + </td> + <td> + 0 + </td> + <td> + 0 + </td> </tr> <tr> <td> diff --git a/dependency-check-ant/cobertura/frame-summary-org.owasp.dependencycheck.taskdefs.html b/dependency-check-ant/cobertura/frame-summary-org.owasp.dependencycheck.taskdefs.html index 81ccaf551..c5066d5e8 100644 --- a/dependency-check-ant/cobertura/frame-summary-org.owasp.dependencycheck.taskdefs.html +++ b/dependency-check-ant/cobertura/frame-summary-org.owasp.dependencycheck.taskdefs.html @@ -16,7 +16,7 @@ <table class="report" id="packageResults"> <thead><tr> <td class="heading">Package</td> <td class="heading"># Classes</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead> <tbody> - <tr><td><a href="frame-summary-org.owasp.dependencycheck.taskdefs.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-org.owasp.dependencycheck.taskdefs.html"'>org.owasp.dependencycheck.taskdefs</a></td><td class="value">2</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:57px"><span class="text">84/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">39%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:39px"><span class="text">23/58</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> + <tr><td><a href="frame-summary-org.owasp.dependencycheck.taskdefs.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-org.owasp.dependencycheck.taskdefs.html"'>org.owasp.dependencycheck.taskdefs</a></td><td class="value">2</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:57px"><span class="text">84/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">41%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:41px"><span class="text">24/58</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> </tbody> </table> <script type="text/javascript"> @@ -28,7 +28,7 @@ packageTable.sort(0); <table class="report" id="classResults"> <thead><tr> <td class="heading">Classes in this Package</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead> <tbody> - <tr><td><a href="org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html">DependencyCheckTask</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">55%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:55px"><span class="text">77/138</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">37%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:37px"><span class="text">21/56</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> + <tr><td><a href="org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html">DependencyCheckTask</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">55%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:55px"><span class="text">77/138</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">39%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:39px"><span class="text">22/56</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> <tr><td><a href="org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html">DependencyCheckTask$ReportFormats</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">7/7</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">2/2</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> </tbody> @@ -38,6 +38,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); </script> -<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 8/7/13 10:04 PM.</div> +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 9/2/13 4:35 PM.</div> </body> </html> diff --git a/dependency-check-ant/cobertura/frame-summary.html b/dependency-check-ant/cobertura/frame-summary.html index 853311f41..9e0675f41 100644 --- a/dependency-check-ant/cobertura/frame-summary.html +++ b/dependency-check-ant/cobertura/frame-summary.html @@ -16,8 +16,8 @@ <table class="report" id="packageResults"> <thead><tr> <td class="heading">Package</td> <td class="heading"># Classes</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead> <tbody> - <tr><td><b>All Packages</b></td><td class="value">2</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:57px"><span class="text">84/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">39%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:39px"><span class="text">23/58</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> - <tr><td><a href="frame-summary-org.owasp.dependencycheck.taskdefs.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-org.owasp.dependencycheck.taskdefs.html"'>org.owasp.dependencycheck.taskdefs</a></td><td class="value">2</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:57px"><span class="text">84/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">39%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:39px"><span class="text">23/58</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> + <tr><td><b>All Packages</b></td><td class="value">2</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:57px"><span class="text">84/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">41%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:41px"><span class="text">24/58</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> + <tr><td><a href="frame-summary-org.owasp.dependencycheck.taskdefs.html" onclick='parent.sourceFileList.location.href="frame-sourcefiles-org.owasp.dependencycheck.taskdefs.html"'>org.owasp.dependencycheck.taskdefs</a></td><td class="value">2</td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">57%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:57px"><span class="text">84/145</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">41%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:41px"><span class="text">24/58</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> </tbody> </table> <script type="text/javascript"> @@ -25,6 +25,6 @@ var packageTable = new SortableTable(document.getElementById("packageResults"), ["String", "Number", "Percentage", "Percentage", "FormattedNumber"]); packageTable.sort(0); </script> -<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 8/7/13 10:04 PM.</div> +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 9/2/13 4:35 PM.</div> </body> </html> diff --git a/dependency-check-ant/cobertura/org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html b/dependency-check-ant/cobertura/org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html index 249e0acc8..9015a037e 100644 --- a/dependency-check-ant/cobertura/org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html +++ b/dependency-check-ant/cobertura/org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html @@ -12,7 +12,7 @@ <div class="separator"> </div> <table class="report"> <thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead> - <tr><td><a href="org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html">DependencyCheckTask</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">55%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:55px"><span class="text">77/138</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">37%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:37px"><span class="text">21/56</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> + <tr><td><a href="org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html">DependencyCheckTask</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">55%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:55px"><span class="text">77/138</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">39%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:39px"><span class="text">22/56</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> <tr><td><a href="org.owasp.dependencycheck.taskdefs.DependencyCheckTask.html">DependencyCheckTask$ReportFormats</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">7/7</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">2/2</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.433333333333333;</span>2.433</td></tr> </table> @@ -142,8 +142,8 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 62</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> DependencyCheckTask() {</pre></td></tr> -<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">super</span>();</pre></td></tr> -<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 63</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">super</span>();</pre></td></tr> +<tr> <td class="numLineCover"> 64</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 65</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">//The following code was copied Apache Ant PathConvert</span></pre></td></tr> <tr> <td class="numLine"> 66</td> <td class="nbHits"> </td> @@ -154,14 +154,14 @@ <td class="src"><pre class="src"> <span class="comment"> * Path to be converted</span></pre></td></tr> <tr> <td class="numLine"> 69</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 70</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> Resources path = <span class="keyword">null</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 70</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> Resources path = <span class="keyword">null</span>;</pre></td></tr> <tr> <td class="numLine"> 71</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">/**</span></pre></td></tr> <tr> <td class="numLine"> 72</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> * Reference to path/fileset to convert</span></pre></td></tr> <tr> <td class="numLine"> 73</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 74</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> Reference refid = <span class="keyword">null</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 74</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> Reference refid = <span class="keyword">null</span>;</pre></td></tr> <tr> <td class="numLine"> 75</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 76</td> <td class="nbHits"> </td> @@ -178,12 +178,12 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 82</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">void</span> add(ResourceCollection rc) {</pre></td></tr> -<tr> <td class="numLineCover"> 83</td> <td class="nbHitsUncovered"><a title="Line 83: Conditional coverage 50% (1/2)."> 12</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 83: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isReference()) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 83</td> <td class="nbHitsUncovered"><a title="Line 83: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 83: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isReference()) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 84</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  <span class="keyword">throw</span> <span class="keyword">new</span> BuildException(<span class="string">"Nested elements are not allowed when using the refid attribute."</span>);</span></pre></td></tr> <tr> <td class="numLine"> 85</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  getPath().add(rc);</pre></td></tr> -<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  getPath().add(rc);</pre></td></tr> +<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 88</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 89</td> <td class="nbHits"> </td> @@ -200,12 +200,12 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 95</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">synchronized</span> Resources getPath() {</pre></td></tr> -<tr> <td class="numLineCover"> 96</td> <td class="nbHitsCovered"><a title="Line 96: Conditional coverage 100% (2/2)."> 12</a></td> <td class="src"><pre class="src"> <a title="Line 96: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></pre></td></tr> -<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  path = <span class="keyword">new</span> Resources(getProject());</pre></td></tr> -<tr> <td class="numLineCover"> 98</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  path.setCache(<span class="keyword">true</span>);</pre></td></tr> +<tr> <td class="numLineCover"> 96</td> <td class="nbHitsCovered"><a title="Line 96: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 96: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></pre></td></tr> +<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  path = <span class="keyword">new</span> Resources(getProject());</pre></td></tr> +<tr> <td class="numLineCover"> 98</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  path.setCache(<span class="keyword">true</span>);</pre></td></tr> <tr> <td class="numLine"> 99</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">return</span> path;</pre></td></tr> +<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">return</span> path;</pre></td></tr> <tr> <td class="numLine"> 101</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 102</td> <td class="nbHits"> </td> @@ -222,7 +222,7 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 108</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">boolean</span> isReference() {</pre></td></tr> -<tr> <td class="numLineCover"> 109</td> <td class="nbHitsUncovered"><a title="Line 109: Conditional coverage 50% (1/2)."> 24</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 109: Conditional coverage 50% (1/2)."> <span class="keyword">return</span> refid != <span class="keyword">null</span>;</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 109</td> <td class="nbHitsUncovered"><a title="Line 109: Conditional coverage 50% (1/2)."> 8</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 109: Conditional coverage 50% (1/2)."> <span class="keyword">return</span> refid != <span class="keyword">null</span>;</a></span></pre></td></tr> <tr> <td class="numLine"> 110</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 111</td> <td class="nbHits"> </td> @@ -263,7 +263,7 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 131</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">void</span> dealWithReferences() <span class="keyword">throws</span> BuildException {</pre></td></tr> -<tr> <td class="numLineCover"> 132</td> <td class="nbHitsUncovered"><a title="Line 132: Conditional coverage 50% (1/2)."> 12</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 132: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isReference()) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 132</td> <td class="nbHitsUncovered"><a title="Line 132: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 132: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isReference()) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 133</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  <span class="keyword">final</span> Object o = refid.getReferencedObject(getProject());</span></pre></td></tr> <tr> <td class="numLineCover"> 134</td> <td class="nbHitsUncovered"><a title="Line 134: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 134: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (!(o <span class="keyword">instanceof</span> ResourceCollection)) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 135</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  <span class="keyword">throw</span> <span class="keyword">new</span> BuildException(<span class="string">"refid '"</span> + refid.getRefId()</span></pre></td></tr> @@ -274,7 +274,7 @@ <tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  getPath().add((ResourceCollection) o);</span></pre></td></tr> <tr> <td class="numLine"> 139</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 140</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 140</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 141</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">// END COPY from org.apache.tools.ant.taskdefs</span></pre></td></tr> <tr> <td class="numLine"> 142</td> <td class="nbHits"> </td> @@ -283,7 +283,7 @@ <td class="src"><pre class="src"> <span class="comment"> * The application name for the report.</span></pre></td></tr> <tr> <td class="numLine"> 144</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 145</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String applicationName = <span class="string">"Dependency-Check"</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 145</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String applicationName = <span class="string">"Dependency-Check"</span>;</pre></td></tr> <tr> <td class="numLine"> 146</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 147</td> <td class="nbHits"> </td> @@ -315,15 +315,15 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 161</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">void</span> setApplicationName(String applicationName) {</pre></td></tr> -<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.applicationName = applicationName;</pre></td></tr> -<tr> <td class="numLineCover"> 163</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.applicationName = applicationName;</pre></td></tr> +<tr> <td class="numLineCover"> 163</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 164</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">/**</span></pre></td></tr> <tr> <td class="numLine"> 165</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> * The location of the data directory that contains</span></pre></td></tr> <tr> <td class="numLine"> 166</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 167</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String dataDirectory = <span class="keyword">null</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 167</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String dataDirectory = <span class="keyword">null</span>;</pre></td></tr> <tr> <td class="numLine"> 168</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 169</td> <td class="nbHits"> </td> @@ -365,7 +365,7 @@ <td class="src"><pre class="src"> <span class="comment"> * report.</span></pre></td></tr> <tr> <td class="numLine"> 189</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 190</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String reportOutputDirectory = <span class="string">"."</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 190</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String reportOutputDirectory = <span class="string">"."</span>;</pre></td></tr> <tr> <td class="numLine"> 191</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 192</td> <td class="nbHits"> </td> @@ -397,8 +397,8 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 206</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">void</span> setReportOutputDirectory(String reportOutputDirectory) {</pre></td></tr> -<tr> <td class="numLineCover"> 207</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.reportOutputDirectory = reportOutputDirectory;</pre></td></tr> -<tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 207</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.reportOutputDirectory = reportOutputDirectory;</pre></td></tr> +<tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 209</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">/**</span></pre></td></tr> <tr> <td class="numLine"> 210</td> <td class="nbHits"> </td> @@ -413,7 +413,7 @@ <td class="src"><pre class="src"> <span class="comment"> * anything above 10 will not cause the build to fail.</span></pre></td></tr> <tr> <td class="numLine"> 215</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">float</span> failBuildOnCVSS = 11;</pre></td></tr> +<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">float</span> failBuildOnCVSS = 11;</pre></td></tr> <tr> <td class="numLine"> 217</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 218</td> <td class="nbHits"> </td> @@ -445,8 +445,8 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 232</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">void</span> setFailBuildOnCVSS(<span class="keyword">float</span> failBuildOnCVSS) {</pre></td></tr> -<tr> <td class="numLineCover"> 233</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.failBuildOnCVSS = failBuildOnCVSS;</pre></td></tr> -<tr> <td class="numLineCover"> 234</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 233</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.failBuildOnCVSS = failBuildOnCVSS;</pre></td></tr> +<tr> <td class="numLineCover"> 234</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 235</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">/**</span></pre></td></tr> <tr> <td class="numLine"> 236</td> <td class="nbHits"> </td> @@ -455,7 +455,7 @@ <td class="src"><pre class="src"> <span class="comment"> * recommended that this be turned to false. Default is true.</span></pre></td></tr> <tr> <td class="numLine"> 238</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 239</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">boolean</span> autoUpdate = <span class="keyword">true</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 239</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">boolean</span> autoUpdate = <span class="keyword">true</span>;</pre></td></tr> <tr> <td class="numLine"> 240</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 241</td> <td class="nbHits"> </td> @@ -487,8 +487,8 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 255</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">void</span> setAutoUpdate(<span class="keyword">boolean</span> autoUpdate) {</pre></td></tr> -<tr> <td class="numLineCover"> 256</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.autoUpdate = autoUpdate;</pre></td></tr> -<tr> <td class="numLineCover"> 257</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 256</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.autoUpdate = autoUpdate;</pre></td></tr> +<tr> <td class="numLineCover"> 257</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 258</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">/**</span></pre></td></tr> <tr> <td class="numLine"> 259</td> <td class="nbHits"> </td> @@ -499,7 +499,7 @@ <td class="src"><pre class="src"> <span class="comment"> * unless the externalReport is set to true. Default is HTML.</span></pre></td></tr> <tr> <td class="numLine"> 262</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String reportFormat = <span class="string">"HTML"</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">private</span> String reportFormat = <span class="string">"HTML"</span>;</pre></td></tr> <tr> <td class="numLine"> 264</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 265</td> <td class="nbHits"> </td> @@ -531,8 +531,8 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 279</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">void</span> setReportFormat(ReportFormats reportFormat) {</pre></td></tr> -<tr> <td class="numLineCover"> 280</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.reportFormat = reportFormat.getValue();</pre></td></tr> -<tr> <td class="numLineCover"> 281</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 280</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">this</span>.reportFormat = reportFormat.getValue();</pre></td></tr> +<tr> <td class="numLineCover"> 281</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 282</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">/**</span></pre></td></tr> <tr> <td class="numLine"> 283</td> <td class="nbHits"> </td> @@ -666,12 +666,12 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 352</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> prepareLogger() {</pre></td></tr> -<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  InputStream in = <span class="keyword">null</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  InputStream in = <span class="keyword">null</span>;</pre></td></tr> <tr> <td class="numLine"> 354</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">try</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  in = DependencyCheckTask.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(LOG_PROPERTIES_FILE);</pre></td></tr> -<tr> <td class="numLineCover"> 356</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  LogManager.getLogManager().reset();</pre></td></tr> -<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  LogManager.getLogManager().readConfiguration(in);</pre></td></tr> +<tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  in = DependencyCheckTask.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(LOG_PROPERTIES_FILE);</pre></td></tr> +<tr> <td class="numLineCover"> 356</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  LogManager.getLogManager().reset();</pre></td></tr> +<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  LogManager.getLogManager().readConfiguration(in);</pre></td></tr> <tr> <td class="numLine"> 358</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">//TODO add code to disable fine grained log file.</span></pre></td></tr> <tr> <td class="numLine"> 359</td> <td class="nbHits"> </td> @@ -689,54 +689,54 @@ <tr> <td class="numLineCover"> 367</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Logger.getLogger(DependencyCheckTask.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> <tr> <td class="numLine"> 368</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  } <span class="keyword">finally</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 369</td> <td class="nbHitsUncovered"><a title="Line 369: Conditional coverage 50% (1/2)."> 12</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 369: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (in != <span class="keyword">null</span>) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 369</td> <td class="nbHitsUncovered"><a title="Line 369: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 369: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (in != <span class="keyword">null</span>) {</a></span></pre></td></tr> <tr> <td class="numLine"> 370</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">try</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 371</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  in.close();</pre></td></tr> +<tr> <td class="numLineCover"> 371</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  in.close();</pre></td></tr> <tr> <td class="numLineCover"> 372</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> <tr> <td class="numLine"> 373</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="comment">//noinspection UnusedAssignment</span></pre></td></tr> <tr> <td class="numLineCover"> 374</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  in = <span class="keyword">null</span>;</span></pre></td></tr> -<tr> <td class="numLineCover"> 375</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 375</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 376</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 377</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 379</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 380</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  @Override</pre></td></tr> <tr> <td class="numLine"> 381</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">void</span> execute() <span class="keyword">throws</span> BuildException {</pre></td></tr> -<tr> <td class="numLineCover"> 382</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  prepareLogger();</pre></td></tr> +<tr> <td class="numLineCover"> 382</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  prepareLogger();</pre></td></tr> <tr> <td class="numLine"> 383</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> -<tr> <td class="numLineCover"> 384</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  dealWithReferences();</pre></td></tr> -<tr> <td class="numLineCover"> 385</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  validateConfiguration();</pre></td></tr> -<tr> <td class="numLineCover"> 386</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  populateSettings();</pre></td></tr> +<tr> <td class="numLineCover"> 384</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  dealWithReferences();</pre></td></tr> +<tr> <td class="numLineCover"> 385</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  validateConfiguration();</pre></td></tr> +<tr> <td class="numLineCover"> 386</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  populateSettings();</pre></td></tr> <tr> <td class="numLine"> 387</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> -<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  <span class="keyword">final</span> Engine engine = <span class="keyword">new</span> Engine();</pre></td></tr> -<tr> <td class="numLineCover"> 389</td> <td class="nbHitsCovered"><a title="Line 389: Conditional coverage 100% (2/2)."> 9</a></td> <td class="src"><pre class="src"> <a title="Line 389: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Resource resource : path) {</a></pre></td></tr> -<tr> <td class="numLineCover"> 390</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src">  <span class="keyword">final</span> FileProvider provider = resource.as(FileProvider.<span class="keyword">class</span>);</pre></td></tr> -<tr> <td class="numLineCover"> 391</td> <td class="nbHitsUncovered"><a title="Line 391: Conditional coverage 50% (1/2)."> 15</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 391: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (provider != <span class="keyword">null</span>) {</a></span></pre></td></tr> -<tr> <td class="numLineCover"> 392</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File file = provider.getFile();</pre></td></tr> -<tr> <td class="numLineCover"> 393</td> <td class="nbHitsUncovered"><a title="Line 393: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 15</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 393: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (file != <span class="keyword">null</span> && file.exists()) {</a></span></pre></td></tr> -<tr> <td class="numLineCover"> 394</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src">  engine.scan(file);</pre></td></tr> +<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">final</span> Engine engine = <span class="keyword">new</span> Engine();</pre></td></tr> +<tr> <td class="numLineCover"> 389</td> <td class="nbHitsCovered"><a title="Line 389: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 389: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Resource resource : path) {</a></pre></td></tr> +<tr> <td class="numLineCover"> 390</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src">  <span class="keyword">final</span> FileProvider provider = resource.as(FileProvider.<span class="keyword">class</span>);</pre></td></tr> +<tr> <td class="numLineCover"> 391</td> <td class="nbHitsUncovered"><a title="Line 391: Conditional coverage 50% (1/2)."> 5</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 391: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (provider != <span class="keyword">null</span>) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 392</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File file = provider.getFile();</pre></td></tr> +<tr> <td class="numLineCover"> 393</td> <td class="nbHitsUncovered"><a title="Line 393: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 5</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 393: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (file != <span class="keyword">null</span> && file.exists()) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 394</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  engine.scan(file);</pre></td></tr> <tr> <td class="numLine"> 395</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 396</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 397</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 397</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 398</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">try</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 399</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  engine.analyzeDependencies();</pre></td></tr> -<tr> <td class="numLineCover"> 400</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  <span class="keyword">final</span> ReportGenerator reporter = <span class="keyword">new</span> ReportGenerator(applicationName, engine.getDependencies(), engine.getAnalyzers());</pre></td></tr> -<tr> <td class="numLineCover"> 401</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  reporter.generateReports(reportOutputDirectory, reportFormat);</pre></td></tr> +<tr> <td class="numLineCover"> 399</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  engine.analyzeDependencies();</pre></td></tr> +<tr> <td class="numLineCover"> 400</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">final</span> ReportGenerator reporter = <span class="keyword">new</span> ReportGenerator(applicationName, engine.getDependencies(), engine.getAnalyzers());</pre></td></tr> +<tr> <td class="numLineCover"> 401</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  reporter.generateReports(reportOutputDirectory, reportFormat);</pre></td></tr> <tr> <td class="numLine"> 402</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> -<tr> <td class="numLineCover"> 403</td> <td class="nbHitsUncovered"><a title="Line 403: Conditional coverage 50% (1/2)."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 403: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.failBuildOnCVSS <= 10) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 403</td> <td class="nbHitsUncovered"><a title="Line 403: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 403: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.failBuildOnCVSS <= 10) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 404</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  checkForFailure(engine.getDependencies());</span></pre></td></tr> <tr> <td class="numLine"> 405</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> @@ -746,8 +746,8 @@ <tr> <td class="numLineCover"> 409</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> <tr> <td class="numLineCover"> 410</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Logger.getLogger(DependencyCheckTask.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> <tr> <td class="numLineCover"> 411</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  <span class="keyword">throw</span> <span class="keyword">new</span> BuildException(<span class="string">"An exception occured; unable to continue task"</span>, ex);</span></pre></td></tr> -<tr> <td class="numLineCover"> 412</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 413</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 412</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 413</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 414</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 415</td> <td class="nbHits"> </td> @@ -764,15 +764,15 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 421</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">void</span> validateConfiguration() <span class="keyword">throws</span> BuildException {</pre></td></tr> -<tr> <td class="numLineCover"> 422</td> <td class="nbHitsCovered"><a title="Line 422: Conditional coverage 100% (2/2)."> 12</a></td> <td class="src"><pre class="src"> <a title="Line 422: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></pre></td></tr> -<tr> <td class="numLineCover"> 423</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">throw</span> <span class="keyword">new</span> BuildException(<span class="string">"No project dependencies have been defined to analyze."</span>);</pre></td></tr> +<tr> <td class="numLineCover"> 422</td> <td class="nbHitsCovered"><a title="Line 422: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 422: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></pre></td></tr> +<tr> <td class="numLineCover"> 423</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">  <span class="keyword">throw</span> <span class="keyword">new</span> BuildException(<span class="string">"No project dependencies have been defined to analyze."</span>);</pre></td></tr> <tr> <td class="numLine"> 424</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 425</td> <td class="nbHitsUncovered"><a title="Line 425: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 425: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (failBuildOnCVSS < 0 || failBuildOnCVSS > 11) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 425</td> <td class="nbHitsUncovered"><a title="Line 425: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 425: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (failBuildOnCVSS < 0 || failBuildOnCVSS > 11) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 426</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  <span class="keyword">throw</span> <span class="keyword">new</span> BuildException(<span class="string">"Invalid configuration, failBuildOnCVSS must be between 0 and 11."</span>);</span></pre></td></tr> <tr> <td class="numLine"> 427</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 428</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 428</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 429</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 430</td> <td class="nbHits"> </td> @@ -787,56 +787,56 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 435</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">private</span> <span class="keyword">void</span> populateSettings() {</pre></td></tr> -<tr> <td class="numLineCover"> 436</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  InputStream taskProperties = <span class="keyword">null</span>;</pre></td></tr> +<tr> <td class="numLineCover"> 436</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  InputStream taskProperties = <span class="keyword">null</span>;</pre></td></tr> <tr> <td class="numLine"> 437</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">try</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 438</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  taskProperties = <span class="keyword">this</span>.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE);</pre></td></tr> -<tr> <td class="numLineCover"> 439</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  Settings.mergeProperties(taskProperties);</pre></td></tr> +<tr> <td class="numLineCover"> 438</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  taskProperties = <span class="keyword">this</span>.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE);</pre></td></tr> +<tr> <td class="numLineCover"> 439</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  Settings.mergeProperties(taskProperties);</pre></td></tr> <tr> <td class="numLineCover"> 440</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr> <tr> <td class="numLineCover"> 441</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Logger.getLogger(DependencyCheckTask.<span class="keyword">class</span>.getName()).log(Level.WARNING, <span class="string">"Unable to load the dependency-check ant task.properties file."</span>);</span></pre></td></tr> <tr> <td class="numLineCover"> 442</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Logger.getLogger(DependencyCheckTask.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr> <tr> <td class="numLine"> 443</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  } <span class="keyword">finally</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 444</td> <td class="nbHitsUncovered"><a title="Line 444: Conditional coverage 50% (1/2)."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 444: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (taskProperties != <span class="keyword">null</span>) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 444</td> <td class="nbHitsUncovered"><a title="Line 444: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 444: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (taskProperties != <span class="keyword">null</span>) {</a></span></pre></td></tr> <tr> <td class="numLine"> 445</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">try</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 446</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  taskProperties.close();</pre></td></tr> +<tr> <td class="numLineCover"> 446</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  taskProperties.close();</pre></td></tr> <tr> <td class="numLineCover"> 447</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr> <tr> <td class="numLineCover"> 448</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Logger.getLogger(DependencyCheckTask.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr> -<tr> <td class="numLineCover"> 449</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 449</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 450</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 451</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 452</td> <td class="nbHitsUncovered"><a title="Line 452: Conditional coverage 50% (1/2)."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 452: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (dataDirectory != <span class="keyword">null</span>) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 452</td> <td class="nbHitsUncovered"><a title="Line 452: Conditional coverage 50% (1/2)."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 452: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (dataDirectory != <span class="keyword">null</span>) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 453</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDirectory);</span></pre></td></tr> <tr> <td class="numLine"> 454</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  } <span class="keyword">else</span> {</pre></td></tr> -<tr> <td class="numLineCover"> 455</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File jarPath = <span class="keyword">new</span> File(DependencyCheckTask.<span class="keyword">class</span>.getProtectionDomain().getCodeSource().getLocation().getPath());</pre></td></tr> -<tr> <td class="numLineCover"> 456</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File base = jarPath.getParentFile();</pre></td></tr> -<tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  <span class="keyword">final</span> String sub = Settings.getString(Settings.KEYS.DATA_DIRECTORY);</pre></td></tr> -<tr> <td class="numLineCover"> 458</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File dataDir = <span class="keyword">new</span> File(base, sub);</pre></td></tr> -<tr> <td class="numLineCover"> 459</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDir.getAbsolutePath());</pre></td></tr> +<tr> <td class="numLineCover"> 455</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File jarPath = <span class="keyword">new</span> File(DependencyCheckTask.<span class="keyword">class</span>.getProtectionDomain().getCodeSource().getLocation().getPath());</pre></td></tr> +<tr> <td class="numLineCover"> 456</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File base = jarPath.getParentFile();</pre></td></tr> +<tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">final</span> String sub = Settings.getString(Settings.KEYS.DATA_DIRECTORY);</pre></td></tr> +<tr> <td class="numLineCover"> 458</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  <span class="keyword">final</span> File dataDir = <span class="keyword">new</span> File(base, sub);</pre></td></tr> +<tr> <td class="numLineCover"> 459</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDir.getAbsolutePath());</pre></td></tr> <tr> <td class="numLine"> 460</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 461</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> -<tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, autoUpdate);</pre></td></tr> +<tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, autoUpdate);</pre></td></tr> <tr> <td class="numLine"> 463</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> -<tr> <td class="numLineCover"> 464</td> <td class="nbHitsUncovered"><a title="Line 464: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 464: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (proxyUrl != <span class="keyword">null</span> && !proxyUrl.isEmpty()) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 464</td> <td class="nbHitsUncovered"><a title="Line 464: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 464: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (proxyUrl != <span class="keyword">null</span> && !proxyUrl.isEmpty()) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 465</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Settings.setString(Settings.KEYS.PROXY_URL, proxyUrl);</span></pre></td></tr> <tr> <td class="numLine"> 466</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 467</td> <td class="nbHitsUncovered"><a title="Line 467: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 467: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (proxyPort != <span class="keyword">null</span> && !proxyPort.isEmpty()) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 467</td> <td class="nbHitsUncovered"><a title="Line 467: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 467: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (proxyPort != <span class="keyword">null</span> && !proxyPort.isEmpty()) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 468</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Settings.setString(Settings.KEYS.PROXY_PORT, proxyPort);</span></pre></td></tr> <tr> <td class="numLine"> 469</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 470</td> <td class="nbHitsUncovered"><a title="Line 470: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 9</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 470: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (connectionTimeout != <span class="keyword">null</span> && !connectionTimeout.isEmpty()) {</a></span></pre></td></tr> +<tr> <td class="numLineCover"> 470</td> <td class="nbHitsUncovered"><a title="Line 470: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 3</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 470: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (connectionTimeout != <span class="keyword">null</span> && !connectionTimeout.isEmpty()) {</a></span></pre></td></tr> <tr> <td class="numLineCover"> 471</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered">  Settings.setString(Settings.KEYS.CONNECTION_TIMEOUT, connectionTimeout);</span></pre></td></tr> <tr> <td class="numLine"> 472</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 473</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src">  }</pre></td></tr> +<tr> <td class="numLineCover"> 473</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 474</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 475</td> <td class="nbHits"> </td> @@ -894,7 +894,7 @@ <td class="src"><pre class="src"> <span class="comment"> * etc..</span></pre></td></tr> <tr> <td class="numLine"> 507</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> -<tr> <td class="numLineCover"> 508</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> ReportFormats <span class="keyword">extends</span> EnumeratedAttribute {</pre></td></tr> +<tr> <td class="numLineCover"> 508</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> ReportFormats <span class="keyword">extends</span> EnumeratedAttribute {</pre></td></tr> <tr> <td class="numLine"> 509</td> <td class="nbHits"> </td> <td class="src"><pre class="src"> </pre></td></tr> <tr> <td class="numLine"> 510</td> <td class="nbHits"> </td> @@ -909,14 +909,14 @@ <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> <tr> <td class="numLine"> 515</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  <span class="keyword">public</span> String[] getValues() {</pre></td></tr> -<tr> <td class="numLineCover"> 516</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">int</span> i = 0;</pre></td></tr> -<tr> <td class="numLineCover"> 517</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">final</span> Format[] formats = Format.values();</pre></td></tr> -<tr> <td class="numLineCover"> 518</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">final</span> String[] values = <span class="keyword">new</span> String[formats.length];</pre></td></tr> -<tr> <td class="numLineCover"> 519</td> <td class="nbHitsCovered"><a title="Line 519: Conditional coverage 100% (2/2)."> 60</a></td> <td class="src"><pre class="src"> <a title="Line 519: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Format format : formats) {</a></pre></td></tr> -<tr> <td class="numLineCover"> 520</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src">  values[i++] = format.name();</pre></td></tr> +<tr> <td class="numLineCover"> 516</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">int</span> i = 0;</pre></td></tr> +<tr> <td class="numLineCover"> 517</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">final</span> Format[] formats = Format.values();</pre></td></tr> +<tr> <td class="numLineCover"> 518</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">final</span> String[] values = <span class="keyword">new</span> String[formats.length];</pre></td></tr> +<tr> <td class="numLineCover"> 519</td> <td class="nbHitsCovered"><a title="Line 519: Conditional coverage 100% (2/2)."> 20</a></td> <td class="src"><pre class="src"> <a title="Line 519: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Format format : formats) {</a></pre></td></tr> +<tr> <td class="numLineCover"> 520</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src">  values[i++] = format.name();</pre></td></tr> <tr> <td class="numLine"> 521</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> -<tr> <td class="numLineCover"> 522</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">  <span class="keyword">return</span> values;</pre></td></tr> +<tr> <td class="numLineCover"> 522</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">  <span class="keyword">return</span> values;</pre></td></tr> <tr> <td class="numLine"> 523</td> <td class="nbHits"> </td> <td class="src"><pre class="src">  }</pre></td></tr> <tr> <td class="numLine"> 524</td> <td class="nbHits"> </td> @@ -925,6 +925,6 @@ <td class="src"><pre class="src"> }</pre></td></tr> </table> -<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 8/7/13 10:04 PM.</div> +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 9/2/13 4:35 PM.</div> </body> </html> diff --git a/dependency-check-ant/configuration.html b/dependency-check-ant/configuration.html index a76250182..ee3b118af 100644 --- a/dependency-check-ant/configuration.html +++ b/dependency-check-ant/configuration.html @@ -1,13 +1,13 @@ <!DOCTYPE html> <!-- - | Generated by Apache Maven Doxia at 2013-08-06 + | Generated by Apache Maven Doxia at 2013-09-02 | Rendered using Apache Maven Fluido Skin 1.3.0 --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="Date-Revision-yyyymmdd" content="20130806" /> + <meta name="Date-Revision-yyyymmdd" content="20130902" /> <meta http-equiv="Content-Language" content="en" /> <title>dependency-check-ant - @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-06
  • |
  • -
  • Version: 1.0.1-SNAPSHOT
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/cpd.html b/dependency-check-ant/cpd.html index edf19062f..33157d9ff 100644 --- a/dependency-check-ant/cpd.html +++ b/dependency-check-ant/cpd.html @@ -1,13 +1,13 @@ - + dependency-check-ant - CPD Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/dependency-updates-report.html b/dependency-check-ant/dependency-updates-report.html index e6e525a14..f97caa96b 100644 --- a/dependency-check-ant/dependency-updates-report.html +++ b/dependency-check-ant/dependency-updates-report.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Dependency Updates Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -312,7 +312,7 @@ org.owasp dependency-check-core -1.0.1 +1.0.2 compile jar @@ -427,7 +427,7 @@ dependency-check-core Current Version -1.0.1 +1.0.2 Scope compile diff --git a/dependency-check-ant/findbugs.html b/dependency-check-ant/findbugs.html index b4161e7aa..4d7bcfef0 100644 --- a/dependency-check-ant/findbugs.html +++ b/dependency-check-ant/findbugs.html @@ -1,13 +1,13 @@ - + dependency-check-ant - FindBugs Bug Detector Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/index.html b/dependency-check-ant/index.html index bcbc34d9c..af2c2f141 100644 --- a/dependency-check-ant/index.html +++ b/dependency-check-ant/index.html @@ -1,13 +1,13 @@ - + dependency-check-ant - About @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -168,7 +168,7 @@
    -

    About dependency-check-ant

    +

    About Dependency-Check Ant Task

    Dependency-check is a utility that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries.

    diff --git a/dependency-check-ant/installation.html b/dependency-check-ant/installation.html index 140222205..7053ffd77 100644 --- a/dependency-check-ant/installation.html +++ b/dependency-check-ant/installation.html @@ -1,13 +1,13 @@ - + dependency-check-ant - @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-06
  • |
  • -
  • Version: 1.0.1-SNAPSHOT
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -145,7 +145,7 @@

    Installation

    -

    Download dependency-check-ant from bintray here. To install dependency-check-ant place the dependency-check-ant-1.0.1-SNAPSHOT.jar into the lib directory of your Ant instalation directory. Once installed you can add the taskdef to you build.xml and add the task to a new or existing target.

    +

    Download dependency-check-ant from bintray here. To install dependency-check-ant place the dependency-check-ant-1.0.2.jar into the lib directory of your Ant instalation directory. Once installed you can add the taskdef to you build.xml and add the task to a new or existing target.

    It is important to understand that the first time this task is executed it may take 20 minutes or more as it downloads and processes the data from the National Vulnerability Database (NVD) hosted by NIST: https://nvd.nist.gov

    After the first batch download, as long as the task is executed at least once every seven days the update will only take a few seconds.

    diff --git a/dependency-check-ant/license.html b/dependency-check-ant/license.html index ccffa05e7..3d7583d17 100644 --- a/dependency-check-ant/license.html +++ b/dependency-check-ant/license.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Project License @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/plugin-updates-report.html b/dependency-check-ant/plugin-updates-report.html index 66a1f945a..99ba3f191 100644 --- a/dependency-check-ant/plugin-updates-report.html +++ b/dependency-check-ant/plugin-updates-report.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Plugin Updates Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -237,7 +237,7 @@ # of plugins using the latest version available -7 +5 # of plugins where the next version available is smaller than an incremental version update @@ -249,7 +249,7 @@ # of plugins where the next version available is a minor version update -7 +8 # of plugins where the next version available is a major version update @@ -385,16 +385,6 @@ - -org.apache.maven.plugins -maven-gpg-plugin -1.4 - - - - - - org.apache.maven.plugins maven-install-plugin @@ -404,7 +394,7 @@ 2.4 - + org.apache.maven.plugins maven-jar-plugin @@ -414,7 +404,7 @@ - + org.apache.maven.plugins maven-javadoc-plugin @@ -424,7 +414,7 @@ - + org.apache.maven.plugins maven-resources-plugin @@ -434,7 +424,7 @@ - + org.apache.maven.plugins maven-shade-plugin @@ -444,7 +434,7 @@ - + org.apache.maven.plugins maven-site-plugin @@ -454,7 +444,7 @@ - + org.apache.maven.plugins maven-surefire-plugin @@ -464,17 +454,17 @@ 2.15 - - + + org.codehaus.mojo cobertura-maven-plugin -2.5.2 - +2.5.2 +2.6 - + Status Group Id Artifact Id @@ -490,19 +480,19 @@

    Plugin com.github.github:site-maven-plugin

    - + - + - + - + - +
    Status  There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Id com.github.github
    Artifact Id site-maven-plugin
    Current Version 0.7
    Newer versions 0.8 Next Minor
    @@ -629,21 +619,6 @@ Newer versions 1.0.1 Next Incremental
    1.1 Next Minor
    1.1.1
    1.2
    1.3
    1.3.1 Latest Minor
    -

    Plugin org.apache.maven.plugins:maven-gpg-plugin

    - - - - - - - - - - - - -
    Status No newer versions available.
    Group Idorg.apache.maven.plugins
    Artifact Idmaven-gpg-plugin
    Current Version1.4
    -

    Plugin org.apache.maven.plugins:maven-install-plugin

    @@ -831,13 +806,13 @@ -
    2.14
    Newer versions2.14.1 Next Incremental
    2.15 Next Minor
    +2.14.1 Next Incremental
    2.15 Next Minor
    2.16 Latest Minor

    Plugin org.codehaus.mojo:cobertura-maven-plugin

    - + @@ -846,7 +821,10 @@ -
    Status No newer versions available.
     There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Id org.codehaus.mojo
    cobertura-maven-plugin
    Current Version2.5.2
    +2.5.2 + +Newer versions +2.6 Next Minor diff --git a/dependency-check-ant/pmd.html b/dependency-check-ant/pmd.html index 9e4ec6d28..b9e289c0a 100644 --- a/dependency-check-ant/pmd.html +++ b/dependency-check-ant/pmd.html @@ -1,13 +1,13 @@ - + dependency-check-ant - PMD Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/project-info.html b/dependency-check-ant/project-info.html index ea8ac7d91..93d65fa58 100644 --- a/dependency-check-ant/project-info.html +++ b/dependency-check-ant/project-info.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Project Information @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/project-reports.html b/dependency-check-ant/project-reports.html index f67571c9b..9736b336b 100644 --- a/dependency-check-ant/project-reports.html +++ b/dependency-check-ant/project-reports.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Generated Reports @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/project-summary.html b/dependency-check-ant/project-summary.html index 4bded51eb..e952af846 100644 --- a/dependency-check-ant/project-summary.html +++ b/dependency-check-ant/project-summary.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Project Summary @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -177,7 +177,7 @@ Value Name -dependency-check-ant +Dependency-Check Ant Task Description Dependency-check is a utility that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries. @@ -210,7 +210,7 @@ dependency-check-ant Version -1.0.1 +1.0.2 Type jar diff --git a/dependency-check-ant/surefire-report.html b/dependency-check-ant/surefire-report.html index 05b74a244..1fe4ee63f 100644 --- a/dependency-check-ant/surefire-report.html +++ b/dependency-check-ant/surefire-report.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Surefire Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -266,7 +266,7 @@ function toggleDisplay(elementId) { 0 0 100% -9.995
    +7.877

    Note: failures are anticipated and checked for with assertions while errors are unanticipated.


    Package List

    @@ -287,7 +287,7 @@ function toggleDisplay(elementId) { 0 0 100% -9.995
    +7.877

    Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.

    org.owasp.dependencycheck.taskdefs

    @@ -309,7 +309,7 @@ function toggleDisplay(elementId) { 0 0 100% -9.995

    +7.877

    Test Cases

    [Summary] [Package List] [Test Cases]

    @@ -319,19 +319,19 @@ function toggleDisplay(elementId) { testGetFailBuildOnCVSS -0.461 +0.523 testAddDirSet -2.457 +4.105 testAddFileSet -6.597 +2.159 testAddFileList -0.48

    +1.09
    diff --git a/dependency-check-ant/taglist.html b/dependency-check-ant/taglist.html index 097af69aa..462e4ba74 100644 --- a/dependency-check-ant/taglist.html +++ b/dependency-check-ant/taglist.html @@ -1,13 +1,13 @@ - + dependency-check-ant - Tag List report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/usage.html b/dependency-check-ant/usage.html index 6cc0aa244..3dc0499ab 100644 --- a/dependency-check-ant/usage.html +++ b/dependency-check-ant/usage.html @@ -1,13 +1,13 @@ - + dependency-check-ant - @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-06
  • |
  • -
  • Version: 1.0.1-SNAPSHOT
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-ant/xref-test/index.html b/dependency-check-ant/xref-test/index.html index 1dd999b8a..f4791590e 100644 --- a/dependency-check-ant/xref-test/index.html +++ b/dependency-check-ant/xref-test/index.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference + Dependency-Check Ant Task 1.0.2 Reference diff --git a/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/DependencyCheckTaskTest.html b/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/DependencyCheckTaskTest.html index 08d4d5b78..0c72c595c 100644 --- a/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/DependencyCheckTaskTest.html +++ b/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/DependencyCheckTaskTest.html @@ -36,99 +36,101 @@ 26 import org.junit.BeforeClass; 27 import org.junit.Test; 28 import org.apache.tools.ant.BuildFileTest; -29 -30 /** -31 * -32 * @author Jeremy Long (jeremy.long@owasp.org) -33 */ -34 public class DependencyCheckTaskTest extends BuildFileTest { -35 -36 public DependencyCheckTaskTest() { -37 } -38 -39 @BeforeClass -40 public static void setUpClass() { -41 } -42 -43 @AfterClass -44 public static void tearDownClass() { -45 } -46 -47 @Before -48 @Override -49 public void setUp() { -50 final String buildFile = this.getClass().getClassLoader().getResource("build.xml").getPath(); -51 configureProject(buildFile); -52 } -53 -54 @After -55 @Override -56 public void tearDown() { -57 //no cleanup... -58 //executeTarget("cleanup"); -59 } -60 -61 /** -62 * Test of addFileSet method, of class DependencyCheckTask. -63 */ -64 @Test -65 public void testAddFileSet() throws Exception { -66 File report = new File("target/DependencyCheck-Report.html"); -67 if (report.exists()) { -68 if (!report.delete()) { -69 throw new Exception("Unable to delete 'target/DependencyCheck-Report.html' prior to test."); -70 } -71 } -72 executeTarget("test.fileset"); -73 -74 assertTrue("DependencyCheck report was not generated", report.exists()); +29 import org.owasp.dependencycheck.data.nvdcve.BaseDBTestCase; +30 +31 /** +32 * +33 * @author Jeremy Long (jeremy.long@owasp.org) +34 */ +35 public class DependencyCheckTaskTest extends BuildFileTest { +36 +37 public DependencyCheckTaskTest() { +38 } +39 +40 @BeforeClass +41 public static void setUpClass() { +42 } +43 +44 @AfterClass +45 public static void tearDownClass() { +46 } +47 +48 @Before +49 @Override +50 public void setUp() throws Exception { +51 BaseDBTestCase.ensureDBExists(); +52 final String buildFile = this.getClass().getClassLoader().getResource("build.xml").getPath(); +53 configureProject(buildFile); +54 } +55 +56 @After +57 @Override +58 public void tearDown() { +59 //no cleanup... +60 //executeTarget("cleanup"); +61 } +62 +63 /** +64 * Test of addFileSet method, of class DependencyCheckTask. +65 */ +66 @Test +67 public void testAddFileSet() throws Exception { +68 File report = new File("target/DependencyCheck-Report.html"); +69 if (report.exists()) { +70 if (!report.delete()) { +71 throw new Exception("Unable to delete 'target/DependencyCheck-Report.html' prior to test."); +72 } +73 } +74 executeTarget("test.fileset"); 75 -76 } +76 assertTrue("DependencyCheck report was not generated", report.exists()); 77 -78 /** -79 * Test of addFileList method, of class DependencyCheckTask. -80 * -81 * @throws Exception -82 */ -83 @Test -84 public void testAddFileList() throws Exception { -85 File report = new File("target/DependencyCheck-Report.xml"); -86 if (report.exists()) { -87 if (!report.delete()) { -88 throw new Exception("Unable to delete 'target/DependencyCheck-Report.xml' prior to test."); -89 } -90 } -91 executeTarget("test.filelist"); -92 -93 assertTrue("DependencyCheck report was not generated", report.exists()); -94 } -95 -96 /** -97 * Test of addDirSet method, of class DependencyCheckTask. -98 * -99 * @throws Exception -100 */ -101 @Test -102 public void testAddDirSet() throws Exception { -103 File report = new File("target/DependencyCheck-Vulnerability.html"); -104 if (report.exists()) { -105 if (!report.delete()) { -106 throw new Exception("Unable to delete 'target/DependencyCheck-Vulnerability.html' prior to test."); -107 } -108 } -109 executeTarget("test.dirset"); -110 assertTrue("DependencyCheck report was not generated", report.exists()); -111 } -112 -113 /** -114 * Test of getFailBuildOnCVSS method, of class DependencyCheckTask. -115 */ -116 @Test -117 public void testGetFailBuildOnCVSS() { -118 expectBuildException("failCVSS", "asdfasdfscore"); -119 System.out.println(this.getOutput()); -120 } -121 } +78 } +79 +80 /** +81 * Test of addFileList method, of class DependencyCheckTask. +82 * +83 * @throws Exception +84 */ +85 @Test +86 public void testAddFileList() throws Exception { +87 File report = new File("target/DependencyCheck-Report.xml"); +88 if (report.exists()) { +89 if (!report.delete()) { +90 throw new Exception("Unable to delete 'target/DependencyCheck-Report.xml' prior to test."); +91 } +92 } +93 executeTarget("test.filelist"); +94 +95 assertTrue("DependencyCheck report was not generated", report.exists()); +96 } +97 +98 /** +99 * Test of addDirSet method, of class DependencyCheckTask. +100 * +101 * @throws Exception +102 */ +103 @Test +104 public void testAddDirSet() throws Exception { +105 File report = new File("target/DependencyCheck-Vulnerability.html"); +106 if (report.exists()) { +107 if (!report.delete()) { +108 throw new Exception("Unable to delete 'target/DependencyCheck-Vulnerability.html' prior to test."); +109 } +110 } +111 executeTarget("test.dirset"); +112 assertTrue("DependencyCheck report was not generated", report.exists()); +113 } +114 +115 /** +116 * Test of getFailBuildOnCVSS method, of class DependencyCheckTask. +117 */ +118 @Test +119 public void testGetFailBuildOnCVSS() { +120 expectBuildException("failCVSS", "asdfasdfscore"); +121 System.out.println(this.getOutput()); +122 } +123 }
    diff --git a/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-frame.html b/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-frame.html index 2cbbcc8cf..86f69860c 100644 --- a/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-frame.html +++ b/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference Package org.owasp.dependencycheck.taskdefs + Dependency-Check Ant Task 1.0.2 Reference Package org.owasp.dependencycheck.taskdefs diff --git a/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-summary.html b/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-summary.html index 84addb8b8..cbe52f7dc 100644 --- a/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-summary.html +++ b/dependency-check-ant/xref-test/org/owasp/dependencycheck/taskdefs/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference Package org.owasp.dependencycheck.taskdefs + Dependency-Check Ant Task 1.0.2 Reference Package org.owasp.dependencycheck.taskdefs diff --git a/dependency-check-ant/xref-test/overview-frame.html b/dependency-check-ant/xref-test/overview-frame.html index e602f3fb2..165fe1a4e 100644 --- a/dependency-check-ant/xref-test/overview-frame.html +++ b/dependency-check-ant/xref-test/overview-frame.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference + Dependency-Check Ant Task 1.0.2 Reference diff --git a/dependency-check-ant/xref-test/overview-summary.html b/dependency-check-ant/xref-test/overview-summary.html index 9e48b7f16..c13164fbb 100644 --- a/dependency-check-ant/xref-test/overview-summary.html +++ b/dependency-check-ant/xref-test/overview-summary.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference + Dependency-Check Ant Task 1.0.2 Reference @@ -24,7 +24,7 @@ -

    dependency-check-ant 1.0.1 Reference

    +

    Dependency-Check Ant Task 1.0.2 Reference

    diff --git a/dependency-check-ant/xref/index.html b/dependency-check-ant/xref/index.html index 1dd999b8a..f4791590e 100644 --- a/dependency-check-ant/xref/index.html +++ b/dependency-check-ant/xref/index.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference + Dependency-Check Ant Task 1.0.2 Reference diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html index 08ae85108..ff68a1ec8 100644 --- a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html +++ b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference Package org.owasp.dependencycheck.taskdefs + Dependency-Check Ant Task 1.0.2 Reference Package org.owasp.dependencycheck.taskdefs diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html index d95d79cc1..74f78a4dd 100644 --- a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html +++ b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference Package org.owasp.dependencycheck.taskdefs + Dependency-Check Ant Task 1.0.2 Reference Package org.owasp.dependencycheck.taskdefs diff --git a/dependency-check-ant/xref/overview-frame.html b/dependency-check-ant/xref/overview-frame.html index e602f3fb2..165fe1a4e 100644 --- a/dependency-check-ant/xref/overview-frame.html +++ b/dependency-check-ant/xref/overview-frame.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference + Dependency-Check Ant Task 1.0.2 Reference diff --git a/dependency-check-ant/xref/overview-summary.html b/dependency-check-ant/xref/overview-summary.html index 9e48b7f16..c13164fbb 100644 --- a/dependency-check-ant/xref/overview-summary.html +++ b/dependency-check-ant/xref/overview-summary.html @@ -3,7 +3,7 @@ - dependency-check-ant 1.0.1 Reference + Dependency-Check Ant Task 1.0.2 Reference @@ -24,7 +24,7 @@ -

    dependency-check-ant 1.0.1 Reference

    +

    Dependency-Check Ant Task 1.0.2 Reference

    diff --git a/dependency-check-cli/apidocs/allclasses-frame.html b/dependency-check-cli/apidocs/allclasses-frame.html index 0ad5f64e2..216b228ef 100644 --- a/dependency-check-cli/apidocs/allclasses-frame.html +++ b/dependency-check-cli/apidocs/allclasses-frame.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-cli 1.0.1 API) +All Classes (Dependency-Check Command Line 1.0.2 API) - + diff --git a/dependency-check-cli/apidocs/allclasses-noframe.html b/dependency-check-cli/apidocs/allclasses-noframe.html index 6b3f008e6..30d9fd589 100644 --- a/dependency-check-cli/apidocs/allclasses-noframe.html +++ b/dependency-check-cli/apidocs/allclasses-noframe.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-cli 1.0.1 API) +All Classes (Dependency-Check Command Line 1.0.2 API) - + diff --git a/dependency-check-cli/apidocs/constant-values.html b/dependency-check-cli/apidocs/constant-values.html index 1ad4f73af..38833a0ca 100644 --- a/dependency-check-cli/apidocs/constant-values.html +++ b/dependency-check-cli/apidocs/constant-values.html @@ -2,13 +2,13 @@ - + -Constant Field Values (dependency-check-cli 1.0.1 API) +Constant Field Values (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Constant Field Values (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Constant Field Values (dependency-check-cli 1.0.1 API)"; + parent.document.title="Constant Field Values (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/deprecated-list.html b/dependency-check-cli/apidocs/deprecated-list.html index 97753cba6..79e62cd95 100644 --- a/dependency-check-cli/apidocs/deprecated-list.html +++ b/dependency-check-cli/apidocs/deprecated-list.html @@ -2,13 +2,13 @@ - + -Deprecated List (dependency-check-cli 1.0.1 API) +Deprecated List (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Deprecated List (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Deprecated List (dependency-check-cli 1.0.1 API)"; + parent.document.title="Deprecated List (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/help-doc.html b/dependency-check-cli/apidocs/help-doc.html index 4a53c2cf8..d7b1819c3 100644 --- a/dependency-check-cli/apidocs/help-doc.html +++ b/dependency-check-cli/apidocs/help-doc.html @@ -2,13 +2,13 @@ - + -API Help (dependency-check-cli 1.0.1 API) +API Help (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ API Help (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="API Help (dependency-check-cli 1.0.1 API)"; + parent.document.title="API Help (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/index-all.html b/dependency-check-cli/apidocs/index-all.html index e98f9ccb1..d083424f3 100644 --- a/dependency-check-cli/apidocs/index-all.html +++ b/dependency-check-cli/apidocs/index-all.html @@ -2,13 +2,13 @@ - + -Index (dependency-check-cli 1.0.1 API) +Index (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Index (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Index (dependency-check-cli 1.0.1 API)"; + parent.document.title="Index (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/index.html b/dependency-check-cli/apidocs/index.html index aca8c94b3..7b43137a2 100644 --- a/dependency-check-cli/apidocs/index.html +++ b/dependency-check-cli/apidocs/index.html @@ -2,10 +2,10 @@ - + -dependency-check-cli 1.0.1 API +Dependency-Check Command Line 1.0.2 API diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/class-use/App.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/class-use/App.html index 50dcce92b..c3d26cd8b 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/class-use/App.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/class-use/App.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.App (dependency-check-cli 1.0.1 API) +Uses of Class org.owasp.dependencycheck.App (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.App (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.App (dependency-check-cli 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.App (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.ArgumentName.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.ArgumentName.html index 0da7f013d..f02176cdf 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.ArgumentName.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.ArgumentName.html @@ -2,13 +2,13 @@ - + -CliParser.ArgumentName (dependency-check-cli 1.0.1 API) +CliParser.ArgumentName (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ CliParser.ArgumentName (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CliParser.ArgumentName (dependency-check-cli 1.0.1 API)"; + parent.document.title="CliParser.ArgumentName (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.html index 751008e48..36fd45e99 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/CliParser.html @@ -2,13 +2,13 @@ - + -CliParser (dependency-check-cli 1.0.1 API) +CliParser (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ CliParser (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CliParser (dependency-check-cli 1.0.1 API)"; + parent.document.title="CliParser (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.ArgumentName.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.ArgumentName.html index 5b6b4b09c..1e811f490 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.ArgumentName.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.ArgumentName.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.cli.CliParser.ArgumentName (dependency-check-cli 1.0.1 API) +Uses of Class org.owasp.dependencycheck.cli.CliParser.ArgumentName (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.cli.CliParser.ArgumentName (dependency-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.cli.CliParser.ArgumentName (dependency-check-cli 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.cli.CliParser.ArgumentName (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.html index 66bdf4a1b..f5d521355 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/class-use/CliParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.cli.CliParser (dependency-check-cli 1.0.1 API) +Uses of Class org.owasp.dependencycheck.cli.CliParser (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.cli.CliParser (dependency-check-cli 1.0. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.cli.CliParser (dependency-check-cli 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.cli.CliParser (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-frame.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-frame.html index 6fea06448..e8cab15eb 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-frame.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.cli (dependency-check-cli 1.0.1 API) +org.owasp.dependencycheck.cli (Dependency-Check Command Line 1.0.2 API) - + diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-summary.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-summary.html index 37549f0ea..92e770641 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-summary.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.cli (dependency-check-cli 1.0.1 API) +org.owasp.dependencycheck.cli (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.cli (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.cli (dependency-check-cli 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.cli (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-tree.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-tree.html index ef738f922..810b509a7 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-tree.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.cli Class Hierarchy (dependency-check-cli 1.0.1 API) +org.owasp.dependencycheck.cli Class Hierarchy (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.cli Class Hierarchy (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.cli Class Hierarchy (dependency-check-cli 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.cli Class Hierarchy (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-use.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-use.html index 9cafd43f4..f7ba7fe9c 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-use.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/cli/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.cli (dependency-check-cli 1.0.1 API) +Uses of Package org.owasp.dependencycheck.cli (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.cli (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.cli (dependency-check-cli 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.cli (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-frame.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-frame.html index e3b003dfb..3b5fd42d8 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-frame.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck (dependency-check-cli 1.0.1 API) +org.owasp.dependencycheck (Dependency-Check Command Line 1.0.2 API) - + diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html index 2ed98f0b4..7a9fbb7d6 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck (dependency-check-cli 1.0.1 API) +org.owasp.dependencycheck (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck (dependency-check-cli 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-tree.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-tree.html index 936eb348a..fee120e19 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-tree.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck Class Hierarchy (dependency-check-cli 1.0.1 API) +org.owasp.dependencycheck Class Hierarchy (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck Class Hierarchy (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck Class Hierarchy (dependency-check-cli 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck Class Hierarchy (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-use.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-use.html index 3215e246f..4744fcc46 100644 --- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-use.html +++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck (dependency-check-cli 1.0.1 API) +Uses of Package org.owasp.dependencycheck (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck (dependency-check-cli 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/apidocs/overview-frame.html b/dependency-check-cli/apidocs/overview-frame.html index d4d5f2403..c933d5a86 100644 --- a/dependency-check-cli/apidocs/overview-frame.html +++ b/dependency-check-cli/apidocs/overview-frame.html @@ -2,13 +2,13 @@ - + -Overview List (dependency-check-cli 1.0.1 API) +Overview List (Dependency-Check Command Line 1.0.2 API) - + diff --git a/dependency-check-cli/apidocs/overview-summary.html b/dependency-check-cli/apidocs/overview-summary.html index 6666c3f03..deac7deac 100644 --- a/dependency-check-cli/apidocs/overview-summary.html +++ b/dependency-check-cli/apidocs/overview-summary.html @@ -2,13 +2,13 @@ - + -Overview (dependency-check-cli 1.0.1 API) +Overview (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Overview (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Overview (dependency-check-cli 1.0.1 API)"; + parent.document.title="Overview (Dependency-Check Command Line 1.0.2 API)"; } } @@ -82,7 +82,7 @@ function windowTitle()

    -dependency-check-cli 1.0.1 API +Dependency-Check Command Line 1.0.2 API

    diff --git a/dependency-check-cli/apidocs/overview-tree.html b/dependency-check-cli/apidocs/overview-tree.html index 9f0427371..092e88f22 100644 --- a/dependency-check-cli/apidocs/overview-tree.html +++ b/dependency-check-cli/apidocs/overview-tree.html @@ -2,13 +2,13 @@ - + -Class Hierarchy (dependency-check-cli 1.0.1 API) +Class Hierarchy (Dependency-Check Command Line 1.0.2 API) - + @@ -16,7 +16,7 @@ Class Hierarchy (dependency-check-cli 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Class Hierarchy (dependency-check-cli 1.0.1 API)"; + parent.document.title="Class Hierarchy (Dependency-Check Command Line 1.0.2 API)"; } } diff --git a/dependency-check-cli/checkstyle.html b/dependency-check-cli/checkstyle.html index 600c97d21..978f15ef9 100644 --- a/dependency-check-cli/checkstyle.html +++ b/dependency-check-cli/checkstyle.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Checkstyle Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/checkstyle.rss b/dependency-check-cli/checkstyle.rss index 1fb213ef9..556aa7170 100644 --- a/dependency-check-cli/checkstyle.rss +++ b/dependency-check-cli/checkstyle.rss @@ -2,9 +2,9 @@ - dependency-check-cli - Checkstyle report + Dependency-Check Command Line - Checkstyle report https://github.com/jeremylong/DependencyCheck.git/dependency-check-cli - dependency-check-cli - Checkstyle report + Dependency-Check Command Line - Checkstyle report en-us ©2012 - 2013 OWASP diff --git a/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.cli.html b/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.cli.html index 33b55e32b..3898fec1f 100644 --- a/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.cli.html +++ b/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.cli.html @@ -38,6 +38,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.html b/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.html index cbea31395..0856eeece 100644 --- a/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.html +++ b/dependency-check-cli/cobertura/frame-summary-org.owasp.dependencycheck.html @@ -38,6 +38,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-cli/cobertura/frame-summary.html b/dependency-check-cli/cobertura/frame-summary.html index 4dfc4fbcf..81875c09a 100644 --- a/dependency-check-cli/cobertura/frame-summary.html +++ b/dependency-check-cli/cobertura/frame-summary.html @@ -26,6 +26,6 @@ var packageTable = new SortableTable(document.getElementById("packageResults"), ["String", "Number", "Percentage", "Percentage", "FormattedNumber"]); packageTable.sort(0); - + diff --git a/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html b/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html index 14f951b70..2e91afc5a 100644 --- a/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html +++ b/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html @@ -344,6 +344,6 @@
     }
    - + diff --git a/dependency-check-cli/cobertura/org.owasp.dependencycheck.cli.CliParser.html b/dependency-check-cli/cobertura/org.owasp.dependencycheck.cli.CliParser.html index 15edc2a9f..c3fad0cca 100644 --- a/dependency-check-cli/cobertura/org.owasp.dependencycheck.cli.CliParser.html +++ b/dependency-check-cli/cobertura/org.owasp.dependencycheck.cli.CliParser.html @@ -96,7 +96,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     39  
      */
    -  40  27
     public final class CliParser {
    +  40  9
     public final class CliParser {
     41  
     
     42   @@ -113,14 +113,14 @@
          * The options for the command line parser.
     48  
          */
    -  49  27
         private final Options options = createCommandLineOptions();
    +  49  9
         private final Options options = createCommandLineOptions();
     50  
         /**
     51  
          * Indicates whether the arguments are valid.
     52  
          */
    -  53  27
         private boolean isValid = true;
    +  53  9
         private boolean isValid = true;
     54  
     
     55   @@ -141,14 +141,14 @@
          */
     63  
         public void parse(String[] args) throws FileNotFoundException, ParseException {
    -  64  27
             line = parseArgs(args);
    +  64  9
             line = parseArgs(args);
     65  
     
    -  66  24
             if (line != null) {
    -  67  24
                 validateArgs();
    +  66  8
             if (line != null) {
    +  67  8
                 validateArgs();
     68  
             }
    -  69  21
         }
    +  69  7
         }
     70  
     
     71   @@ -167,8 +167,8 @@
          */
     78  
         private CommandLine parseArgs(String[] args) throws ParseException {
    -  79  27
             final CommandLineParser parser = new PosixParser();
    -  80  27
             return parser.parse(options, args);
    +  79  9
             final CommandLineParser parser = new PosixParser();
    +  80  9
             return parser.parse(options, args);
     81  
         }
     82   @@ -191,14 +191,14 @@
          */
     91  
         private void validateArgs() throws FileNotFoundException, ParseException {
    -  92  24
             if (isRunScan()) {
    -  93  6
                 validatePathExists(getScanFiles(), "scan");
    -  94  3
                 validatePathExists(getReportDirectory(), "out");
    -  95  3
                 if (!line.hasOption(ArgumentName.APP_NAME)) {
    +  92  8
             if (isRunScan()) {
    +  93  2
                 validatePathExists(getScanFiles(), "scan");
    +  94  1
                 validatePathExists(getReportDirectory(), "out");
    +  95  1
                 if (!line.hasOption(ArgumentName.APP_NAME)) {
     96  0
                     throw new ParseException("Missing 'app' argument; the scan cannot be run without the an application name.");
     97  
                 }
    -  98  3
                 if (line.hasOption(ArgumentName.OUTPUT_FORMAT)) {
    +  98  1
                 if (line.hasOption(ArgumentName.OUTPUT_FORMAT)) {
     99  0
                     final String format = line.getOptionValue(ArgumentName.OUTPUT_FORMAT);
     100  
                     try {
    @@ -211,7 +211,7 @@
                 }
     107  
             }
    -  108  21
         }
    +  108  7
         }
     109  
     
     110   @@ -236,11 +236,11 @@
          */
     120  
         private void validatePathExists(String[] paths, String optType) throws FileNotFoundException {
    -  121  9
             for (String path : paths) {
    -  122  6
                 validatePathExists(path, optType);
    +  121  3
             for (String path : paths) {
    +  122  2
                 validatePathExists(path, optType);
     123  
             }
    -  124  3
         }
    +  124  1
         }
     125  
     
     126   @@ -265,14 +265,14 @@
          */
     136  
         private void validatePathExists(String path, String optType) throws FileNotFoundException {
    -  137  9
             final File f = new File(path);
    -  138  9
             if (!f.exists()) {
    -  139  3
                 isValid = false;
    -  140  3
                 final String msg = String.format("Invalid '%s' argument: '%s'", optType, path);
    -  141  3
                 throw new FileNotFoundException(msg);
    +  137  3
             final File f = new File(path);
    +  138  3
             if (!f.exists()) {
    +  139  1
                 isValid = false;
    +  140  1
                 final String msg = String.format("Invalid '%s' argument: '%s'", optType, path);
    +  141  1
                 throw new FileNotFoundException(msg);
     142  
             }
    -  143  6
         }
    +  143  2
         }
     144  
     
     145   @@ -291,104 +291,104 @@
         @SuppressWarnings("static-access")
     152  
         private Options createCommandLineOptions() {
    -  153  27
             final Option help = new Option(ArgumentName.HELP_SHORT, ArgumentName.HELP, false,
    +  153  9
             final Option help = new Option(ArgumentName.HELP_SHORT, ArgumentName.HELP, false,
     154  
                     "Print this message.");
     155  
     
    -  156  27
             final Option version = new Option(ArgumentName.VERSION_SHORT, ArgumentName.VERSION,
    +  156  9
             final Option version = new Option(ArgumentName.VERSION_SHORT, ArgumentName.VERSION,
     157  
                     false, "Print the version information.");
     158  
     
    -  159  27
             final Option noUpdate = new Option(ArgumentName.DISABLE_AUTO_UPDATE_SHORT, ArgumentName.DISABLE_AUTO_UPDATE,
    +  159  9
             final Option noUpdate = new Option(ArgumentName.DISABLE_AUTO_UPDATE_SHORT, ArgumentName.DISABLE_AUTO_UPDATE,
     160  
                     false, "Disables the automatic updating of the CPE data.");
     161  
     
    -  162  27
             final Option appName = OptionBuilder.withArgName("name").hasArg().withLongOpt(ArgumentName.APP_NAME)
    +  162  9
             final Option appName = OptionBuilder.withArgName("name").hasArg().withLongOpt(ArgumentName.APP_NAME)
     163  
                     .withDescription("The name of the application being scanned. This is a required argument.")
     164  
                     .create(ArgumentName.APP_NAME_SHORT);
     165  
     
    -  166  27
             final Option connectionTimeout = OptionBuilder.withArgName("timeout").hasArg().withLongOpt(ArgumentName.CONNECTION_TIMEOUT)
    +  166  9
             final Option connectionTimeout = OptionBuilder.withArgName("timeout").hasArg().withLongOpt(ArgumentName.CONNECTION_TIMEOUT)
     167  
                     .withDescription("The connection timeout (in milliseconds) to use when downloading resources.")
     168  
                     .create(ArgumentName.CONNECTION_TIMEOUT_SHORT);
     169  
     
    -  170  27
             final Option proxyUrl = OptionBuilder.withArgName("url").hasArg().withLongOpt(ArgumentName.PROXY_URL)
    +  170  9
             final Option proxyUrl = OptionBuilder.withArgName("url").hasArg().withLongOpt(ArgumentName.PROXY_URL)
     171  
                     .withDescription("The proxy url to use when downloading resources.")
     172  
                     .create(ArgumentName.PROXY_URL_SHORT);
     173  
     
    -  174  27
             final Option proxyPort = OptionBuilder.withArgName("port").hasArg().withLongOpt(ArgumentName.PROXY_PORT)
    +  174  9
             final Option proxyPort = OptionBuilder.withArgName("port").hasArg().withLongOpt(ArgumentName.PROXY_PORT)
     175  
                     .withDescription("The proxy port to use when downloading resources.")
     176  
                     .create(ArgumentName.PROXY_PORT_SHORT);
     177  
     
    -  178  27
             final Option path = OptionBuilder.withArgName("path").hasArg().withLongOpt(ArgumentName.SCAN)
    +  178  9
             final Option path = OptionBuilder.withArgName("path").hasArg().withLongOpt(ArgumentName.SCAN)
     179  
                     .withDescription("The path to scan - this option can be specified multiple times.")
     180  
                     .create(ArgumentName.SCAN_SHORT);
     181  
     
    -  182  27
             final Option props = OptionBuilder.withArgName("file").hasArg().withLongOpt(ArgumentName.PROP)
    +  182  9
             final Option props = OptionBuilder.withArgName("file").hasArg().withLongOpt(ArgumentName.PROP)
     183  
                     .withDescription("A property file to load.")
     184  
                     .create(ArgumentName.PROP_SHORT);
     185  
     
    -  186  27
             final Option data = OptionBuilder.withArgName("path").hasArg().withLongOpt(ArgumentName.DATA_DIRECTORY)
    +  186  9
             final Option data = OptionBuilder.withArgName("path").hasArg().withLongOpt(ArgumentName.DATA_DIRECTORY)
     187  
                     .withDescription("The location of the data directory used to store persistent data. This option should generally not be set.")
     188  
                     .create(ArgumentName.DATA_DIRECTORY_SHORT);
     189  
     
    -  190  27
             final Option out = OptionBuilder.withArgName("folder").hasArg().withLongOpt(ArgumentName.OUT)
    +  190  9
             final Option out = OptionBuilder.withArgName("folder").hasArg().withLongOpt(ArgumentName.OUT)
     191  
                     .withDescription("The folder to write reports to. This defaults to the current directory.")
     192  
                     .create(ArgumentName.OUT_SHORT);
     193  
     
    -  194  27
             final Option outputFormat = OptionBuilder.withArgName("format").hasArg().withLongOpt(ArgumentName.OUTPUT_FORMAT)
    +  194  9
             final Option outputFormat = OptionBuilder.withArgName("format").hasArg().withLongOpt(ArgumentName.OUTPUT_FORMAT)
     195  
                     .withDescription("The output format to write to (XML, HTML, VULN, ALL). The default is HTML.")
     196  
                     .create(ArgumentName.OUTPUT_FORMAT_SHORT);
     197  
     
    -  198  27
             final OptionGroup og = new OptionGroup();
    -  199  27
             og.addOption(path);
    +  198  9
             final OptionGroup og = new OptionGroup();
    +  199  9
             og.addOption(path);
     200  
     
    -  201  27
             final Options opts = new Options();
    -  202  27
             opts.addOptionGroup(og);
    -  203  27
             opts.addOption(out);
    -  204  27
             opts.addOption(outputFormat);
    -  205  27
             opts.addOption(appName);
    -  206  27
             opts.addOption(version);
    -  207  27
             opts.addOption(help);
    -  208  27
             opts.addOption(noUpdate);
    -  209  27
             opts.addOption(props);
    -  210  27
             opts.addOption(data);
    -  211  27
             opts.addOption(proxyPort);
    -  212  27
             opts.addOption(proxyUrl);
    -  213  27
             opts.addOption(connectionTimeout);
    +  201  9
             final Options opts = new Options();
    +  202  9
             opts.addOptionGroup(og);
    +  203  9
             opts.addOption(out);
    +  204  9
             opts.addOption(outputFormat);
    +  205  9
             opts.addOption(appName);
    +  206  9
             opts.addOption(version);
    +  207  9
             opts.addOption(help);
    +  208  9
             opts.addOption(noUpdate);
    +  209  9
             opts.addOption(props);
    +  210  9
             opts.addOption(data);
    +  211  9
             opts.addOption(proxyPort);
    +  212  9
             opts.addOption(proxyUrl);
    +  213  9
             opts.addOption(connectionTimeout);
     214  
     
    -  215  27
             return opts;
    +  215  9
             return opts;
     216  
         }
     217   @@ -405,7 +405,7 @@
          */
     223  
         public boolean isGetVersion() {
    -  224  21
             return (line != null) && line.hasOption(ArgumentName.VERSION);
    +  224  7
             return (line != null) && line.hasOption(ArgumentName.VERSION);
     225  
         }
     226   @@ -422,7 +422,7 @@
          */
     232  
         public boolean isGetHelp() {
    -  233  21
             return (line != null) && line.hasOption(ArgumentName.HELP);
    +  233  7
             return (line != null) && line.hasOption(ArgumentName.HELP);
     234  
         }
     235   @@ -439,7 +439,7 @@
          */
     241  
         public boolean isRunScan() {
    -  242  45
             return (line != null) && isValid && line.hasOption(ArgumentName.SCAN);
    +  242  15
             return (line != null) && isValid && line.hasOption(ArgumentName.SCAN);
     243  
         }
     244   @@ -452,11 +452,11 @@
          */
     248  
         public void printHelp() {
    -  249  6
             final HelpFormatter formatter = new HelpFormatter();
    -  250  6
             final String nl = System.getProperty("line.separator");
    +  249  2
             final HelpFormatter formatter = new HelpFormatter();
    +  250  2
             final String nl = System.getProperty("line.separator");
     251  
     
    -  252  6
             formatter.printHelp(Settings.getString("application.name", "DependencyCheck"),
    +  252  2
             formatter.printHelp(Settings.getString("application.name", "DependencyCheck"),
     253  
                     nl + Settings.getString("application.name", "DependencyCheck")
     254   @@ -471,7 +471,7 @@
                     "",
     259  
                     true);
    -  260  6
         }
    +  260  2
         }
     261  
     
     262   @@ -488,7 +488,7 @@
          */
     268  
         public String[] getScanFiles() {
    -  269  9
             return line.getOptionValues(ArgumentName.SCAN);
    +  269  3
             return line.getOptionValues(ArgumentName.SCAN);
     270  
         }
     271   @@ -507,7 +507,7 @@
          */
     278  
         public String getReportDirectory() {
    -  279  3
             return line.getOptionValue(ArgumentName.OUT, ".");
    +  279  1
             return line.getOptionValue(ArgumentName.OUT, ".");
     280  
         }
     281   @@ -628,13 +628,13 @@
          */
     342  
         public void printVersionInfo() {
    -  343  3
             final String version = String.format("%s version %s",
    +  343  1
             final String version = String.format("%s version %s",
     344  
                     Settings.getString("application.name", "DependencyCheck"),
     345  
                     Settings.getString("application.version", "Unknown"));
    -  346  3
             System.out.println(version);
    -  347  3
         }
    +  346  1
             System.out.println(version);
    +  347  1
         }
     348  
     
     349   @@ -664,7 +664,7 @@
          * line arguments.
     362  
          */
    -  363  27
         public static class ArgumentName {
    +  363  9
         public static class ArgumentName {
     364  
     
     365   @@ -887,6 +887,6 @@
     }
    - + diff --git a/dependency-check-cli/cpd.html b/dependency-check-cli/cpd.html index 9df81bab0..4d52b2223 100644 --- a/dependency-check-cli/cpd.html +++ b/dependency-check-cli/cpd.html @@ -1,13 +1,13 @@ - + dependency-check-cli - CPD Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/dependency-updates-report.html b/dependency-check-cli/dependency-updates-report.html index c9e26beed..024b685c4 100644 --- a/dependency-check-cli/dependency-updates-report.html +++ b/dependency-check-cli/dependency-updates-report.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Dependency Updates Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -286,7 +286,7 @@ org.owasp dependency-check-core -1.0.1 +1.0.2 compile jar @@ -371,7 +371,7 @@ dependency-check-core Current Version -1.0.1 +1.0.2 Scope compile diff --git a/dependency-check-cli/findbugs.html b/dependency-check-cli/findbugs.html index 75c383ec0..56e44d31e 100644 --- a/dependency-check-cli/findbugs.html +++ b/dependency-check-cli/findbugs.html @@ -1,13 +1,13 @@ - + dependency-check-cli - FindBugs Bug Detector Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/index.html b/dependency-check-cli/index.html index 3855c4f79..7a582fc4e 100644 --- a/dependency-check-cli/index.html +++ b/dependency-check-cli/index.html @@ -1,13 +1,13 @@ - + dependency-check-cli - About @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -154,7 +154,7 @@
    -

    About dependency-check-cli

    +

    About Dependency-Check Command Line

    Dependency-Check-Maven is a Maven Plugin that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries.

    diff --git a/dependency-check-cli/installation.html b/dependency-check-cli/installation.html index 6c33036bd..576fbd3f5 100644 --- a/dependency-check-cli/installation.html +++ b/dependency-check-cli/installation.html @@ -1,13 +1,13 @@ - + dependency-check-cli - @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-06
  • |
  • -
  • Version: 1.0.1-SNAPSHOT
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/license.html b/dependency-check-cli/license.html index c1316bf3d..dce38a7f0 100644 --- a/dependency-check-cli/license.html +++ b/dependency-check-cli/license.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Project License @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/plugin-updates-report.html b/dependency-check-cli/plugin-updates-report.html index f7b55e4f1..29daf5300 100644 --- a/dependency-check-cli/plugin-updates-report.html +++ b/dependency-check-cli/plugin-updates-report.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Plugin Updates Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -223,7 +223,7 @@ # of plugins using the latest version available -6 +4 # of plugins where the next version available is smaller than an incremental version update @@ -235,7 +235,7 @@ # of plugins where the next version available is a minor version update -8 +9 # of plugins where the next version available is a major version update @@ -371,16 +371,6 @@ - -org.apache.maven.plugins -maven-gpg-plugin -1.4 - - - - - - org.apache.maven.plugins maven-install-plugin @@ -390,7 +380,7 @@ 2.4 - + org.apache.maven.plugins maven-jar-plugin @@ -400,7 +390,7 @@ - + org.apache.maven.plugins maven-javadoc-plugin @@ -410,7 +400,7 @@ - + org.apache.maven.plugins maven-resources-plugin @@ -420,7 +410,7 @@ 2.6 - + org.apache.maven.plugins maven-site-plugin @@ -430,7 +420,7 @@ - + org.apache.maven.plugins maven-surefire-plugin @@ -440,7 +430,7 @@ 2.15 - + org.codehaus.mojo appassembler-maven-plugin @@ -450,17 +440,17 @@ - - + + org.codehaus.mojo cobertura-maven-plugin -2.5.2 - +2.5.2 +2.6 - + Status Group Id Artifact Id @@ -476,19 +466,19 @@

    Plugin com.github.github:site-maven-plugin

    - + - + - + - + - +
    Status  There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Id com.github.github
    Artifact Id site-maven-plugin
    Current Version 0.7
    Newer versions 0.8 Next Minor
    @@ -615,21 +605,6 @@ Newer versions 1.0.1 Next Incremental
    1.1 Next Minor
    1.1.1
    1.2
    1.3
    1.3.1 Latest Minor
    -

    Plugin org.apache.maven.plugins:maven-gpg-plugin

    - - - - - - - - - - - - -
    Status No newer versions available.
    Group Idorg.apache.maven.plugins
    Artifact Idmaven-gpg-plugin
    Current Version1.4
    -

    Plugin org.apache.maven.plugins:maven-install-plugin

    @@ -805,7 +780,7 @@ -
    2.14
    Newer versions2.14.1 Next Incremental
    2.15 Next Minor
    +2.14.1 Next Incremental
    2.15 Next Minor
    2.16 Latest Minor

    Plugin org.codehaus.mojo:appassembler-maven-plugin

    @@ -826,7 +801,7 @@
    - + @@ -835,7 +810,10 @@ -
    Status No newer versions available.
     There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Id org.codehaus.mojo
    cobertura-maven-plugin
    Current Version2.5.2
    +2.5.2 + +Newer versions +2.6 Next Minor diff --git a/dependency-check-cli/pmd.html b/dependency-check-cli/pmd.html index 00ad282e7..c78714d26 100644 --- a/dependency-check-cli/pmd.html +++ b/dependency-check-cli/pmd.html @@ -1,13 +1,13 @@ - + dependency-check-cli - PMD Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/project-info.html b/dependency-check-cli/project-info.html index 777284331..23eba2630 100644 --- a/dependency-check-cli/project-info.html +++ b/dependency-check-cli/project-info.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Project Information @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/project-reports.html b/dependency-check-cli/project-reports.html index ffd35801a..e90f8efd8 100644 --- a/dependency-check-cli/project-reports.html +++ b/dependency-check-cli/project-reports.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Generated Reports @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/project-summary.html b/dependency-check-cli/project-summary.html index 7593aefd6..ab53e02dc 100644 --- a/dependency-check-cli/project-summary.html +++ b/dependency-check-cli/project-summary.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Project Summary @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -163,7 +163,7 @@ Value Name -dependency-check-cli +Dependency-Check Command Line Description Dependency-Check-Maven is a Maven Plugin that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries. @@ -196,7 +196,7 @@ dependency-check-cli Version -1.0.1 +1.0.2 Type jar diff --git a/dependency-check-cli/surefire-report.html b/dependency-check-cli/surefire-report.html index 6592e370f..722cead76 100644 --- a/dependency-check-cli/surefire-report.html +++ b/dependency-check-cli/surefire-report.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Surefire Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -252,7 +252,7 @@ function toggleDisplay(elementId) { 0 0 100% -0.044
    +0.053

    Note: failures are anticipated and checked for with assertions while errors are unanticipated.


    Package List

    @@ -273,7 +273,7 @@ function toggleDisplay(elementId) { 0 0 100% -0.044
    +0.053

    Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.

    org.owasp.dependencycheck.cli

    @@ -295,7 +295,7 @@ function toggleDisplay(elementId) { 0 0 100% -0.044

    +0.053

    Test Cases

    [Summary] [Package List] [Test Cases]

    @@ -305,19 +305,19 @@ function toggleDisplay(elementId) { testParse_printHelp -0.04 +0.046 testParse_printVersionInfo -0 +0.001 testParse_help -0 +0.001 testParse_scan -0 +0.001 testParse @@ -325,7 +325,7 @@ function toggleDisplay(elementId) { testParse_unknown -0 +0.001 testParse_version @@ -333,11 +333,11 @@ function toggleDisplay(elementId) { testParse_scan_unknownFile -0 +0.001 testParse_scan_withFileExists -0.004

    +0.002
    diff --git a/dependency-check-cli/taglist.html b/dependency-check-cli/taglist.html index 2548449cc..0d1bfcc66 100644 --- a/dependency-check-cli/taglist.html +++ b/dependency-check-cli/taglist.html @@ -1,13 +1,13 @@ - + dependency-check-cli - Tag List report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-cli/xref-test/index.html b/dependency-check-cli/xref-test/index.html index de04782a1..7e561ffa4 100644 --- a/dependency-check-cli/xref-test/index.html +++ b/dependency-check-cli/xref-test/index.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference + Dependency-Check Command Line 1.0.2 Reference diff --git a/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-frame.html b/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-frame.html index 8d2f870ca..9990d9bbd 100644 --- a/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-frame.html +++ b/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference Package org.owasp.dependencycheck.cli + Dependency-Check Command Line 1.0.2 Reference Package org.owasp.dependencycheck.cli diff --git a/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-summary.html b/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-summary.html index 0e3bb84bf..0e2b06b8c 100644 --- a/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-summary.html +++ b/dependency-check-cli/xref-test/org/owasp/dependencycheck/cli/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference Package org.owasp.dependencycheck.cli + Dependency-Check Command Line 1.0.2 Reference Package org.owasp.dependencycheck.cli diff --git a/dependency-check-cli/xref-test/overview-frame.html b/dependency-check-cli/xref-test/overview-frame.html index 1a880de43..10274e72b 100644 --- a/dependency-check-cli/xref-test/overview-frame.html +++ b/dependency-check-cli/xref-test/overview-frame.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference + Dependency-Check Command Line 1.0.2 Reference diff --git a/dependency-check-cli/xref-test/overview-summary.html b/dependency-check-cli/xref-test/overview-summary.html index d0329dc44..e4e3a61e4 100644 --- a/dependency-check-cli/xref-test/overview-summary.html +++ b/dependency-check-cli/xref-test/overview-summary.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference + Dependency-Check Command Line 1.0.2 Reference @@ -24,7 +24,7 @@ -

    dependency-check-cli 1.0.1 Reference

    +

    Dependency-Check Command Line 1.0.2 Reference

    diff --git a/dependency-check-cli/xref/index.html b/dependency-check-cli/xref/index.html index de04782a1..7e561ffa4 100644 --- a/dependency-check-cli/xref/index.html +++ b/dependency-check-cli/xref/index.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference + Dependency-Check Command Line 1.0.2 Reference diff --git a/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-frame.html b/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-frame.html index 1ba72d740..f3eb768f5 100644 --- a/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-frame.html +++ b/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference Package org.owasp.dependencycheck.cli + Dependency-Check Command Line 1.0.2 Reference Package org.owasp.dependencycheck.cli diff --git a/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-summary.html b/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-summary.html index fdc99f990..bc7705602 100644 --- a/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-summary.html +++ b/dependency-check-cli/xref/org/owasp/dependencycheck/cli/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference Package org.owasp.dependencycheck.cli + Dependency-Check Command Line 1.0.2 Reference Package org.owasp.dependencycheck.cli diff --git a/dependency-check-cli/xref/org/owasp/dependencycheck/package-frame.html b/dependency-check-cli/xref/org/owasp/dependencycheck/package-frame.html index bef82994e..0bbccd50b 100644 --- a/dependency-check-cli/xref/org/owasp/dependencycheck/package-frame.html +++ b/dependency-check-cli/xref/org/owasp/dependencycheck/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference Package org.owasp.dependencycheck + Dependency-Check Command Line 1.0.2 Reference Package org.owasp.dependencycheck diff --git a/dependency-check-cli/xref/org/owasp/dependencycheck/package-summary.html b/dependency-check-cli/xref/org/owasp/dependencycheck/package-summary.html index de4fccbe8..022ed282a 100644 --- a/dependency-check-cli/xref/org/owasp/dependencycheck/package-summary.html +++ b/dependency-check-cli/xref/org/owasp/dependencycheck/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference Package org.owasp.dependencycheck + Dependency-Check Command Line 1.0.2 Reference Package org.owasp.dependencycheck diff --git a/dependency-check-cli/xref/overview-frame.html b/dependency-check-cli/xref/overview-frame.html index 04c4b6389..2f20522ca 100644 --- a/dependency-check-cli/xref/overview-frame.html +++ b/dependency-check-cli/xref/overview-frame.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference + Dependency-Check Command Line 1.0.2 Reference diff --git a/dependency-check-cli/xref/overview-summary.html b/dependency-check-cli/xref/overview-summary.html index f18c5fc42..517531d6b 100644 --- a/dependency-check-cli/xref/overview-summary.html +++ b/dependency-check-cli/xref/overview-summary.html @@ -3,7 +3,7 @@ - dependency-check-cli 1.0.1 Reference + Dependency-Check Command Line 1.0.2 Reference @@ -24,7 +24,7 @@ -

    dependency-check-cli 1.0.1 Reference

    +

    Dependency-Check Command Line 1.0.2 Reference

    diff --git a/dependency-check-core/apidocs/allclasses-frame.html b/dependency-check-core/apidocs/allclasses-frame.html index 32a67fc8f..5f6c7149e 100644 --- a/dependency-check-core/apidocs/allclasses-frame.html +++ b/dependency-check-core/apidocs/allclasses-frame.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-core 1.0.1 API) +All Classes (Dependency-Check Core 1.0.2 API) - + @@ -24,8 +24,6 @@ All Classes (dependency-check-core 1.0.1 API) + + + + + + + +
    AbstractAnalyzer
    -AbstractIndex -
    AbstractTokenizingFilter
    Activation @@ -48,6 +46,8 @@ All Classes (dependency-check-core 1.0.1 API)
    ArchiveAnalyzer
    +BaseIndex +
    Build
    Build.Extensions @@ -84,7 +84,11 @@ All Classes (dependency-check-core 1.0.1 API)
    Contributor.Roles
    -CPEAnalyzer +CPEAnalyzer +
    +CpeIndexReader +
    +CpeIndexWriter
    CveDB
    @@ -94,9 +98,9 @@ All Classes (dependency-check-core 1.0.1 API)
    DatabaseException
    -DatabaseUpdater +DatabaseUpdater
    -DatabaseUpdater.NvdCveUrl +DataStoreMetaInfo
    Dependency
    @@ -124,6 +128,10 @@ All Classes (dependency-check-core 1.0.1 API)
    Developer.Roles
    +DirectoryLockException +
    +DirectorySpinLock +
    DistributionManagement
    Downloader @@ -142,6 +150,8 @@ All Classes (dependency-check-core 1.0.1 API)
    Extension
    +ExtractionException +
    FalsePositiveAnalyzer
    FieldAnalyzer @@ -158,11 +168,11 @@ All Classes (dependency-check-core 1.0.1 API)
    Identifier
    -Index -
    IndexEntry
    -InvalidDataException +InvalidDataException +
    +InvalidDirectoryException
    InvalidSettingException
    @@ -214,15 +224,17 @@ All Classes (dependency-check-core 1.0.1 API)
    Notifier.Configuration
    -NvdCve12Handler +NvdCve12Handler
    -NvdCve12Handler.Element +NvdCve12Handler.Element
    -NvdCve20Handler +NvdCve20Handler
    -NvdCve20Handler.Element +NvdCve20Handler.Element
    -NvdCveAnalyzer +NvdCveAnalyzer +
    +NvdCveInfo
    ObjectFactory
    diff --git a/dependency-check-core/apidocs/allclasses-noframe.html b/dependency-check-core/apidocs/allclasses-noframe.html index 07d7f012c..592f411e4 100644 --- a/dependency-check-core/apidocs/allclasses-noframe.html +++ b/dependency-check-core/apidocs/allclasses-noframe.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-core 1.0.1 API) +All Classes (Dependency-Check Core 1.0.2 API) - + @@ -24,8 +24,6 @@ All Classes (dependency-check-core 1.0.1 API)
    AbstractAnalyzer
    -AbstractIndex -
    AbstractTokenizingFilter
    Activation @@ -48,6 +46,8 @@ All Classes (dependency-check-core 1.0.1 API)
    ArchiveAnalyzer
    +BaseIndex +
    Build
    Build.Extensions @@ -84,7 +84,11 @@ All Classes (dependency-check-core 1.0.1 API)
    Contributor.Roles
    -CPEAnalyzer +CPEAnalyzer +
    +CpeIndexReader +
    +CpeIndexWriter
    CveDB
    @@ -94,9 +98,9 @@ All Classes (dependency-check-core 1.0.1 API)
    DatabaseException
    -DatabaseUpdater +DatabaseUpdater
    -DatabaseUpdater.NvdCveUrl +DataStoreMetaInfo
    Dependency
    @@ -124,6 +128,10 @@ All Classes (dependency-check-core 1.0.1 API)
    Developer.Roles
    +DirectoryLockException +
    +DirectorySpinLock +
    DistributionManagement
    Downloader @@ -142,6 +150,8 @@ All Classes (dependency-check-core 1.0.1 API)
    Extension
    +ExtractionException +
    FalsePositiveAnalyzer
    FieldAnalyzer @@ -158,11 +168,11 @@ All Classes (dependency-check-core 1.0.1 API)
    Identifier
    -Index -
    IndexEntry
    -InvalidDataException +InvalidDataException +
    +InvalidDirectoryException
    InvalidSettingException
    @@ -214,15 +224,17 @@ All Classes (dependency-check-core 1.0.1 API)
    Notifier.Configuration
    -NvdCve12Handler +NvdCve12Handler
    -NvdCve12Handler.Element +NvdCve12Handler.Element
    -NvdCve20Handler +NvdCve20Handler
    -NvdCve20Handler.Element +NvdCve20Handler.Element
    -NvdCveAnalyzer +NvdCveAnalyzer +
    +NvdCveInfo
    ObjectFactory
    diff --git a/dependency-check-core/apidocs/constant-values.html b/dependency-check-core/apidocs/constant-values.html index 74ea05615..5727d9462 100644 --- a/dependency-check-core/apidocs/constant-values.html +++ b/dependency-check-core/apidocs/constant-values.html @@ -2,13 +2,13 @@ - + -Constant Field Values (dependency-check-core 1.0.1 API) +Constant Field Values (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Constant Field Values (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Constant Field Values (dependency-check-core 1.0.1 API)"; + parent.document.title="Constant Field Values (Dependency-Check Core 1.0.2 API)"; } } @@ -99,6 +99,30 @@ org.owasp.*

    + + + + + + + + + + + + + + + + +
    org.owasp.dependencycheck.concurrency.DirectorySpinLock
    +public static final StringLOCK_NAME"data.lock"
    +public static final intMAX_SPIN100
    + +

    + +

    + @@ -143,7 +167,7 @@ org.owasp.* - + + + + + + + + + - - - - - -
    org.owasp.dependencycheck.data.cpe.Fields public static final String DB_SCHEMA_VERSION"2.5""2.6"
    @@ -251,54 +275,36 @@ org.owasp.* - + - - - - - - -
    org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdaterorg.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    + public static final StringMODIFIED"modified"
    - -

    - -

    - - - - - - - - + - - + - - + - - + - - + @@ -311,96 +317,96 @@ org.owasp.*
    org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element
    -public static final StringENTRYENTRY "entry"
    + public static final StringNVDNVD "nvd"
    + public static final StringPRODPROD "prod"
    + public static final StringVERSVERS "vers"
    + public static final StringVULN_SOFTWAREVULN_SOFTWARE "vuln_soft"
    - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + @@ -411,6 +417,42 @@ org.owasp.*

    +

    org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Elementorg.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    + public static final StringCVSS_ACCESS_COMPLEXITYCVSS_ACCESS_COMPLEXITY "cvss:access-complexity"
    + public static final StringCVSS_ACCESS_VECTORCVSS_ACCESS_VECTOR "cvss:access-vector"
    + public static final StringCVSS_AUTHENTICATIONCVSS_AUTHENTICATION "cvss:authentication"
    + public static final StringCVSS_AVAILABILITY_IMPACTCVSS_AVAILABILITY_IMPACT "cvss:availability-impact"
    + public static final StringCVSS_CONFIDENTIALITY_IMPACTCVSS_CONFIDENTIALITY_IMPACT "cvss:confidentiality-impact"
    + public static final StringCVSS_INTEGRITY_IMPACTCVSS_INTEGRITY_IMPACT "cvss:integrity-impact"
    + public static final StringCVSS_SCORECVSS_SCORE "cvss:score"
    + public static final StringENTRYENTRY "entry"
    + public static final StringNVDNVD "nvd"
    + public static final StringVULN_CWEVULN_CWE "vuln:cwe"
    + public static final StringVULN_PRODUCTVULN_PRODUCT "vuln:product"
    + public static final StringVULN_REFERENCEVULN_REFERENCE "vuln:reference"
    + public static final StringVULN_REFERENCESVULN_REFERENCES "vuln:references"
    + public static final StringVULN_SOURCEVULN_SOURCE "vuln:source"
    + public static final StringVULN_SUMMARYVULN_SUMMARY "vuln:summary"
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    org.owasp.dependencycheck.data.update.DataStoreMetaInfo
    +public static final StringBATCH"batch"
    +public static final StringLAST_UPDATED"lastupdated.modified"
    +public static final StringLAST_UPDATED_BASE"lastupdated."
    +public static final StringMODIFIED"modified"
    + +

    + +

    + @@ -422,6 +464,12 @@ org.owasp.* + + + + + @@ -434,18 +482,6 @@ org.owasp.* - - - - - - - - - - diff --git a/dependency-check-core/apidocs/deprecated-list.html b/dependency-check-core/apidocs/deprecated-list.html index b4b12bdd1..8188da4df 100644 --- a/dependency-check-core/apidocs/deprecated-list.html +++ b/dependency-check-core/apidocs/deprecated-list.html @@ -2,13 +2,13 @@ - + -Deprecated List (dependency-check-core 1.0.1 API) +Deprecated List (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Deprecated List (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Deprecated List (dependency-check-core 1.0.1 API)"; + parent.document.title="Deprecated List (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/help-doc.html b/dependency-check-core/apidocs/help-doc.html index ce2b86277..4f3113509 100644 --- a/dependency-check-core/apidocs/help-doc.html +++ b/dependency-check-core/apidocs/help-doc.html @@ -2,13 +2,13 @@ - + -API Help (dependency-check-core 1.0.1 API) +API Help (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ API Help (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="API Help (dependency-check-core 1.0.1 API)"; + parent.document.title="API Help (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/index-all.html b/dependency-check-core/apidocs/index-all.html index 554c9a05c..ab97644e9 100644 --- a/dependency-check-core/apidocs/index-all.html +++ b/dependency-check-core/apidocs/index-all.html @@ -2,13 +2,13 @@ - + -Index (dependency-check-core 1.0.1 API) +Index (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Index (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Index (dependency-check-core 1.0.1 API)"; + parent.document.title="Index (Dependency-Check Core 1.0.2 API)"; } } @@ -86,9 +86,6 @@ function windowTitle()
    AbstractAnalyzer - Class in org.owasp.dependencycheck.analyzer
     
    AbstractAnalyzer() - Constructor for class org.owasp.dependencycheck.analyzer.AbstractAnalyzer
      -
    AbstractIndex - Class in org.owasp.dependencycheck.data.lucene
    The base Index for other index objects.
    AbstractIndex() - -Constructor for class org.owasp.dependencycheck.data.lucene.AbstractIndex -
     
    AbstractTokenizingFilter - Class in org.owasp.dependencycheck.data.lucene
    An abstract tokenizing filter that can be used as the base for a tokenizing filter.
    AbstractTokenizingFilter(TokenStream) - Constructor for class org.owasp.dependencycheck.data.lucene.AbstractTokenizingFilter @@ -183,6 +180,10 @@ Method in interface org.owasp.dependencycheck.analyzer.analyze(Dependency, Engine) - Method in class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer
    Analyzes a given dependency. +
    analyze(Dependency, Engine) - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
    Analyzes a dependency and attempts to determine if there are any CPE + identifiers for this dependency.
    analyze(Dependency, Engine) - Method in class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer
    Analyzes a set of dependencies. @@ -205,12 +206,8 @@ Method in class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer
    Loads a specified JAR file and collects information from the manifest and checksums to identify the correct CPE information. -
    analyze(Dependency, Engine) - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer -
    Analyzes a dependency and attempts to determine if there are any CPE - identifiers for this dependency. -
    analyze(Dependency, Engine) - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    analyze(Dependency, Engine) - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Analyzes a dependency and attempts to determine if there are any CPE identifiers for this dependency.
    analyzeDependencies() - @@ -311,6 +308,15 @@ Static variable in class org.owasp.dependencycheck.utils.

    B

    +
    BaseIndex - Class in org.owasp.dependencycheck.data.cpe
    The Base Index class used to access the CPE Index.
    BaseIndex() - +Constructor for class org.owasp.dependencycheck.data.cpe.BaseIndex +
      +
    BATCH - +Static variable in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Batch key word, used as key to store information about batch mode. +
    BATCH_UPDATE_URL - +Static variable in class org.owasp.dependencycheck.utils.Settings.KEYS +
    The location of the batch update URL.
    Build - Class in org.owasp.dependencycheck.jaxb.pom.generated
    3.0.0+
    Build() - Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.Build
      @@ -350,8 +356,8 @@ Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources - Class in org.owasp.dependencycheck.jaxb.pom.generated
    Java class for anonymous complex type.
    BuildBase.TestResources() - Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources
      -
    buildSearch(String, String, Set<String>, Set<String>) - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    buildSearch(String, String, Set<String>, Set<String>) - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer
    Builds a Lucene search string by properly escaping data and constructing a valid search query.
    @@ -359,8 +365,8 @@ Method in class org.owasp.dependencycheck.data.cpe.

    C

    -
    CachedWebDataSource - Interface in org.owasp.dependencycheck.data
    Defines an Index who's data is retrieved from the Internet.
    characters(char[], int, int) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    CachedWebDataSource - Interface in org.owasp.dependencycheck.data
    Defines an Index who's data is retrieved from the Internet.
    characters(char[], int, int) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
     
    Checksum - Class in org.owasp.dependencycheck.utils
    Includes methods to generate the MD5 and SHA1 checksum.
    Checksum() - Constructor for class org.owasp.dependencycheck.utils.Checksum @@ -405,32 +411,41 @@ Method in interface org.owasp.dependencycheck.analyzer.close() - Method in class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer
    The close method does nothing for this Analyzer. +
    close() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
    Closes the data source.
    close() - Method in class org.owasp.dependencycheck.analyzer.JarAnalyzer
    The close method does nothing for this Analyzer.
    close() - Method in class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer
    The close method does nothing for this Analyzer. -
    close() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    close() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Closes the data source. -
    close() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex +
    close() - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Releases any locks and closes the underlying channel. +
    close() - +Method in class org.owasp.dependencycheck.data.cpe.BaseIndex +
    Closes the CPE Index. +
    close() - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexReader +
    Closes the CPE Index. +
    close() - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexWriter
    Closes the CPE Index.
    close() - Method in class org.owasp.dependencycheck.data.nvdcve.CveDB
    Closes the DB4O database. -
    close() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer -
    Closes the data source.
    close() - Method in class org.owasp.dependencycheck.utils.NonClosingStream
    Prevents closing of the stream.
    comments - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.License
      -
    commit() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex +
    commit() - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexWriter
    Commits any pending changes.
    commit() - Method in class org.owasp.dependencycheck.data.nvdcve.CveDB @@ -510,9 +525,6 @@ Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.contributors - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Model
      -
    convertEntryToDoc(IndexEntry) - -Method in class org.owasp.dependencycheck.data.cpe.Index -
    Converts a CPE entry into a Lucene Document.
    CORE_FILES - Static variable in class org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer
    Regex to identify core java library files. @@ -524,15 +536,15 @@ Static variable in class org.owasp.dependencycheck.analyzer.Settings.KEYS
    The properties key for the path where the CPE Lucene Index will be stored. -
    CPE_META_URL - -Static variable in class org.owasp.dependencycheck.utils.Settings.KEYS -
    The properties key for the URL to the CPE. -
    CPE_URL - -Static variable in class org.owasp.dependencycheck.utils.Settings.KEYS -
    The properties key for the URL to the CPE. -
    CPEAnalyzer - Class in org.owasp.dependencycheck.data.cpe
    CPEAnalyzer is a utility class that takes a project dependency and attempts - to discern if there is an associated CPE.
    CPEAnalyzer() - -Constructor for class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    CPEAnalyzer - Class in org.owasp.dependencycheck.analyzer
    CPEAnalyzer is a utility class that takes a project dependency and attempts + to discern if there is an associated CPE.
    CPEAnalyzer() - +Constructor for class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
      +
    CpeIndexReader - Class in org.owasp.dependencycheck.data.cpe
     
    CpeIndexReader() - +Constructor for class org.owasp.dependencycheck.data.cpe.CpeIndexReader +
      +
    CpeIndexWriter - Class in org.owasp.dependencycheck.data.cpe
     
    CpeIndexWriter() - +Constructor for class org.owasp.dependencycheck.data.cpe.CpeIndexWriter
     
    createActivation() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory @@ -639,12 +651,6 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.createExtension() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
    Create an instance of Extension -
    createIndexingAnalyzer() - -Method in class org.owasp.dependencycheck.data.cpe.Index -
    Creates an Analyzer for the CPE Index. -
    createIndexingAnalyzer() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Creates the Lucene Analyzer used when indexing.
    createIssueManagement() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
    Create an instance of IssueManagement @@ -762,12 +768,6 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.createProject(Model) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
    Create an instance of JAXBElement<Model>} -
    createQueryParser() - -Method in class org.owasp.dependencycheck.data.cpe.Index -
    Creates the Lucene QueryParser used when querying the index. -
    createQueryParser() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Creates the Lucene QueryParser used when querying the index.
    createRelocation() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
    Create an instance of Relocation @@ -813,12 +813,6 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.createScm() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
    Create an instance of Scm -
    createSearchingAnalyzer() - -Method in class org.owasp.dependencycheck.data.cpe.Index -
    Creates an Analyzer for searching the CPE Index. -
    createSearchingAnalyzer() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Creates the Lucene Analyzer used when querying the index.
    createSite() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
    Create an instance of Site @@ -857,26 +851,26 @@ Static variable in class org.owasp.dependencycheck.utils.CveDB - Class in org.owasp.dependencycheck.data.nvdcve
    The database holding information about the NVD CVE data.
    CveDB() - Constructor for class org.owasp.dependencycheck.data.nvdcve.CveDB
      -
    CVSS_ACCESS_COMPLEXITY - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    CVSS_ACCESS_COMPLEXITY - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    CVSS_ACCESS_VECTOR - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    CVSS_ACCESS_VECTOR - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    CVSS_AUTHENTICATION - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    CVSS_AUTHENTICATION - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    CVSS_AVAILABILITY_IMPACT - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    CVSS_AVAILABILITY_IMPACT - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    CVSS_CONFIDENTIALITY_IMPACT - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    CVSS_CONFIDENTIALITY_IMPACT - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    CVSS_INTEGRITY_IMPACT - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    CVSS_INTEGRITY_IMPACT - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    CVSS_SCORE - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    CVSS_SCORE - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0
    CweDB - Class in org.owasp.dependencycheck.data.cwe
     
    CweHandler - Class in org.owasp.dependencycheck.data.cwe
    A SAX Handler that will parse the CWE XML.
    CweHandler() - Constructor for class org.owasp.dependencycheck.data.cwe.CweHandler @@ -895,13 +889,12 @@ Constructor for exception org.owasp.dependencycheck.data.nvdcve.DatabaseException(String, Exception) - Constructor for exception org.owasp.dependencycheck.data.nvdcve.DatabaseException
    Creates an DatabaseException. -
    DatabaseUpdater - Class in org.owasp.dependencycheck.data.nvdcve.xml
     
    DatabaseUpdater() - -Constructor for class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater -
      -
    DatabaseUpdater.NvdCveUrl - Class in org.owasp.dependencycheck.data.nvdcve.xml
    A pojo that contains the Url and timestamp of the current NvdCve XML - files.
    DatabaseUpdater.NvdCveUrl() - -Constructor for class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    DatabaseUpdater - Class in org.owasp.dependencycheck.data.update
    Class responsible for updating the CPE and NVDCVE data stores.
    DatabaseUpdater() - +Constructor for class org.owasp.dependencycheck.data.update.DatabaseUpdater
      +
    DataStoreMetaInfo - Class in org.owasp.dependencycheck.data.update
     
    DataStoreMetaInfo() - +Constructor for class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Constructs a new data properties object.
    DB_CONNECTION_STRING - Static variable in class org.owasp.dependencycheck.utils.Settings.KEYS
    The database connection string. @@ -923,6 +916,9 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.delete(File) - Static method in class org.owasp.dependencycheck.utils.FileUtils
    Deletes a file. +
    delete(File, boolean) - +Static method in class org.owasp.dependencycheck.utils.FileUtils +
    Deletes a file.
    DELETE_REFERENCE - Static variable in class org.owasp.dependencycheck.data.nvdcve.CveDB
    SQL Statement to delete references by vulnerability ID. @@ -932,6 +928,9 @@ Static variable in class org.owasp.dependencycheck.data.nvdcve.DELETE_VULNERABILITY - Static variable in class org.owasp.dependencycheck.data.nvdcve.CveDB
    SQL Statement to delete a vulnerability by CVE. +
    deleteExistingData() - +Method in class org.owasp.dependencycheck.data.update.DatabaseUpdater +
    Deletes the existing data directories.
    dependencies - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement
      @@ -1000,8 +999,8 @@ Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.description - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Model
      -
    determineCPE(Dependency) - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    determineCPE(Dependency) - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer
    Searches the data store of CPE entries, trying to identify the CPE for the given dependency based on the evidence contained within.
    Developer - Class in org.owasp.dependencycheck.jaxb.pom.generated
    Information about one of the committers on this project.
    Developer() - @@ -1031,6 +1030,21 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.directory - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Resource
      +
    DirectoryLockException - Exception in org.owasp.dependencycheck.concurrency
    If thrown, indicates that a problem occurred when locking a directory.
    DirectoryLockException() - +Constructor for exception org.owasp.dependencycheck.concurrency.DirectoryLockException +
    Constructs a new Directory Lock Exception. +
    DirectoryLockException(String) - +Constructor for exception org.owasp.dependencycheck.concurrency.DirectoryLockException +
    Constructs a new Directory Lock Exception. +
    DirectoryLockException(Throwable) - +Constructor for exception org.owasp.dependencycheck.concurrency.DirectoryLockException +
    Constructs a new Directory Lock Exception. +
    DirectoryLockException(String, Throwable) - +Constructor for exception org.owasp.dependencycheck.concurrency.DirectoryLockException +
    Constructs a new Directory Lock Exception. +
    DirectorySpinLock - Class in org.owasp.dependencycheck.concurrency
    Implements a spin lock on a given directory.
    DirectorySpinLock(File) - +Constructor for class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Constructs a new spin lock on the given directory.
    distribution - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.License
      @@ -1075,11 +1089,11 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.enabled - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy
      -
    endElement(String, String, String) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler +
    endElement(String, String, String) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler
      -
    endElement(String, String, String) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    endElement(String, String, String) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
     
    endElement(String, String, String) - Method in class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter @@ -1092,11 +1106,11 @@ Constructor for class org.owasp.dependencycheck.ENTRY - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    ENTRY - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    A node type in the NVD CVE Schema 1.2. -
    ENTRY - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    ENTRY - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0
    equals(Object) - Method in class org.owasp.dependencycheck.data.cpe.IndexEntry @@ -1175,10 +1189,28 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.extensions - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Plugin
      +
    extractFiles(File, File) - +Static method in class org.owasp.dependencycheck.utils.FileUtils +
    Extracts the contents of an archive into the specified directory. +
    extractFiles(File, File, Engine) - +Static method in class org.owasp.dependencycheck.utils.FileUtils +
    Extracts the contents of an archive into the specified directory.
    extractImportantUrlData(String) - Static method in class org.owasp.dependencycheck.utils.UrlStringUtils
    Takes a URL, in String format, and adds the important parts of the URL to a list of strings. +
    ExtractionException - Exception in org.owasp.dependencycheck.utils
    An exception used when a file is unable to be un-zipped.
    ExtractionException() - +Constructor for exception org.owasp.dependencycheck.utils.ExtractionException +
    Creates a new ExtractionException. +
    ExtractionException(String) - +Constructor for exception org.owasp.dependencycheck.utils.ExtractionException +
    Creates a new ExtractionException. +
    ExtractionException(Throwable) - +Constructor for exception org.owasp.dependencycheck.utils.ExtractionException +
    Creates a new ExtractionException. +
    ExtractionException(String, Throwable) - +Constructor for exception org.owasp.dependencycheck.utils.ExtractionException +
    Creates a new ExtractionException.

    @@ -1191,18 +1223,9 @@ Constructor for class org.owasp.dependencycheck.analyzer.family - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS
      -
    fetchFile(URL, String) - -Static method in class org.owasp.dependencycheck.utils.Downloader -
    Retrieves a file from a given URL and saves it to the outputPath. -
    fetchFile(URL, String, boolean) - -Static method in class org.owasp.dependencycheck.utils.Downloader -
    Retrieves a file from a given URL and saves it to the outputPath.
    fetchFile(URL, File) - Static method in class org.owasp.dependencycheck.utils.Downloader
    Retrieves a file from a given URL and saves it to the outputPath. -
    fetchFile(URL, File, boolean) - -Static method in class org.owasp.dependencycheck.utils.Downloader -
    Retrieves a file from a given URL and saves it to the outputPath.
    FieldAnalyzer - Class in org.owasp.dependencycheck.data.lucene
    A Lucene Analyzer that utilizes the WhitespaceTokenizer, WordDelimiterFilter, LowerCaseFilter, and StopFilter.
    FieldAnalyzer(Version) - Constructor for class org.owasp.dependencycheck.data.lucene.FieldAnalyzer @@ -1241,15 +1264,15 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.filters - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase
      -
    finalize() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    finalize() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer
    Ensures that the Lucene index is closed. +
    finalize() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer +
    Ensures that the CVE Database is closed.
    finalize() - Method in class org.owasp.dependencycheck.data.nvdcve.CveDB
    Cleans up the object and ensures that "close" has been called. -
    finalize() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer -
    Ensures that the CVE Database is closed.
    finalName - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Build
      @@ -1288,6 +1311,9 @@ Method in interface org.owasp.dependencycheck.analyzer.getAnalysisPhase() - Method in class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer
    Returns the phase that the analyzer is intended to run in. +
    getAnalysisPhase() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
    Returns the analysis phase that this analyzer should run in.
    getAnalysisPhase() - Method in class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer
    Returns the phase that the analyzer is intended to run in. @@ -1306,11 +1332,8 @@ Method in class org.owasp.dependencycheck.analyzer.getAnalysisPhase() - Method in class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer
    Returns the phase that the analyzer is intended to run in. -
    getAnalysisPhase() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer -
    Returns the analysis phase that this analyzer should run in. -
    getAnalysisPhase() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    getAnalysisPhase() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Returns the analysis phase that this analyzer should run in.
    getAnalyzers() - Method in class org.owasp.dependencycheck.analyzer.AnalyzerService @@ -1473,8 +1496,8 @@ Method in class org.owasp.dependencycheck.dependency.getCweName(String) - Static method in class org.owasp.dependencycheck.data.cwe.CweDB
    Returns the full CWE name from the CWE ID. -
    getDataDirectory() - -Method in class org.owasp.dependencycheck.data.cpe.Index +
    getDataDirectory() - +Static method in class org.owasp.dependencycheck.data.cpe.BaseIndex
    Retrieves the directory that the JAR file exists in so that we can ensure we always use a common data directory.
    getDataDirectory() - @@ -1550,12 +1573,9 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getDevelopers() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Model
    Gets the value of the developers property. -
    getDirectory() - -Method in class org.owasp.dependencycheck.data.cpe.Index -
    Returns the directory that holds the CPE Index. -
    getDirectory() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Gets the directory that contains the Lucene Index. +
    getDirectory() - +Method in class org.owasp.dependencycheck.data.cpe.BaseIndex +
    Gets the directory.
    getDirectory() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Build
    Gets the value of the directory property. @@ -1574,8 +1594,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getDistributionManagement() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Profile
    Gets the value of the distributionManagement property. -
    getDocument(int) - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex +
    getDocument(int) - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexReader
    Retrieves a document from the Index.
    getDocumentId() - Method in class org.owasp.dependencycheck.data.cpe.IndexEntry @@ -1640,9 +1660,6 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getFile() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Activation
    Gets the value of the file property. -
    getFile(String, String) - -Static method in class org.owasp.dependencycheck.utils.Settings -
    Returns a value from the properties file as a File object.
    getFile(String) - Static method in class org.owasp.dependencycheck.utils.Settings
    Returns a value from the properties file as a File object. @@ -1712,8 +1729,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getHex(byte[]) - Static method in class org.owasp.dependencycheck.utils.Checksum
    Converts a byte array into a hex string. -
    getId() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    getId() - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Get the value of id.
    getId() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository @@ -1748,15 +1765,6 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getIncludes() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Resource
    Gets the value of the includes property. -
    getIndexingAnalyzer() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Returns an Analyzer to be used when indexing. -
    getIndexSearcher() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Returns an IndexSearcher for the Lucene Index. -
    getIndexWriter() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Retrieves the IndexWriter for the Lucene Index.
    getInherited() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Plugin
    Gets the value of the inherited property. @@ -1818,6 +1826,10 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getMaven() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites
    Gets the value of the maven property. +
    getMaxWait() - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Get the maximum wait time, in seconds, that the spin lock will wait while + trying to obtain a lock.
    getMD5Checksum(File) - Static method in class org.owasp.dependencycheck.utils.Checksum
    Calculates the MD5 checksum of a specified file. @@ -1851,6 +1863,9 @@ Method in interface org.owasp.dependencycheck.analyzer.getName() - Method in class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer
    Returns the name of the analyzer. +
    getName() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
    Returns the name of this analyzer.
    getName() - Method in class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer
    Returns the name of the analyzer. @@ -1872,11 +1887,8 @@ Method in class org.owasp.dependencycheck.analyzer.getName() - Method in class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer
    Returns the name of the analyzer. -
    getName() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer -
    Returns the name of this analyzer. -
    getName() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    getName() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Returns the name of this analyzer.
    getName() - Method in class org.owasp.dependencycheck.dependency.Evidence @@ -1923,14 +1935,14 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getName() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Site
    Gets the value of the name property. -
    getNeedsUpdate() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    getNeedsUpdate() - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Get the value of needsUpdate. -
    getNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    getNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    Gets the value of node. -
    getNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    getNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Gets the value of node.
    getNotifier() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifiers @@ -1938,8 +1950,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getNotifiers() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement
    Gets the value of the notifiers property. -
    getOldSchemaVersionUrl() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    getOldSchemaVersionUrl() - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Get the value of oldSchemaVersionUrl.
    getOrganization() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Contributor @@ -2061,12 +2073,18 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getProperties() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Profile
    Gets the value of the properties property. +
    getPropertiesFile() - +Static method in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Retrieves the properties file. +
    getProperty(String) - +Method in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Returns the property value for the given key. +
    getProperty(String, String) - +Method in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Returns the property value for the given key.
    getProperty() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Activation
    Gets the value of the property property. -
    getQueryParser() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Gets a query parser
    getReferences() - Method in class org.owasp.dependencycheck.dependency.Vulnerability
    Get the value of references. @@ -2157,9 +2175,6 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getScriptSourceDirectory() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Build
    Gets the value of the scriptSourceDirectory property. -
    getSearchingAnalyzer() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Returns an analyzer used for searching the index
    getSearchScore() - Method in class org.owasp.dependencycheck.data.cpe.IndexEntry
    Get the value of searchScore. @@ -2205,6 +2220,9 @@ Method in interface org.owasp.dependencycheck.analyzer.getSupportedExtensions() - Method in class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer
    Returns a list of file EXTENSIONS supported by this analyzer. +
    getSupportedExtensions() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
    Returns true because this analyzer supports all dependency types.
    getSupportedExtensions() - Method in class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer
    Returns a list of file EXTENSIONS supported by this analyzer. @@ -2223,11 +2241,8 @@ Method in class org.owasp.dependencycheck.analyzer.getSupportedExtensions() - Method in class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer
    Returns a list of file EXTENSIONS supported by this analyzer. -
    getSupportedExtensions() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer -
    Returns true because this analyzer supports all dependency types. -
    getSupportedExtensions() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    getSupportedExtensions() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Returns true because this analyzer supports all dependency types.
    getSystem() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement @@ -2244,6 +2259,9 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getTargetPath() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Resource
    Gets the value of the targetPath property. +
    getTempDirectory() - +Static method in class org.owasp.dependencycheck.utils.Settings +
    Returns the temporary directory.
    getTermAtt() - Method in class org.owasp.dependencycheck.data.lucene.AbstractTokenizingFilter
    Gets the CharTermAttribute. @@ -2265,8 +2283,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getTestSourceDirectory() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Build
    Gets the value of the testSourceDirectory property. -
    getTimestamp() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    getTimestamp() - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Get the value of timestamp - epoch time.
    getTimezone() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Contributor @@ -2277,11 +2295,11 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getTokens() - Method in class org.owasp.dependencycheck.data.lucene.AbstractTokenizingFilter
    Gets the list of tokens. -
    getTotalNumberOfApplicationEntries() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    getTotalNumberOfApplicationEntries() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
    Get the value of totalNumberOfApplicationEntries. -
    getTotalNumberOfEntries() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    getTotalNumberOfEntries() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
    Get the value of totalNumberOfEntries.
    getType() - Method in class org.owasp.dependencycheck.dependency.Identifier @@ -2298,8 +2316,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.getUpdatePolicy() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy
    Gets the value of the updatePolicy property. -
    getUrl() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    getUrl() - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Get the value of url.
    getUrl() - Method in class org.owasp.dependencycheck.dependency.Identifier @@ -2394,8 +2412,8 @@ Method in class org.owasp.dependencycheck.utils.getVulnerabilities(String) - Method in class org.owasp.dependencycheck.data.nvdcve.CveDB
    Retrieves the vulnerabilities associated with the specified CPE. -
    getVulnerabilities() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler +
    getVulnerabilities() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler
    Get the value of vulnerabilities.
    getVulnerabilities() - Method in class org.owasp.dependencycheck.dependency.Dependency @@ -2535,9 +2553,6 @@ Method in class org.owasp.dependencycheck.data.lucene.Index - Class in org.owasp.dependencycheck.data.cpe
    The Index class is used to utilize and maintain the CPE Index.
    Index() - -Constructor for class org.owasp.dependencycheck.data.cpe.Index -
     
    IndexEntry - Class in org.owasp.dependencycheck.data.cpe
    A CPE entry containing the name, vendor, product, and version.
    IndexEntry() - Constructor for class org.owasp.dependencycheck.data.cpe.IndexEntry
      @@ -2566,17 +2581,17 @@ Method in interface org.owasp.dependencycheck.analyzer.initialize() - Method in class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer
    The initialize method does nothing for this Analyzer. +
    initialize() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
    Opens the CPE Lucene Index.
    initialize() - Method in class org.owasp.dependencycheck.analyzer.JarAnalyzer
    The initialize method does nothing for this Analyzer.
    initialize() - Method in class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer
    The initialize method does nothing for this Analyzer. -
    initialize() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer -
    Opens the CPE Lucene Index. -
    initialize() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    initialize() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Opens the NVD CVE Lucene Index.
    INSERT_CPE - Static variable in class org.owasp.dependencycheck.data.nvdcve.CveDB @@ -2594,13 +2609,25 @@ Static variable in class org.owasp.dependencycheck.data.nvdcve.JarAnalyzer
    A utility function that will interpolate strings based on values given in the properties file. -
    InvalidDataException - Exception in org.owasp.dependencycheck.data.nvdcve.xml
    An InvalidDataDataException is a generic exception used when trying to load - the nvd cve meta data.
    InvalidDataException(String) - -Constructor for exception org.owasp.dependencycheck.data.nvdcve.xml.InvalidDataException +
    InvalidDataException - Exception in org.owasp.dependencycheck.data.nvdcve
    An InvalidDataDataException is a generic exception used when trying to load + the nvd cve meta data.
    InvalidDataException(String) - +Constructor for exception org.owasp.dependencycheck.data.nvdcve.InvalidDataException
    Creates an InvalidDataException. -
    InvalidDataException(String, Exception) - -Constructor for exception org.owasp.dependencycheck.data.nvdcve.xml.InvalidDataException +
    InvalidDataException(String, Exception) - +Constructor for exception org.owasp.dependencycheck.data.nvdcve.InvalidDataException
    Creates an InvalidDataException. +
    InvalidDirectoryException - Exception in org.owasp.dependencycheck.concurrency
    If thrown, indicates that there is a problem with a directory.
    InvalidDirectoryException() - +Constructor for exception org.owasp.dependencycheck.concurrency.InvalidDirectoryException +
    Constructs a new Invalid Directory Exception. +
    InvalidDirectoryException(String) - +Constructor for exception org.owasp.dependencycheck.concurrency.InvalidDirectoryException +
    Constructs a new Invalid Directory Exception. +
    InvalidDirectoryException(Throwable) - +Constructor for exception org.owasp.dependencycheck.concurrency.InvalidDirectoryException +
    Constructs a new Invalid Directory Exception. +
    InvalidDirectoryException(String, Throwable) - +Constructor for exception org.owasp.dependencycheck.concurrency.InvalidDirectoryException +
    Constructs a new Invalid Directory Exception.
    InvalidSettingException - Exception in org.owasp.dependencycheck.utils
    An exception used when an error occurs reading a setting.
    InvalidSettingException() - Constructor for exception org.owasp.dependencycheck.utils.InvalidSettingException
    Creates a new InvalidSettingException. @@ -2616,35 +2643,44 @@ Constructor for exception org.owasp.dependencycheck.utils.isActiveByDefault() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Activation
    Gets the value of the activeByDefault property. -
    isCVSSAccessComplexityNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isBatchUpdateMode() - +Method in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Get the value of batchUpdateMode. +
    isCVSSAccessComplexityNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the CVSS_ACCESS_COMPLEXITY node. -
    isCVSSAccessVectorNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isCVSSAccessVectorNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the CVSS_ACCESS_VECTOR node. -
    isCVSSAuthenticationNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isCVSSAuthenticationNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the CVSS_AUTHENTICATION node. -
    isCVSSAvailabilityImpactNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isCVSSAvailabilityImpactNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the CVSS_AVAILABILITY_IMPACT node. -
    isCVSSConfidentialityImpactNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isCVSSConfidentialityImpactNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the CVSS_CONFIDENTIALITY_IMPACT node. -
    isCVSSIntegrityImpactNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isCVSSIntegrityImpactNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the CVSS_INTEGRITY_IMPACT node. -
    isCVSSScoreNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isCVSSScoreNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the CVSS_SCORE node. +
    isDoBatchUpdate() - +Method in class org.owasp.dependencycheck.data.update.DatabaseUpdater +
    Get the value of doBatchUpdate +
    isEmpty() - +Method in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Returns whether or not any properties are set.
    isEnabled() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy
    Gets the value of the enabled property. -
    isEntryNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    isEntryNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    Checks if the handler is at the ENTRY node. -
    isEntryNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isEntryNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the ENTRY node.
    isExcludeDefaults() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Reporting @@ -2658,26 +2694,26 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.isLevelEnabled(int) - Method in class org.owasp.dependencycheck.reporting.VelocityLoggerRedirect
    Will always return true. -
    isNVDNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    isNVDNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    Checks if the handler is at the NVD node. -
    isNVDNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isNVDNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the NVD node. -
    isOpen() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    isOpen() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer
    Returns the status of the data source - is the index open. -
    isOpen() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Returns the status of the data source - is the index open. -
    isOpen() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    isOpen() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Returns the status of the data source - is the database open. +
    isOpen() - +Method in class org.owasp.dependencycheck.data.cpe.BaseIndex +
    Returns the status of the data source - is the index open.
    isOptional() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Dependency
    Gets the value of the optional property. -
    isProdNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    isProdNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    Checks if the handler is at the PROD node.
    isSendOnError() - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Notifier @@ -2709,29 +2745,29 @@ Static method in class org.owasp.dependencycheck.utils.isUsed() - Method in class org.owasp.dependencycheck.dependency.Evidence
    Get the value of used. -
    isVersNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    isVersNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    Checks if the handler is at the VERS node. -
    isVulnCWENode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isVulnCWENode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the VULN_CWE node. -
    isVulnProductNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isVulnProductNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the VULN_PRODUCT node. -
    isVulnReferenceNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isVulnReferenceNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the REFERENCE node. -
    isVulnReferencesNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isVulnReferencesNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the REFERENCES node. -
    isVulnSoftwareNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    isVulnSoftwareNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    Checks if the handler is at the VULN_SOFTWARE node. -
    isVulnSourceNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isVulnSourceNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the VULN_SOURCE node. -
    isVulnSummaryNode() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    isVulnSummaryNode() - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Checks if the handler is at the VULN_SUMMARY node.
    iterator(Evidence.Confidence) - Method in class org.owasp.dependencycheck.dependency.EvidenceCollection @@ -2763,6 +2799,13 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.

    L

    +
    LAST_UPDATED - +Static variable in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    The properties file key for the last updated field - used to store the + last updated time of the Modified NVD CVE xml file. +
    LAST_UPDATED_BASE - +Static variable in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Stores the last updated time for each of the NVD CVE files.
    layout - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository
      @@ -2778,6 +2821,9 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.licenses - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Model
      +
    LOCK_NAME - +Static variable in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    The name of the lock file.
    log(int, String) - Method in class org.owasp.dependencycheck.reporting.VelocityLoggerRedirect
    Given a Velocity log level and message, this method will call the @@ -2814,6 +2860,9 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.MavenNamespaceFilter - Class in org.owasp.dependencycheck.jaxb.pom
    This filter is used when parsing POM documents.
    MavenNamespaceFilter() - Constructor for class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter
      +
    MAX_SPIN - +Static variable in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    The maximum wait period used when attempting to obtain a lock.
    merge(EvidenceCollection...) - Static method in class org.owasp.dependencycheck.dependency.EvidenceCollection
    Merges multiple EvidenceCollections together. @@ -2872,9 +2921,10 @@ Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.modelVersion - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Model
      -
    MODIFIED - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater -
    Modified key word. +
    MODIFIED - +Static variable in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Modified key word, used as a key to store information about the modified + file (i.e.
    module - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules
      @@ -2944,29 +2994,32 @@ Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.notifiers - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement
      -
    NVD - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    NVD - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    A node type in the NVD CVE Schema 1.2. -
    NVD - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    NVD - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    NvdCve12Handler - Class in org.owasp.dependencycheck.data.nvdcve.xml
    A SAX Handler that will parse the NVD CVE XML (schema version 1.2).
    NvdCve12Handler() - -Constructor for class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler +
    NvdCve12Handler - Class in org.owasp.dependencycheck.data.nvdcve
    A SAX Handler that will parse the NVD CVE XML (schema version 1.2).
    NvdCve12Handler() - +Constructor for class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler
      -
    NvdCve12Handler.Element - Class in org.owasp.dependencycheck.data.nvdcve.xml
    A simple class to maintain information about the current element while - parsing the NVD CVE XML.
    NvdCve12Handler.Element() - -Constructor for class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    NvdCve12Handler.Element - Class in org.owasp.dependencycheck.data.nvdcve
    A simple class to maintain information about the current element while + parsing the NVD CVE XML.
    NvdCve12Handler.Element() - +Constructor for class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
      -
    NvdCve20Handler - Class in org.owasp.dependencycheck.data.nvdcve.xml
    A SAX Handler that will parse the NVD CVE XML (schema version 2.0).
    NvdCve20Handler() - -Constructor for class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    NvdCve20Handler - Class in org.owasp.dependencycheck.data.nvdcve
    A SAX Handler that will parse the NVD CVE XML (schema version 2.0).
    NvdCve20Handler() - +Constructor for class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
      -
    NvdCve20Handler.Element - Class in org.owasp.dependencycheck.data.nvdcve.xml
    A simple class to maintain information about the current element while - parsing the NVD CVE XML.
    NvdCve20Handler.Element() - -Constructor for class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    NvdCve20Handler.Element - Class in org.owasp.dependencycheck.data.nvdcve
    A simple class to maintain information about the current element while + parsing the NVD CVE XML.
    NvdCve20Handler.Element() - +Constructor for class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
      -
    NvdCveAnalyzer - Class in org.owasp.dependencycheck.data.nvdcve
    NvdCveAnalyzer is a utility class that takes a project dependency and - attempts to discern if there is an associated CVEs.
    NvdCveAnalyzer() - -Constructor for class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    NvdCveAnalyzer - Class in org.owasp.dependencycheck.analyzer
    NvdCveAnalyzer is a utility class that takes a project dependency and + attempts to discern if there is an associated CVEs.
    NvdCveAnalyzer() - +Constructor for class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer +
      +
    NvdCveInfo - Class in org.owasp.dependencycheck.data.update
    A pojo that contains the Url and timestamp of the current NvdCve XML files.
    NvdCveInfo() - +Constructor for class org.owasp.dependencycheck.data.update.NvdCveInfo
     

    @@ -2978,24 +3031,43 @@ Constructor for class org.owasp.dependencycheck.data.nvdcve.ObjectFactory() - Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
    Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.owasp.dependencycheck.analyzer.pom.generated -
    open() - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    obtainExclusiveLock() - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained. +
    obtainLock(boolean, long) - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained. +
    obtainLock(boolean) - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained. +
    obtainSharedLock() - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained. +
    open() - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer
    Opens the data source. -
    open() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex +
    open() - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer +
    Opens the data source. +
    open() - +Method in class org.owasp.dependencycheck.data.cpe.BaseIndex +
    Opens the CPE Index. +
    open() - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexReader +
    Opens the CPE Index. +
    open() - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexWriter
    Opens the CPE Index.
    open() - Method in class org.owasp.dependencycheck.data.nvdcve.CveDB
    Opens the database connection. -
    open() - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer -
    Opens the data source. -
    openIndexReader() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Opens the Lucene Index for reading. -
    openIndexWriter() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Opens the Lucene Index Writer. +
    openDirectory() - +Method in class org.owasp.dependencycheck.data.cpe.BaseIndex +
    Returns the Lucene directory object for the CPE Index.
    optional - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Dependency
      @@ -3010,7 +3082,12 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.org.owasp.dependencycheck.data - package org.owasp.dependencycheck.data
    + and process the dependencies.
    org.owasp.dependencycheck.concurrency - package org.owasp.dependencycheck.concurrency
    + + org.owasp.dependencycheck.concurrency + + + Contains classes used to create shared and exclusive locks on directories.
    org.owasp.dependencycheck.data - package org.owasp.dependencycheck.data
    org.owasp.dependencycheck.data @@ -3035,7 +3112,7 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.org.owasp.dependencycheck.data.nvdcve.xml - package org.owasp.dependencycheck.data.nvdcve.xml
    + Contains classes used to work with the NVD CVE data.
    org.owasp.dependencycheck.data.update - package org.owasp.dependencycheck.data.update
    org.owasp.dependencycheck.data.nvdcve.xml @@ -3215,8 +3292,8 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites - Class in org.owasp.dependencycheck.jaxb.pom.generated
    Describes the prerequisites a project can have.
    Prerequisites() - Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites
      -
    PROD - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    PROD - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    A node type in the NVD CVE Schema 1.2.
    PRODUCT - Static variable in class org.owasp.dependencycheck.data.cpe.Fields @@ -3281,6 +3358,9 @@ Constructor for class org.owasp.dependencycheck.dependency.relativePath - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Parent
      +
    release() - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Releases the lock.
    releases - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Repository
      @@ -3290,6 +3370,9 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Relocation - Class in org.owasp.dependencycheck.jaxb.pom.generated
    Describes where an artifact has moved to.
    Relocation() - Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.Relocation
      +
    removeProperty(String) - +Static method in class org.owasp.dependencycheck.utils.Settings +
    Removes a property from the local properties collection.
    report - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Reports
      @@ -3362,12 +3445,6 @@ Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy - Class in org.owasp.dependencycheck.jaxb.pom.generated
    Download policy
    RepositoryPolicy() - Constructor for class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy
      -
    resetSearchingAnalyzer() - -Method in class org.owasp.dependencycheck.data.cpe.Index -
    Resets the searching analyzers -
    resetSearchingAnalyzer() - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex -
    Resets the searching analyzers
    resource - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources
      @@ -3390,9 +3467,6 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.resources - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase
      -
    retrieveCurrentTimestampsFromWeb() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater -
    Retrieves the timestamps from the NVD CVE meta data file.
    role - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles
      @@ -3410,11 +3484,15 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.

    S

    -
    saveEntry(IndexEntry) - -Method in class org.owasp.dependencycheck.data.cpe.Index +
    save(NvdCveInfo) - +Method in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Writes a properties file containing the last updated date to the + VULNERABLE_CPE directory. +
    saveEntry(IndexEntry) - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexWriter
    Saves a CPE IndexEntry into the Lucene index. -
    saveEntry(Vulnerability) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    saveEntry(Vulnerability) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
    Saves a vulnerability to the CVE Database.
    scan(String[]) - Method in class org.owasp.dependencycheck.Engine @@ -3452,14 +3530,14 @@ Variable in class org.owasp.dependencycheck.jaxb.pom.generated.scriptSourceDirectory - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.Build
      -
    search(String, int) - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex +
    search(String, int) - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexReader
    Searches the index using the given search string. -
    search(Query, int) - -Method in class org.owasp.dependencycheck.data.lucene.AbstractIndex +
    search(Query, int) - +Method in class org.owasp.dependencycheck.data.cpe.CpeIndexReader
    Searches the index using the given query. -
    searchCPE(String, String, Set<String>, Set<String>) - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer +
    searchCPE(String, String, Set<String>, Set<String>) - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer
    Searches the Lucene CPE index to identify possible CPE entries associated with the supplied vendor, product, and version.
    SearchFieldAnalyzer - Class in org.owasp.dependencycheck.data.lucene
    A Lucene field analyzer used to analyzer queries against the CPE data.
    SearchFieldAnalyzer(Version) - @@ -3546,6 +3624,9 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setArtifactId(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin
    Sets the value of the artifactId property. +
    setBatchUpdateMode(boolean) - +Method in class org.owasp.dependencycheck.data.update.DataStoreMetaInfo +
    Set the value of batchUpdateMode.
    setBoolean(String, boolean) - Static method in class org.owasp.dependencycheck.utils.Settings
    Sets a property value. @@ -3594,8 +3675,11 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setCpe(String) - Method in class org.owasp.dependencycheck.dependency.VulnerableSoftware
    Parse a CPE entry from the cpe string representation. -
    setCveDB(CveDB) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    setCpeIndex(CpeIndexWriter) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler +
    Sets the cpe index writer. +
    setCveDB(CveDB) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
    Sets the cveDB.
    setCvssAccessComplexity(String) - Method in class org.owasp.dependencycheck.dependency.Vulnerability @@ -3681,6 +3765,9 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setDistributionManagement(DistributionManagement) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Profile
    Sets the value of the distributionManagement property. +
    setDoBatchUpdate(boolean) - +Method in class org.owasp.dependencycheck.data.update.DatabaseUpdater +
    Set the value of doBatchUpdate
    setDocumentId(String) - Method in class org.owasp.dependencycheck.data.cpe.IndexEntry
    Set the value of documentId. @@ -3780,8 +3867,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setGroupId(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin
    Sets the value of the groupId property. -
    setId(String) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    setId(String) - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Set the value of id.
    setId(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository @@ -3849,6 +3936,10 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setMaven(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites
    Sets the value of the maven property. +
    setMaxWait(long) - +Method in class org.owasp.dependencycheck.concurrency.DirectorySpinLock +
    Set the maximum wait time, in seconds, that the spin lock will wait while + trying to obtain a lock.
    setMd5sum(String) - Method in class org.owasp.dependencycheck.dependency.Dependency
    Sets the MD5 Checksum of the dependency. @@ -3915,20 +4006,20 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setName(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Site
    Sets the value of the name property. -
    setNeedsUpdate(boolean) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    setNeedsUpdate(boolean) - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Set the value of needsUpdate. -
    setNode(String) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    setNode(String) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    Sets the value of node. -
    setNode(String) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    setNode(String) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    Sets the value of node.
    setNotifiers(CiManagement.Notifiers) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement
    Sets the value of the notifiers property. -
    setOldSchemaVersionUrl(String) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    setOldSchemaVersionUrl(String) - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Set the value of oldSchemaVersionUrl.
    setOptional(Boolean) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Dependency @@ -4002,8 +4093,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setPreviousVersion(String) - Method in class org.owasp.dependencycheck.dependency.VulnerableSoftware
    Set the value of previousVersion. -
    setPrevVersionVulnMap(Map<String, List<VulnerableSoftware>>) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    setPrevVersionVulnMap(Map<String, List<VulnerableSoftware>>) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
    Sets the prevVersionVulnMap.
    setProduct(String) - Method in class org.owasp.dependencycheck.data.cpe.IndexEntry @@ -4164,8 +4255,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setTestSourceDirectory(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Build
    Sets the value of the testSourceDirectory property. -
    setTimestamp(long) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    setTimestamp(long) - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Set the value of timestamp - epoch time.
    setTimezone(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.Contributor @@ -4191,8 +4282,8 @@ Method in class org.owasp.dependencycheck.jaxb.pom.generated.setUpdatePolicy(String) - Method in class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy
    Sets the value of the updatePolicy property. -
    setUrl(String) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl +
    setUrl(String) - +Method in class org.owasp.dependencycheck.data.update.NvdCveInfo
    Set the value of url.
    setUrl(String) - Method in class org.owasp.dependencycheck.dependency.Identifier @@ -4308,11 +4399,11 @@ Method in class org.owasp.dependencycheck.jaxb.pom.startElement(String, String, String, Attributes) - Method in class org.owasp.dependencycheck.data.cwe.CweHandler
      -
    startElement(String, String, String, Attributes) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler +
    startElement(String, String, String, Attributes) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler
      -
    startElement(String, String, String, Attributes) - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler +
    startElement(String, String, String, Attributes) - +Method in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
     
    startElement(String, String, String, Attributes) - Method in class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter @@ -4332,6 +4423,9 @@ Method in interface org.owasp.dependencycheck.analyzer.supportsExtension(String) - Method in class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer
    Returns whether or not this analyzer can process the given extension. +
    supportsExtension(String) - +Method in class org.owasp.dependencycheck.analyzer.CPEAnalyzer +
    Returns true because this analyzer supports all dependency types.
    supportsExtension(String) - Method in class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer
    Returns whether or not this analyzer can process the given extension. @@ -4350,11 +4444,8 @@ Method in class org.owasp.dependencycheck.analyzer.supportsExtension(String) - Method in class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer
    Returns whether or not this analyzer can process the given extension. -
    supportsExtension(String) - -Method in class org.owasp.dependencycheck.data.cpe.CPEAnalyzer -
    Returns true because this analyzer supports all dependency types. -
    supportsExtension(String) - -Method in class org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer +
    supportsExtension(String) - +Method in class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    Returns true because this analyzer supports all dependency types.
    supportsExtension(String) - Method in class org.owasp.dependencycheck.Engine @@ -4452,8 +4543,8 @@ Method in interface org.owasp.dependencycheck.data.update() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater +
    update() - +Method in class org.owasp.dependencycheck.data.update.DatabaseUpdater
    Downloads the latest NVD CVE XML file from the web and imports it into the current CVE Database.
    UPDATE_VULNERABILITY - @@ -4471,9 +4562,6 @@ Constructor for exception org.owasp.dependencycheck.data.UpdateException(String, Throwable) - Constructor for exception org.owasp.dependencycheck.data.UpdateException
    Creates a new UpdateException. -
    updateNeeded() - -Method in class org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater -
    Determines if the index needs to be updated.
    updatePolicy - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy
      @@ -4557,8 +4645,8 @@ Constructor for class org.owasp.dependencycheck.reporting.VENDOR - Static variable in class org.owasp.dependencycheck.data.cpe.Fields
    The key for the vendor field. -
    VERS - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    VERS - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    A node type in the NVD CVE Schema 1.2.
    version - Variable in class org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS @@ -4590,26 +4678,26 @@ Constructor for class org.owasp.dependencycheck.data.lucene.VersionTokenizingFilter - Class in org.owasp.dependencycheck.data.lucene
    Deprecated. version information is no longer stored in lucene
    VersionTokenizingFilter(TokenStream) - Constructor for class org.owasp.dependencycheck.data.lucene.VersionTokenizingFilter
    Deprecated. Constructs a new VersionTokenizingFilter. -
    VULN_CWE - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    VULN_CWE - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    VULN_PRODUCT - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    VULN_PRODUCT - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    VULN_REFERENCE - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    VULN_REFERENCE - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    VULN_REFERENCES - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    VULN_REFERENCES - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    VULN_SOFTWARE - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element +
    VULN_SOFTWARE - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
    A node type in the NVD CVE Schema 1.2. -
    VULN_SOURCE - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    VULN_SOURCE - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0 -
    VULN_SUMMARY - -Static variable in class org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element +
    VULN_SUMMARY - +Static variable in class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
    A node type in the NVD CVE Schema 2.0
    Vulnerability - Class in org.owasp.dependencycheck.dependency
    Contains the information about a vulnerability.
    Vulnerability() - Constructor for class org.owasp.dependencycheck.dependency.Vulnerability diff --git a/dependency-check-core/apidocs/index.html b/dependency-check-core/apidocs/index.html index 2cc62fd99..3a63b3229 100644 --- a/dependency-check-core/apidocs/index.html +++ b/dependency-check-core/apidocs/index.html @@ -2,10 +2,10 @@ - + -dependency-check-core 1.0.1 API +Dependency-Check Core 1.0.2 API diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AbstractAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AbstractAnalyzer.html index deae44a81..a3608c041 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AbstractAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AbstractAnalyzer.html @@ -2,13 +2,13 @@ - + -AbstractAnalyzer (dependency-check-core 1.0.1 API) +AbstractAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ AbstractAnalyzer (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="AbstractAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="AbstractAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisException.html index 31e729915..862ab894c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisException.html @@ -2,13 +2,13 @@ - + -AnalysisException (dependency-check-core 1.0.1 API) +AnalysisException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ AnalysisException (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="AnalysisException (dependency-check-core 1.0.1 API)"; + parent.document.title="AnalysisException (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisPhase.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisPhase.html index 44d6492eb..7f1916234 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisPhase.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalysisPhase.html @@ -2,13 +2,13 @@ - + -AnalysisPhase (dependency-check-core 1.0.1 API) +AnalysisPhase (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ AnalysisPhase (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="AnalysisPhase (dependency-check-core 1.0.1 API)"; + parent.document.title="AnalysisPhase (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/Analyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/Analyzer.html index 90884175e..52dd32849 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/Analyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/Analyzer.html @@ -2,13 +2,13 @@ - + -Analyzer (dependency-check-core 1.0.1 API) +Analyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Analyzer (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Analyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Analyzer (Dependency-Check Core 1.0.2 API)"; } } @@ -93,7 +93,7 @@ org.owasp.dependencycheck.analyzer
    Interface Analyzer

    -
    All Known Implementing Classes:
    AbstractAnalyzer, ArchiveAnalyzer, CPEAnalyzer, DependencyBundlingAnalyzer, FalsePositiveAnalyzer, FileNameAnalyzer, HintAnalyzer, JarAnalyzer, JavaScriptAnalyzer, NvdCveAnalyzer
    +
    All Known Implementing Classes:
    AbstractAnalyzer, ArchiveAnalyzer, CPEAnalyzer, DependencyBundlingAnalyzer, FalsePositiveAnalyzer, FileNameAnalyzer, HintAnalyzer, JarAnalyzer, JavaScriptAnalyzer, NvdCveAnalyzer

    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalyzerService.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalyzerService.html index 5873a15ab..0b482a365 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalyzerService.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/AnalyzerService.html @@ -2,13 +2,13 @@ - + -AnalyzerService (dependency-check-core 1.0.1 API) +AnalyzerService (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ AnalyzerService (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="AnalyzerService (dependency-check-core 1.0.1 API)"; + parent.document.title="AnalyzerService (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html index d8ee4ca18..56aa67d5f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html @@ -2,13 +2,13 @@ - + -ArchiveAnalyzer (dependency-check-core 1.0.1 API) +ArchiveAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ArchiveAnalyzer (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ArchiveAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="ArchiveAnalyzer (Dependency-Check Core 1.0.2 API)"; } } @@ -57,7 +57,7 @@ function windowTitle()
    NEXT CLASSNEXT CLASSNEXT CLASSNEXT CLASS - - - - - -
    org.owasp.dependencycheck.utils.Settings.KEYS "autoupdate"
    +public static final StringBATCH_UPDATE_URL"batch.update.url"
    public static final String CONNECTION_TIMEOUT "data.cpe"
    -public static final StringCPE_META_URL"cpe.meta.url"
    -public static final StringCPE_URL"cpe.url"
    public static final String CVE_DATA_DIRECTORY
    org.owasp.dependencycheck.data.cpe - - org.owasp.dependencycheck.data.cpe - - - Contains classes for working with the CPE Lucene Index. 
    org.owasp.dependencycheck.data.nvdcve - - org.owasp.dependencycheck.data.nvdcve - - - Contains classes used to work with the NVD CVE data. 
     

    @@ -138,6 +120,16 @@ Uses of

     voidNvdCveAnalyzer.analyze(Dependency dependency, + Engine engine) + +
    +          Analyzes a dependency and attempts to determine if there are any CPE + identifiers for this dependency.
    + void JavaScriptAnalyzer.analyze(Dependency dependency, Engine engine) @@ -196,6 +188,16 @@ Uses of  voidCPEAnalyzer.analyze(Dependency dependency, + Engine engine) + +
    +          Analyzes a dependency and attempts to determine if there are any CPE + identifiers for this dependency.
    + void ArchiveAnalyzer.analyze(Dependency dependency, Engine engine) @@ -223,60 +225,6 @@ Uses of - - - - -
    -Uses of AnalysisException in org.owasp.dependencycheck.data.cpe
    -  -

    - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.cpe that throw AnalysisException
    - voidCPEAnalyzer.analyze(Dependency dependency, - Engine engine) - -
    -          Analyzes a dependency and attempts to determine if there are any CPE - identifiers for this dependency.
    -  -

    - - - - - -
    -Uses of AnalysisException in org.owasp.dependencycheck.data.nvdcve
    -  -

    - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.nvdcve that throw AnalysisException
    - voidNvdCveAnalyzer.analyze(Dependency dependency, - Engine engine) - -
    -          Analyzes a dependency and attempts to determine if there are any CPE - identifiers for this dependency.
    -  -


    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalysisPhase.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalysisPhase.html index abaf2bf0e..b7146c335 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalysisPhase.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalysisPhase.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.AnalysisPhase (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.AnalysisPhase (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.AnalysisPhase (dependency-check function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.AnalysisPhase (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.AnalysisPhase (Dependency-Check Core 1.0.2 API)"; } } @@ -109,24 +109,6 @@ Packages that use -
    org.owasp.dependencycheck.data.cpe - - org.owasp.dependencycheck.data.cpe - - - Contains classes for working with the CPE Lucene Index. 
    org.owasp.dependencycheck.data.nvdcve - - org.owasp.dependencycheck.data.nvdcve - - - Contains classes used to work with the NVD CVE data. 
     

    @@ -172,6 +154,14 @@ Uses of

     AnalysisPhaseNvdCveAnalyzer.getAnalysisPhase() + +
    +          Returns the analysis phase that this analyzer should run in.
    + AnalysisPhase JavaScriptAnalyzer.getAnalysisPhase()
    @@ -220,6 +210,14 @@ Uses of
     AnalysisPhaseCPEAnalyzer.getAnalysisPhase() + +
    +          Returns the analysis phase that this analyzer should run in.
    + AnalysisPhase ArchiveAnalyzer.getAnalysisPhase()
    @@ -253,56 +251,6 @@ the order they are declared.
     

    - - - - - -
    -Uses of AnalysisPhase in org.owasp.dependencycheck.data.cpe
    -  -

    - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.cpe that return AnalysisPhase
    - AnalysisPhaseCPEAnalyzer.getAnalysisPhase() - -
    -          Returns the analysis phase that this analyzer should run in.
    -  -

    - - - - - -
    -Uses of AnalysisPhase in org.owasp.dependencycheck.data.nvdcve
    -  -

    - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.nvdcve that return AnalysisPhase
    - AnalysisPhaseNvdCveAnalyzer.getAnalysisPhase() - -
    -          Returns the analysis phase that this analyzer should run in.
    -  -


    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/Analyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/Analyzer.html index f5f07d01a..6424b07dd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/Analyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/Analyzer.html @@ -2,13 +2,13 @@ - + -Uses of Interface org.owasp.dependencycheck.analyzer.Analyzer (dependency-check-core 1.0.1 API) +Uses of Interface org.owasp.dependencycheck.analyzer.Analyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Interface org.owasp.dependencycheck.analyzer.Analyzer (dependency-check- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Interface org.owasp.dependencycheck.analyzer.Analyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Interface org.owasp.dependencycheck.analyzer.Analyzer (Dependency-Check Core 1.0.2 API)"; } } @@ -110,24 +110,6 @@ Packages that use -org.owasp.dependencycheck.data.cpe - - - org.owasp.dependencycheck.data.cpe - - - Contains classes for working with the CPE Lucene Index.  - - -org.owasp.dependencycheck.data.nvdcve - - - org.owasp.dependencycheck.data.nvdcve - - - Contains classes used to work with the NVD CVE data.  - - org.owasp.dependencycheck.reporting @@ -211,6 +193,15 @@ Uses of  class +CPEAnalyzer + +
    +          CPEAnalyzer is a utility class that takes a project dependency and attempts + to discern if there is an associated CPE. + + + + class DependencyBundlingAnalyzer
    @@ -260,6 +251,15 @@ Uses of + + class +NvdCveAnalyzer + +
    +          NvdCveAnalyzer is a utility class that takes a project dependency and + attempts to discern if there is an associated CVEs. +  

    @@ -279,58 +279,6 @@ Uses of - - - - -
    -Uses of Analyzer in org.owasp.dependencycheck.data.cpe
    -  -

    - - - - - - - - - -
    Classes in org.owasp.dependencycheck.data.cpe that implement Analyzer
    - classCPEAnalyzer - -
    -          CPEAnalyzer is a utility class that takes a project dependency and attempts - to discern if there is an associated CPE.
    -  -

    - - - - - -
    -Uses of Analyzer in org.owasp.dependencycheck.data.nvdcve
    -  -

    - - - - - - - - - -
    Classes in org.owasp.dependencycheck.data.nvdcve that implement Analyzer
    - classNvdCveAnalyzer - -
    -          NvdCveAnalyzer is a utility class that takes a project dependency and - attempts to discern if there is an associated CVEs.
    -  -

    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalyzerService.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalyzerService.html index 7c26f768f..7d9f8bd12 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalyzerService.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/AnalyzerService.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.AnalyzerService (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.AnalyzerService (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.AnalyzerService (dependency-che function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.AnalyzerService (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.AnalyzerService (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/ArchiveAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/ArchiveAnalyzer.html index 82a852dda..8d7b56d5c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/ArchiveAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/ArchiveAnalyzer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer (dependency-che function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.ArchiveAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/CPEAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/CPEAnalyzer.html new file mode 100644 index 000000000..6e047d136 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/CPEAnalyzer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.analyzer.CPEAnalyzer (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + +
    + + + + + + + + + +
    + +
    + + + +


    +
    +

    +Uses of Class
    org.owasp.dependencycheck.analyzer.CPEAnalyzer

    +
    +No usage of org.owasp.dependencycheck.analyzer.CPEAnalyzer +

    +


    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/DependencyBundlingAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/DependencyBundlingAnalyzer.html index 7e0b69c72..129591b0c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/DependencyBundlingAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/DependencyBundlingAnalyzer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer (dep function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FalsePositiveAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FalsePositiveAnalyzer.html index 8f33d0686..abb759b81 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FalsePositiveAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FalsePositiveAnalyzer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer (dependen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FileNameAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FileNameAnalyzer.html index 42b15fcd4..0b40d713f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FileNameAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/FileNameAnalyzer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.FileNameAnalyzer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.FileNameAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.FileNameAnalyzer (dependency-ch function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.FileNameAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.FileNameAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/HintAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/HintAnalyzer.html index dc20b5e45..94680facf 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/HintAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/HintAnalyzer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.HintAnalyzer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.HintAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.HintAnalyzer (dependency-check- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.HintAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.HintAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.ClassNameInformation.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.ClassNameInformation.html index 3207275ec..c01f0725a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.ClassNameInformation.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.ClassNameInformation.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformatio function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.html index 314176fa0..d53ae532c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JarAnalyzer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer (dependency-check-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.JarAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JavaScriptAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JavaScriptAnalyzer.html index ae4fdb3f0..f3ae97247 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JavaScriptAnalyzer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/JavaScriptAnalyzer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer (dependency- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/NvdCveAnalyzer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/NvdCveAnalyzer.html new file mode 100644 index 000000000..e5ca44949 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/class-use/NvdCveAnalyzer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.analyzer.NvdCveAnalyzer (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Uses of Class
    org.owasp.dependencycheck.analyzer.NvdCveAnalyzer

    +
    +No usage of org.owasp.dependencycheck.analyzer.NvdCveAnalyzer +

    +


    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-frame.html index 5acafd258..8003ed07a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.analyzer (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.analyzer (Dependency-Check Core 1.0.2 API) - + @@ -41,6 +41,8 @@ Classes 
    ArchiveAnalyzer
    +CPEAnalyzer +
    DependencyBundlingAnalyzer
    FalsePositiveAnalyzer @@ -53,7 +55,9 @@ Classes 
    JarAnalyzer.ClassNameInformation
    -JavaScriptAnalyzer +JavaScriptAnalyzer +
    +NvdCveAnalyzer diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-summary.html index b5bf9b03b..04228ca14 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.analyzer (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.analyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.analyzer (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.analyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.analyzer (Dependency-Check Core 1.0.2 API)"; } } @@ -57,7 +57,7 @@ function windowTitle()  PREV PACKAGE  - NEXT PACKAGENEXT PACKAGE FRAMES    NO FRAMES   @@ -134,6 +134,11 @@ Package org.owasp.dependencycheck.analyzer the scan. +CPEAnalyzer +CPEAnalyzer is a utility class that takes a project dependency and attempts + to discern if there is an associated CPE. + + DependencyBundlingAnalyzer This analyzer ensures dependencies that should be grouped together, to remove excess noise from the report, are grouped. @@ -165,6 +170,11 @@ Package org.owasp.dependencycheck.analyzer Used to load a JAR file and collect information that can be used to determine the associated CPE. + +NvdCveAnalyzer +NvdCveAnalyzer is a utility class that takes a project dependency and + attempts to discern if there is an associated CVEs. +   @@ -247,7 +257,7 @@ Package org.owasp.dependencycheck.analyzer Description  PREV PACKAGE  - NEXT PACKAGENEXT PACKAGE FRAMES    NO FRAMES   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-tree.html index 26e7866e1..7eac18291 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.analyzer Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.analyzer Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.analyzer Class Hierarchy (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.analyzer Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.analyzer Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } @@ -57,7 +57,7 @@ function windowTitle()  PREV  - NEXTNEXT FRAMES    NO FRAMES   @@ -102,7 +102,9 @@ Class Hierarchy
  • org.owasp.dependencycheck.analyzer.JarAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer)
  • org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) -
  • org.owasp.dependencycheck.analyzer.AnalyzerService
  • org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation
  • java.lang.Throwable (implements java.io.Serializable) +
  • org.owasp.dependencycheck.analyzer.AnalyzerService
  • org.owasp.dependencycheck.analyzer.CPEAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) +
  • org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation
  • org.owasp.dependencycheck.analyzer.NvdCveAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) +
  • java.lang.Throwable (implements java.io.Serializable)
    • java.lang.Exception @@ -155,7 +157,7 @@ Enum Hierarchy  PREV  - NEXTNEXT FRAMES    NO FRAMES   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-use.html index a20c6fcbd..c44ad35e0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/analyzer/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.analyzer (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.analyzer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.analyzer (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.analyzer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.analyzer (Dependency-Check Core 1.0.2 API)"; } } @@ -110,24 +110,6 @@ Packages that use -org.owasp.dependencycheck.data.cpe - - - org.owasp.dependencycheck.data.cpe - - - Contains classes for working with the CPE Lucene Index.  - - -org.owasp.dependencycheck.data.nvdcve - - - org.owasp.dependencycheck.data.nvdcve - - - Contains classes used to work with the NVD CVE data.  - - org.owasp.dependencycheck.reporting @@ -205,60 +187,6 @@ Classes in - - - - - - - - - - - - - -
      -Classes in org.owasp.dependencycheck.analyzer used by org.owasp.dependencycheck.data.cpe
      AnalysisException - -
      -          An exception thrown when the analysis of a dependency fails.
      AnalysisPhase - -
      -          An enumeration defining the phases of analysis.
      Analyzer - -
      -          An interface that defines an Analyzer that is used to identify Dependencies.
      -  -

      - - - - - - - - - - - - - - -
      -Classes in org.owasp.dependencycheck.analyzer used by org.owasp.dependencycheck.data.nvdcve
      AnalysisException - -
      -          An exception thrown when the analysis of a dependency fails.
      AnalysisPhase - -
      -          An enumeration defining the phases of analysis.
      Analyzer - -
      -          An interface that defines an Analyzer that is used to identify Dependencies.
      -  -

      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/class-use/Engine.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/class-use/Engine.html index 3f0361b04..517e383b0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/class-use/Engine.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/class-use/Engine.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.Engine (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.Engine (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.Engine (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.Engine (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.Engine (Dependency-Check Core 1.0.2 API)"; } } @@ -101,22 +101,13 @@ Packages that use - + - - - - + Includes various utility classes such as a Settings wrapper, a Checksum utility, etc. 
      org.owasp.dependencycheck.data.cpeorg.owasp.dependencycheck.utils - org.owasp.dependencycheck.data.cpe + org.owasp.dependencycheck.utils - Contains classes for working with the CPE Lucene Index. 
      org.owasp.dependencycheck.data.nvdcve - - org.owasp.dependencycheck.data.nvdcve - - - Contains classes used to work with the NVD CVE data. 
        @@ -138,6 +129,16 @@ Uses of  void +NvdCveAnalyzer.analyze(Dependency dependency, + Engine engine) + +
      +          Analyzes a dependency and attempts to determine if there are any CPE + identifiers for this dependency. + + + + void JavaScriptAnalyzer.analyze(Dependency dependency, Engine engine) @@ -196,6 +197,16 @@ Uses of  void +CPEAnalyzer.analyze(Dependency dependency, + Engine engine) + +
      +          Analyzes a dependency and attempts to determine if there are any CPE + identifiers for this dependency. + + + + void ArchiveAnalyzer.analyze(Dependency dependency, Engine engine) @@ -214,11 +225,11 @@ Uses of + +Uses of Engine in org.owasp.dependencycheck.utils
      -Uses of Engine in org.owasp.dependencycheck.data.cpe
        @@ -226,44 +237,17 @@ Uses of -Methods in org.owasp.dependencycheck.data.cpe with parameters of type Engine
      +Methods in org.owasp.dependencycheck.utils with parameters of type Engine - void -CPEAnalyzer.analyze(Dependency dependency, - Engine engine) +static void +FileUtils.extractFiles(File archive, + File extractTo, + Engine engine)
      -          Analyzes a dependency and attempts to determine if there are any CPE - identifiers for this dependency. - - -  -

      - - - - - -
      -Uses of Engine in org.owasp.dependencycheck.data.nvdcve
      -  -

      - - - - - - - - +          Extracts the contents of an archive into the specified directory.
      Methods in org.owasp.dependencycheck.data.nvdcve with parameters of type Engine
      - voidNvdCveAnalyzer.analyze(Dependency dependency, - Engine engine) - -
      -          Analyzes a dependency and attempts to determine if there are any CPE - identifiers for this dependency.
        diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/DirectoryLockException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/DirectoryLockException.html new file mode 100644 index 000000000..806d920f9 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/DirectoryLockException.html @@ -0,0 +1,305 @@ + + + + + + + +DirectoryLockException (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +


      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      + +

      + +org.owasp.dependencycheck.concurrency +
      +Class DirectoryLockException

      +
      +java.lang.Object
      +  extended by java.lang.Throwable
      +      extended by java.lang.Exception
      +          extended by org.owasp.dependencycheck.concurrency.DirectoryLockException
      +
      +
      +
      All Implemented Interfaces:
      Serializable
      +
      +
      +
      +
      public class DirectoryLockException
      extends Exception
      + + +

      +If thrown, indicates that a problem occurred when locking a directory. +

      + +

      +

      +
      Author:
      +
      Jeremy Long (jeremy.long@owasp.org)
      +
      See Also:
      Serialized Form
      +
      + +

      + + + + + + + + + + + + + + + + + + + + +
      +Constructor Summary
      DirectoryLockException() + +
      +          Constructs a new Directory Lock Exception.
      DirectoryLockException(String msg) + +
      +          Constructs a new Directory Lock Exception.
      DirectoryLockException(String msg, + Throwable ex) + +
      +          Constructs a new Directory Lock Exception.
      DirectoryLockException(Throwable ex) + +
      +          Constructs a new Directory Lock Exception.
      +  + + + + + + + +
      +Method Summary
      + + + + + + + +
      Methods inherited from class java.lang.Throwable
      fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      + + + + + + + +
      Methods inherited from class java.lang.Object
      clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      +  +

      + + + + + + + + +
      +Constructor Detail
      + +

      +DirectoryLockException

      +
      +public DirectoryLockException()
      +
      +
      Constructs a new Directory Lock Exception. +

      +

      +
      + +

      +DirectoryLockException

      +
      +public DirectoryLockException(String msg)
      +
      +
      Constructs a new Directory Lock Exception. +

      +

      +
      Parameters:
      msg - the message describing the exception
      +
      +
      + +

      +DirectoryLockException

      +
      +public DirectoryLockException(Throwable ex)
      +
      +
      Constructs a new Directory Lock Exception. +

      +

      +
      Parameters:
      ex - the cause of the exception
      +
      +
      + +

      +DirectoryLockException

      +
      +public DirectoryLockException(String msg,
      +                              Throwable ex)
      +
      +
      Constructs a new Directory Lock Exception. +

      +

      +
      Parameters:
      msg - the message describing the exception
      ex - the cause of the exception
      +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/DirectorySpinLock.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/DirectorySpinLock.html new file mode 100644 index 000000000..3ac044ce2 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/DirectorySpinLock.html @@ -0,0 +1,548 @@ + + + + + + + +DirectorySpinLock (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      + +

      + +org.owasp.dependencycheck.concurrency +
      +Class DirectorySpinLock

      +
      +java.lang.Object
      +  extended by org.owasp.dependencycheck.concurrency.DirectorySpinLock
      +
      +
      +
      All Implemented Interfaces:
      Closeable
      +
      +
      +
      +
      public class DirectorySpinLock
      extends Object
      implements Closeable
      + + +

      +Implements a spin lock on a given directory. If the lock cannot be obtained, + the process will "spin" waiting for an opportunity to obtain the lock + requested. +

      + +

      +

      +
      Author:
      +
      Jeremy Long (jeremy.long@owasp.org)
      +
      +
      + +

      + + + + + + + + + + + + + + + +
      +Field Summary
      +static StringLOCK_NAME + +
      +          The name of the lock file.
      +static intMAX_SPIN + +
      +          The maximum wait period used when attempting to obtain a lock.
      +  + + + + + + + + + + +
      +Constructor Summary
      DirectorySpinLock(File directory) + +
      +          Constructs a new spin lock on the given directory.
      +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +Method Summary
      + voidclose() + +
      +          Releases any locks and closes the underlying channel.
      + longgetMaxWait() + +
      +          Get the maximum wait time, in seconds, that the spin lock will wait while + trying to obtain a lock.
      + voidobtainExclusiveLock() + +
      +          Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained.
      +protected  voidobtainLock(boolean shared) + +
      +          Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained.
      +protected  voidobtainLock(boolean shared, + long maxWait) + +
      +          Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained.
      + voidobtainSharedLock() + +
      +          Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained.
      + voidrelease() + +
      +          Releases the lock.
      + voidsetMaxWait(long maxWait) + +
      +          Set the maximum wait time, in seconds, that the spin lock will wait while + trying to obtain a lock.
      + + + + + + + +
      Methods inherited from class java.lang.Object
      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +  +

      + + + + + + + + +
      +Field Detail
      + +

      +LOCK_NAME

      +
      +public static final String LOCK_NAME
      +
      +
      The name of the lock file. +

      +

      +
      See Also:
      Constant Field Values
      +
      +
      + +

      +MAX_SPIN

      +
      +public static final int MAX_SPIN
      +
      +
      The maximum wait period used when attempting to obtain a lock. +

      +

      +
      See Also:
      Constant Field Values
      +
      + + + + + + + + +
      +Constructor Detail
      + +

      +DirectorySpinLock

      +
      +public DirectorySpinLock(File directory)
      +                  throws InvalidDirectoryException,
      +                         DirectoryLockException
      +
      +
      Constructs a new spin lock on the given directory. +

      +

      +
      Parameters:
      directory - the directory to monitor/lock +
      Throws: +
      InvalidDirectoryException - thrown if there is an issue with the + directory provided +
      DirectoryLockException - thrown there is an issue obtaining a + handle to the lock file
      +
      + + + + + + + + +
      +Method Detail
      + +

      +getMaxWait

      +
      +public long getMaxWait()
      +
      +
      Get the maximum wait time, in seconds, that the spin lock will wait while + trying to obtain a lock. +

      +

      +
      +
      +
      + +
      Returns:
      the number of seconds the spin lock will wait
      +
      +
      +
      + +

      +setMaxWait

      +
      +public void setMaxWait(long maxWait)
      +
      +
      Set the maximum wait time, in seconds, that the spin lock will wait while + trying to obtain a lock. +

      +

      +
      +
      +
      +
      Parameters:
      maxWait - the number of seconds the spin lock will wait
      +
      +
      +
      + +

      +obtainSharedLock

      +
      +public void obtainSharedLock()
      +                      throws DirectoryLockException
      +
      +
      Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained. This method may block for a few seconds if a lock + cannot be obtained. +

      +

      +
      +
      +
      + +
      Throws: +
      DirectoryLockException - thrown if there is an exception obtaining + the lock
      +
      +
      +
      + +

      +obtainExclusiveLock

      +
      +public void obtainExclusiveLock()
      +                         throws DirectoryLockException
      +
      +
      Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained. This method may block for a few seconds if a lock + cannot be obtained. +

      +

      +
      +
      +
      + +
      Throws: +
      DirectoryLockException - thrown if there is an exception obtaining + the lock
      +
      +
      +
      + +

      +obtainLock

      +
      +protected void obtainLock(boolean shared,
      +                          long maxWait)
      +                   throws DirectoryLockException
      +
      +
      Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained. This method may block for a few seconds if a lock cannot be + obtained. +

      +

      +
      +
      +
      +
      Parameters:
      shared - true if the lock is shared, otherwise false
      maxWait - the maximum time to wait, in seconds, while trying to + obtain the lock +
      Throws: +
      DirectoryLockException - thrown if there is an exception obtaining + the lock
      +
      +
      +
      + +

      +obtainLock

      +
      +protected void obtainLock(boolean shared)
      +                   throws DirectoryLockException
      +
      +
      Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained. This method may block for a few seconds if a lock cannot be + obtained. +

      +

      +
      +
      +
      +
      Parameters:
      shared - true if the lock is shared, otherwise false +
      Throws: +
      DirectoryLockException - thrown if there is an exception obtaining + the lock
      +
      +
      +
      + +

      +close

      +
      +public void close()
      +           throws IOException
      +
      +
      Releases any locks and closes the underlying channel. +

      +

      +
      Specified by:
      close in interface Closeable
      +
      +
      + +
      Throws: +
      IOException - if an IO Exception occurs
      +
      +
      +
      + +

      +release

      +
      +public void release()
      +
      +
      Releases the lock. Any exceptions that are thrown by the underlying lock + during the release are ignored. +

      +

      +
      +
      +
      +
      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/InvalidDirectoryException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/InvalidDirectoryException.html new file mode 100644 index 000000000..fe113b51b --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/InvalidDirectoryException.html @@ -0,0 +1,305 @@ + + + + + + + +InvalidDirectoryException (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      + +

      + +org.owasp.dependencycheck.concurrency +
      +Class InvalidDirectoryException

      +
      +java.lang.Object
      +  extended by java.lang.Throwable
      +      extended by java.lang.Exception
      +          extended by org.owasp.dependencycheck.concurrency.InvalidDirectoryException
      +
      +
      +
      All Implemented Interfaces:
      Serializable
      +
      +
      +
      +
      public class InvalidDirectoryException
      extends Exception
      + + +

      +If thrown, indicates that there is a problem with a directory. +

      + +

      +

      +
      Author:
      +
      Jeremy Long (jeremy.long@owasp.org)
      +
      See Also:
      Serialized Form
      +
      + +

      + + + + + + + + + + + + + + + + + + + + +
      +Constructor Summary
      InvalidDirectoryException() + +
      +          Constructs a new Invalid Directory Exception.
      InvalidDirectoryException(String msg) + +
      +          Constructs a new Invalid Directory Exception.
      InvalidDirectoryException(String msg, + Throwable ex) + +
      +          Constructs a new Invalid Directory Exception.
      InvalidDirectoryException(Throwable ex) + +
      +          Constructs a new Invalid Directory Exception.
      +  + + + + + + + +
      +Method Summary
      + + + + + + + +
      Methods inherited from class java.lang.Throwable
      fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      + + + + + + + +
      Methods inherited from class java.lang.Object
      clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      +  +

      + + + + + + + + +
      +Constructor Detail
      + +

      +InvalidDirectoryException

      +
      +public InvalidDirectoryException()
      +
      +
      Constructs a new Invalid Directory Exception. +

      +

      +
      + +

      +InvalidDirectoryException

      +
      +public InvalidDirectoryException(String msg)
      +
      +
      Constructs a new Invalid Directory Exception. +

      +

      +
      Parameters:
      msg - the message describing the exception
      +
      +
      + +

      +InvalidDirectoryException

      +
      +public InvalidDirectoryException(Throwable ex)
      +
      +
      Constructs a new Invalid Directory Exception. +

      +

      +
      Parameters:
      ex - the cause of the exception
      +
      +
      + +

      +InvalidDirectoryException

      +
      +public InvalidDirectoryException(String msg,
      +                                 Throwable ex)
      +
      +
      Constructs a new Invalid Directory Exception. +

      +

      +
      Parameters:
      msg - the message describing the exception
      ex - the cause of the exception
      +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/DirectoryLockException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/DirectoryLockException.html new file mode 100644 index 000000000..fdb10c461 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/DirectoryLockException.html @@ -0,0 +1,229 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.concurrency.DirectoryLockException (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.concurrency.DirectoryLockException

      +
      + + + + + + + + + +
      +Packages that use DirectoryLockException
      org.owasp.dependencycheck.concurrency + + org.owasp.dependencycheck.concurrency + + + Contains classes used to create shared and exclusive locks on directories. 
      +  +

      + + + + + +
      +Uses of DirectoryLockException in org.owasp.dependencycheck.concurrency
      +  +

      + + + + + + + + + + + + + + + + + + + + + +
      Methods in org.owasp.dependencycheck.concurrency that throw DirectoryLockException
      + voidDirectorySpinLock.obtainExclusiveLock() + +
      +          Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained.
      +protected  voidDirectorySpinLock.obtainLock(boolean shared) + +
      +          Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained.
      +protected  voidDirectorySpinLock.obtainLock(boolean shared, + long maxWait) + +
      +          Attempts to obtain a lock; an exception is thrown if the lock could not + be obtained.
      + voidDirectorySpinLock.obtainSharedLock() + +
      +          Attempts to obtain an exclusive lock; an exception is thrown if the lock + could not be obtained.
      +  +

      + + + + + + + + +
      Constructors in org.owasp.dependencycheck.concurrency that throw DirectoryLockException
      DirectorySpinLock(File directory) + +
      +          Constructs a new spin lock on the given directory.
      +  +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/DirectorySpinLock.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/DirectorySpinLock.html new file mode 100644 index 000000000..323927e1c --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/DirectorySpinLock.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.concurrency.DirectorySpinLock (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.concurrency.DirectorySpinLock

      +
      +No usage of org.owasp.dependencycheck.concurrency.DirectorySpinLock +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/InvalidDirectoryException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/InvalidDirectoryException.html new file mode 100644 index 000000000..2febc7d9a --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/class-use/InvalidDirectoryException.html @@ -0,0 +1,184 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.concurrency.InvalidDirectoryException (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.concurrency.InvalidDirectoryException

      +
      + + + + + + + + + +
      +Packages that use InvalidDirectoryException
      org.owasp.dependencycheck.concurrency + + org.owasp.dependencycheck.concurrency + + + Contains classes used to create shared and exclusive locks on directories. 
      +  +

      + + + + + +
      +Uses of InvalidDirectoryException in org.owasp.dependencycheck.concurrency
      +  +

      + + + + + + + + +
      Constructors in org.owasp.dependencycheck.concurrency that throw InvalidDirectoryException
      DirectorySpinLock(File directory) + +
      +          Constructs a new spin lock on the given directory.
      +  +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-frame.html new file mode 100644 index 000000000..74f128f5e --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-frame.html @@ -0,0 +1,46 @@ + + + + + + + +org.owasp.dependencycheck.concurrency (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + +org.owasp.dependencycheck.concurrency + + + + +
      +Classes  + +
      +DirectorySpinLock
      + + + + + + +
      +Exceptions  + +
      +DirectoryLockException +
      +InvalidDirectoryException
      + + + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-summary.html new file mode 100644 index 000000000..0d34b338c --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-summary.html @@ -0,0 +1,203 @@ + + + + + + + +org.owasp.dependencycheck.concurrency (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +

      +Package org.owasp.dependencycheck.concurrency +

      + + + org.owasp.dependencycheck.concurrency + + + Contains classes used to create shared and exclusive locks on directories. +

      +See: +
      +          Description +

      + + + + + + + + + +
      +Class Summary
      DirectorySpinLockImplements a spin lock on a given directory.
      +  + +

      + + + + + + + + + + + + + +
      +Exception Summary
      DirectoryLockExceptionIf thrown, indicates that a problem occurred when locking a directory.
      InvalidDirectoryExceptionIf thrown, indicates that there is a problem with a directory.
      +  + +

      +

      +Package org.owasp.dependencycheck.concurrency Description +

      + +

      + + + org.owasp.dependencycheck.concurrency + + + Contains classes used to create shared and exclusive locks on directories. + + +

      + +

      +

      +
      +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-tree.html new file mode 100644 index 000000000..c56322d22 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-tree.html @@ -0,0 +1,160 @@ + + + + + + + +org.owasp.dependencycheck.concurrency Class Hierarchy (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Hierarchy For Package org.owasp.dependencycheck.concurrency +

      +
      +
      +
      Package Hierarchies:
      All Packages
      +
      +

      +Class Hierarchy +

      + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-use.html new file mode 100644 index 000000000..27137df3d --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/concurrency/package-use.html @@ -0,0 +1,182 @@ + + + + + + + +Uses of Package org.owasp.dependencycheck.concurrency (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Package
      org.owasp.dependencycheck.concurrency

      +
      + + + + + + + + + +
      +Packages that use org.owasp.dependencycheck.concurrency
      org.owasp.dependencycheck.concurrency + + org.owasp.dependencycheck.concurrency + + + Contains classes used to create shared and exclusive locks on directories. 
      +  +

      + + + + + + + + + + + +
      +Classes in org.owasp.dependencycheck.concurrency used by org.owasp.dependencycheck.concurrency
      DirectoryLockException + +
      +          If thrown, indicates that a problem occurred when locking a directory.
      InvalidDirectoryException + +
      +          If thrown, indicates that there is a problem with a directory.
      +  +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/CachedWebDataSource.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/CachedWebDataSource.html index 4d0ac25bf..83247c46c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/CachedWebDataSource.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/CachedWebDataSource.html @@ -2,13 +2,13 @@ - + -CachedWebDataSource (dependency-check-core 1.0.1 API) +CachedWebDataSource (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ CachedWebDataSource (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CachedWebDataSource (dependency-check-core 1.0.1 API)"; + parent.document.title="CachedWebDataSource (Dependency-Check Core 1.0.2 API)"; } } @@ -93,7 +93,7 @@ org.owasp.dependencycheck.data
      Interface CachedWebDataSource
      -
      All Known Implementing Classes:
      DatabaseUpdater
      +
      All Known Implementing Classes:
      DatabaseUpdater

      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateException.html index a1d5224c3..3cf591cfc 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateException.html @@ -2,13 +2,13 @@ - + -UpdateException (dependency-check-core 1.0.1 API) +UpdateException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ UpdateException (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="UpdateException (dependency-check-core 1.0.1 API)"; + parent.document.title="UpdateException (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateService.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateService.html index 54e28c83e..9dc7c5030 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateService.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/UpdateService.html @@ -2,13 +2,13 @@ - + -UpdateService (dependency-check-core 1.0.1 API) +UpdateService (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ UpdateService (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="UpdateService (dependency-check-core 1.0.1 API)"; + parent.document.title="UpdateService (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/CachedWebDataSource.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/CachedWebDataSource.html index f0f487a68..0745b9703 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/CachedWebDataSource.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/CachedWebDataSource.html @@ -2,13 +2,13 @@ - + -Uses of Interface org.owasp.dependencycheck.data.CachedWebDataSource (dependency-check-core 1.0.1 API) +Uses of Interface org.owasp.dependencycheck.data.CachedWebDataSource (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Interface org.owasp.dependencycheck.data.CachedWebDataSource (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Interface org.owasp.dependencycheck.data.CachedWebDataSource (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Interface org.owasp.dependencycheck.data.CachedWebDataSource (Dependency-Check Core 1.0.2 API)"; } } @@ -100,7 +100,7 @@ Packages that use -org.owasp.dependencycheck.data.nvdcve.xml +org.owasp.dependencycheck.data.update org.owasp.dependencycheck.data.nvdcve.xml @@ -136,11 +136,11 @@ Uses of + +Uses of CachedWebDataSource in org.owasp.dependencycheck.data.update
      -Uses of CachedWebDataSource in org.owasp.dependencycheck.data.nvdcve.xml
        @@ -148,15 +148,15 @@ Uses of -Classes in org.owasp.dependencycheck.data.nvdcve.xml that implement CachedWebDataSource +Classes in org.owasp.dependencycheck.data.update that implement CachedWebDataSource  class -DatabaseUpdater +DatabaseUpdater
      -            +          Class responsible for updating the CPE and NVDCVE data stores.   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateException.html index 0ef49b728..c773c1f64 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateException.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.data.UpdateException (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.data.UpdateException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.data.UpdateException (dependency-check-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.data.UpdateException (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.data.UpdateException (Dependency-Check Core 1.0.2 API)"; } } @@ -100,7 +100,7 @@ Packages that use -org.owasp.dependencycheck.data.nvdcve.xml +org.owasp.dependencycheck.data.update org.owasp.dependencycheck.data.nvdcve.xml @@ -137,11 +137,11 @@ Uses of + +Uses of UpdateException in org.owasp.dependencycheck.data.update
      -Uses of UpdateException in org.owasp.dependencycheck.data.nvdcve.xml
        @@ -149,25 +149,26 @@ Uses of -Methods in org.owasp.dependencycheck.data.nvdcve.xml that throw UpdateException +Methods in org.owasp.dependencycheck.data.update that throw UpdateException  void -DatabaseUpdater.update() +DataStoreMetaInfo.save(NvdCveInfo updatedValue) + +
      +          Writes a properties file containing the last updated date to the + VULNERABLE_CPE directory. + + + + void +DatabaseUpdater.update()
                Downloads the latest NVD CVE XML file from the web and imports it into the current CVE Database. - - - Map<String,DatabaseUpdater.NvdCveUrl> -DatabaseUpdater.updateNeeded() - -
      -          Determines if the index needs to be updated. -  

      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateService.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateService.html index 038ca4701..346445d0f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateService.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/class-use/UpdateService.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.data.UpdateService (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.data.UpdateService (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.data.UpdateService (dependency-check-cor function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.data.UpdateService (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.data.UpdateService (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/BaseIndex.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/BaseIndex.html new file mode 100644 index 000000000..92e32e9c5 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/BaseIndex.html @@ -0,0 +1,386 @@ + + + + + + + +BaseIndex (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +


      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      + +

      + +org.owasp.dependencycheck.data.cpe +
      +Class BaseIndex

      +
      +java.lang.Object
      +  extended by org.owasp.dependencycheck.data.cpe.BaseIndex
      +
      +
      +
      Direct Known Subclasses:
      CpeIndexReader, CpeIndexWriter
      +
      +
      +
      +
      public abstract class BaseIndex
      extends Object
      + + +

      +The Base Index class used to access the CPE Index. +

      + +

      +

      +
      Author:
      +
      Jeremy Long (jeremy.long@owasp.org)
      +
      +
      + +

      + + + + + + + + + + + +
      +Constructor Summary
      BaseIndex() + +
      +           
      +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +Method Summary
      + voidclose() + +
      +          Closes the CPE Index.
      +static FilegetDataDirectory() + +
      +          Retrieves the directory that the JAR file exists in so that we can ensure + we always use a common data directory.
      + org.apache.lucene.store.DirectorygetDirectory() + +
      +          Gets the directory.
      + booleanisOpen() + +
      +          Returns the status of the data source - is the index open.
      + voidopen() + +
      +          Opens the CPE Index.
      +protected  org.apache.lucene.store.DirectoryopenDirectory() + +
      +          Returns the Lucene directory object for the CPE Index.
      + + + + + + + +
      Methods inherited from class java.lang.Object
      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +  +

      + + + + + + + + +
      +Constructor Detail
      + +

      +BaseIndex

      +
      +public BaseIndex()
      +
      +
      + + + + + + + + +
      +Method Detail
      + +

      +getDirectory

      +
      +public org.apache.lucene.store.Directory getDirectory()
      +
      +
      Gets the directory. +

      +

      + +
      Returns:
      the directory
      +
      +
      +
      + +

      +open

      +
      +public void open()
      +          throws IOException
      +
      +
      Opens the CPE Index. +

      +

      + +
      Throws: +
      IOException - is thrown if an IOException occurs opening the index.
      +
      +
      +
      + +

      +close

      +
      +public void close()
      +
      +
      Closes the CPE Index. +

      +

      +
      +
      +
      +
      + +

      +isOpen

      +
      +public boolean isOpen()
      +
      +
      Returns the status of the data source - is the index open. +

      +

      + +
      Returns:
      true or false.
      +
      +
      +
      + +

      +openDirectory

      +
      +protected org.apache.lucene.store.Directory openDirectory()
      +                                                   throws IOException
      +
      +
      Returns the Lucene directory object for the CPE Index. +

      +

      + +
      Returns:
      the Lucene Directory object for the CPE Index. +
      Throws: +
      IOException - is thrown if an IOException occurs.
      +
      +
      +
      + +

      +getDataDirectory

      +
      +public static File getDataDirectory()
      +                             throws IOException
      +
      +
      Retrieves the directory that the JAR file exists in so that we can ensure + we always use a common data directory. +

      +

      + +
      Returns:
      the data directory for this index. +
      Throws: +
      IOException - is thrown if an IOException occurs of course...
      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/CpeIndexReader.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/CpeIndexReader.html new file mode 100644 index 000000000..390946bb8 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/CpeIndexReader.html @@ -0,0 +1,383 @@ + + + + + + + +CpeIndexReader (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      + +

      + +org.owasp.dependencycheck.data.cpe +
      +Class CpeIndexReader

      +
      +java.lang.Object
      +  extended by org.owasp.dependencycheck.data.cpe.BaseIndex
      +      extended by org.owasp.dependencycheck.data.cpe.CpeIndexReader
      +
      +
      +
      +
      public class CpeIndexReader
      extends BaseIndex
      + + +

      +

      +
      Author:
      +
      Jeremy Long (jeremy.long@owasp.org)
      +
      +
      + +

      + + + + + + + + + + + +
      +Constructor Summary
      CpeIndexReader() + +
      +           
      +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +Method Summary
      + voidclose() + +
      +          Closes the CPE Index.
      + org.apache.lucene.document.DocumentgetDocument(int documentId) + +
      +          Retrieves a document from the Index.
      + voidopen() + +
      +          Opens the CPE Index.
      + org.apache.lucene.search.TopDocssearch(org.apache.lucene.search.Query query, + int maxQueryResults) + +
      +          Searches the index using the given query.
      + org.apache.lucene.search.TopDocssearch(String searchString, + int maxQueryResults) + +
      +          Searches the index using the given search string.
      + + + + + + + +
      Methods inherited from class org.owasp.dependencycheck.data.cpe.BaseIndex
      getDataDirectory, getDirectory, isOpen, openDirectory
      + + + + + + + +
      Methods inherited from class java.lang.Object
      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +  +

      + + + + + + + + +
      +Constructor Detail
      + +

      +CpeIndexReader

      +
      +public CpeIndexReader()
      +
      +
      + + + + + + + + +
      +Method Detail
      + +

      +open

      +
      +public void open()
      +          throws IOException
      +
      +
      Opens the CPE Index. +

      +

      +
      Overrides:
      open in class BaseIndex
      +
      +
      + +
      Throws: +
      IOException - is thrown if an IOException occurs opening the index.
      +
      +
      +
      + +

      +close

      +
      +public void close()
      +
      +
      Closes the CPE Index. +

      +

      +
      Overrides:
      close in class BaseIndex
      +
      +
      +
      +
      +
      +
      + +

      +search

      +
      +public org.apache.lucene.search.TopDocs search(String searchString,
      +                                               int maxQueryResults)
      +                                        throws org.apache.lucene.queryparser.classic.ParseException,
      +                                               IOException
      +
      +
      Searches the index using the given search string. +

      +

      +
      Parameters:
      searchString - the query text
      maxQueryResults - the maximum number of documents to return +
      Returns:
      the TopDocs found by the search +
      Throws: +
      org.apache.lucene.queryparser.classic.ParseException - thrown when the searchString is invalid +
      IOException - is thrown if there is an issue with the underlying + Index
      +
      +
      +
      + +

      +search

      +
      +public org.apache.lucene.search.TopDocs search(org.apache.lucene.search.Query query,
      +                                               int maxQueryResults)
      +                                        throws org.apache.lucene.index.CorruptIndexException,
      +                                               IOException
      +
      +
      Searches the index using the given query. +

      +

      +
      Parameters:
      query - the query used to search the index
      maxQueryResults - the max number of results to return +
      Returns:
      the TopDocs found be the query +
      Throws: +
      org.apache.lucene.index.CorruptIndexException - thrown if the Index is corrupt +
      IOException - thrown if there is an IOException
      +
      +
      +
      + +

      +getDocument

      +
      +public org.apache.lucene.document.Document getDocument(int documentId)
      +                                                throws IOException
      +
      +
      Retrieves a document from the Index. +

      +

      +
      Parameters:
      documentId - the id of the document to retrieve +
      Returns:
      the Document +
      Throws: +
      IOException - thrown if there is an IOException
      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.html new file mode 100644 index 000000000..e53f43af8 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.html @@ -0,0 +1,346 @@ + + + + + + + +CpeIndexWriter (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      + +

      + +org.owasp.dependencycheck.data.cpe +
      +Class CpeIndexWriter

      +
      +java.lang.Object
      +  extended by org.owasp.dependencycheck.data.cpe.BaseIndex
      +      extended by org.owasp.dependencycheck.data.cpe.CpeIndexWriter
      +
      +
      +
      +
      public class CpeIndexWriter
      extends BaseIndex
      + + +

      +

      +
      Author:
      +
      Jeremy Long (jeremy.long@owasp.org)
      +
      +
      + +

      + + + + + + + + + + + +
      +Constructor Summary
      CpeIndexWriter() + +
      +           
      +  + + + + + + + + + + + + + + + + + + + + + + + +
      +Method Summary
      + voidclose() + +
      +          Closes the CPE Index.
      + voidcommit() + +
      +          Commits any pending changes.
      + voidopen() + +
      +          Opens the CPE Index.
      + voidsaveEntry(IndexEntry entry) + +
      +          Saves a CPE IndexEntry into the Lucene index.
      + + + + + + + +
      Methods inherited from class org.owasp.dependencycheck.data.cpe.BaseIndex
      getDataDirectory, getDirectory, isOpen, openDirectory
      + + + + + + + +
      Methods inherited from class java.lang.Object
      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +  +

      + + + + + + + + +
      +Constructor Detail
      + +

      +CpeIndexWriter

      +
      +public CpeIndexWriter()
      +
      +
      + + + + + + + + +
      +Method Detail
      + +

      +open

      +
      +public void open()
      +          throws IOException
      +
      +
      Opens the CPE Index. +

      +

      +
      Overrides:
      open in class BaseIndex
      +
      +
      + +
      Throws: +
      IOException - is thrown if an IOException occurs opening the index.
      +
      +
      +
      + +

      +close

      +
      +public void close()
      +
      +
      Closes the CPE Index. +

      +

      +
      Overrides:
      close in class BaseIndex
      +
      +
      +
      +
      +
      +
      + +

      +commit

      +
      +public void commit()
      +
      +
      Commits any pending changes. +

      +

      +
      +
      +
      +
      + +

      +saveEntry

      +
      +public void saveEntry(IndexEntry entry)
      +               throws org.apache.lucene.index.CorruptIndexException,
      +                      IOException
      +
      +
      Saves a CPE IndexEntry into the Lucene index. +

      +

      +
      Parameters:
      entry - a CPE entry. +
      Throws: +
      org.apache.lucene.index.CorruptIndexException - is thrown if the index is corrupt. +
      IOException - is thrown if an IOException occurs.
      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/Fields.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/Fields.html index 83e95947b..37a931cba 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/Fields.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/Fields.html @@ -2,13 +2,13 @@ - + -Fields (dependency-check-core 1.0.1 API) +Fields (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Fields (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Fields (dependency-check-core 1.0.1 API)"; + parent.document.title="Fields (Dependency-Check Core 1.0.2 API)"; } } @@ -56,8 +56,8 @@ function windowTitle() PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS FRAMES    NO FRAMES   @@ -277,8 +277,8 @@ public Fields() PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS FRAMES    NO FRAMES   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/IndexEntry.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/IndexEntry.html index 5f8e74c23..da45e77c9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/IndexEntry.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/IndexEntry.html @@ -2,13 +2,13 @@ - + -IndexEntry (dependency-check-core 1.0.1 API) +IndexEntry (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ IndexEntry (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="IndexEntry (dependency-check-core 1.0.1 API)"; + parent.document.title="IndexEntry (Dependency-Check Core 1.0.2 API)"; } } @@ -56,7 +56,7 @@ function windowTitle() PREV CLASS  + PREV CLASS   NEXT CLASS FRAMES   @@ -515,7 +515,7 @@ public PREV CLASS  + PREV CLASS   NEXT CLASS FRAMES   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/BaseIndex.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/BaseIndex.html new file mode 100644 index 000000000..edef2ebab --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/BaseIndex.html @@ -0,0 +1,194 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.cpe.BaseIndex (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.cpe.BaseIndex

      +
      + + + + + + + + + +
      +Packages that use BaseIndex
      org.owasp.dependencycheck.data.cpe + + org.owasp.dependencycheck.data.cpe + + + Contains classes for working with the CPE Lucene Index. 
      +  +

      + + + + + +
      +Uses of BaseIndex in org.owasp.dependencycheck.data.cpe
      +  +

      + + + + + + + + + + + + + +
      Subclasses of BaseIndex in org.owasp.dependencycheck.data.cpe
      + classCpeIndexReader + +
      +           
      + classCpeIndexWriter + +
      +           
      +  +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/CpeIndexReader.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/CpeIndexReader.html new file mode 100644 index 000000000..dbe8b7650 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/CpeIndexReader.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.cpe.CpeIndexReader (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.cpe.CpeIndexReader

      +
      +No usage of org.owasp.dependencycheck.data.cpe.CpeIndexReader +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/CpeIndexWriter.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/CpeIndexWriter.html new file mode 100644 index 000000000..b8275f75e --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/CpeIndexWriter.html @@ -0,0 +1,186 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.cpe.CpeIndexWriter (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.cpe.CpeIndexWriter

      +
      + + + + + + + + + +
      +Packages that use CpeIndexWriter
      org.owasp.dependencycheck.data.nvdcve + + org.owasp.dependencycheck.data.nvdcve + + + Contains classes used to work with the NVD CVE data. 
      +  +

      + + + + + +
      +Uses of CpeIndexWriter in org.owasp.dependencycheck.data.nvdcve
      +  +

      + + + + + + + + + +
      Methods in org.owasp.dependencycheck.data.nvdcve with parameters of type CpeIndexWriter
      + voidNvdCve20Handler.setCpeIndex(CpeIndexWriter index) + +
      +          Sets the cpe index writer.
      +  +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/Fields.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/Fields.html index b2e43a535..c0b6148cc 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/Fields.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/Fields.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.data.cpe.Fields (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.data.cpe.Fields (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.data.cpe.Fields (dependency-check-core 1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.data.cpe.Fields (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.data.cpe.Fields (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/IndexEntry.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/IndexEntry.html index 2a7c4f913..d330d97e3 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/IndexEntry.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/class-use/IndexEntry.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.data.cpe.IndexEntry (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.data.cpe.IndexEntry (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.data.cpe.IndexEntry (dependency-check-co function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.data.cpe.IndexEntry (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.data.cpe.IndexEntry (Dependency-Check Core 1.0.2 API)"; } } @@ -91,6 +91,16 @@ function windowTitle() Packages that use IndexEntry
      +org.owasp.dependencycheck.analyzer + + + org.owasp.dependencycheck.analyzer + + + Analyzers are used to inspect the identified dependencies, collect Evidence, + and process the dependencies.  + + org.owasp.dependencycheck.data.cpe @@ -111,6 +121,35 @@ Packages that use + + + + +
      +Uses of IndexEntry in org.owasp.dependencycheck.analyzer
      +  +

      + + + + + + + + + +
      Methods in org.owasp.dependencycheck.analyzer that return types with arguments of type IndexEntry
      +protected  List<IndexEntry>CPEAnalyzer.searchCPE(String vendor, + String product, + Set<String> vendorWeightings, + Set<String> productWeightings) + +
      +          Searches the Lucene CPE index to identify possible CPE entries + associated with the supplied vendor, product, and version.
      +  +

      @@ -121,42 +160,14 @@ Uses of - - - - - - - -
      Methods in org.owasp.dependencycheck.data.cpe that return types with arguments of type IndexEntry
      -protected  List<IndexEntry>CPEAnalyzer.searchCPE(String vendor, - String product, - Set<String> vendorWeightings, - Set<String> productWeightings) - -
      -          Searches the Lucene CPE index to identify possible CPE entries - associated with the supplied vendor, product, and version.
      -  -

      - - - - - - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-frame.html index 5969c683a..2cc92fc4b 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.cpe (Dependency-Check Core 1.0.2 API) - + @@ -24,12 +24,14 @@ org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 API) Classes 
      -CPEAnalyzer +BaseIndex +
      +CpeIndexReader +
      +CpeIndexWriter
      Fields
      -Index -
      IndexEntry
      Methods in org.owasp.dependencycheck.data.cpe with parameters of type IndexEntry
      -protected  org.apache.lucene.document.DocumentIndex.convertEntryToDoc(IndexEntry entry) - -
      -          Converts a CPE entry into a Lucene Document.
       voidIndex.saveEntry(IndexEntry entry) +CpeIndexWriter.saveEntry(IndexEntry entry)
                Saves a CPE IndexEntry into the Lucene index.
      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-summary.html index a50fcc30f..35df0975c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.cpe (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data.cpe (Dependency-Check Core 1.0.2 API)"; } } @@ -101,9 +101,16 @@ Package org.owasp.dependencycheck.data.cpe Class Summary
      -CPEAnalyzer -CPEAnalyzer is a utility class that takes a project dependency and attempts - to discern if there is an associated CPE. +BaseIndex +The Base Index class used to access the CPE Index. + + +CpeIndexReader +  + + +CpeIndexWriterFields @@ -111,10 +118,6 @@ Package org.owasp.dependencycheck.data.cpe entries. -Index -The Index class is used to utilize and maintain the CPE Index. - - IndexEntry A CPE entry containing the name, vendor, product, and version. diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-tree.html index 199c275f7..214dece70 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.cpe Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.cpe Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data.cpe Class Hierarchy (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data.cpe Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data.cpe Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } @@ -93,9 +93,8 @@ Class Hierarchy

      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-use.html index 1757344d6..154bda7cd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cpe/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.data.cpe (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.data.cpe (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.data.cpe (Dependency-Check Core 1.0.2 API)"; } } @@ -91,6 +91,16 @@ function windowTitle() Packages that use org.owasp.dependencycheck.data.cpe
      +org.owasp.dependencycheck.analyzer + + + org.owasp.dependencycheck.analyzer + + + Analyzers are used to inspect the identified dependencies, collect Evidence, + and process the dependencies.  + + org.owasp.dependencycheck.data.cpe @@ -100,6 +110,15 @@ Packages that use +org.owasp.dependencycheck.data.nvdcve + + + org.owasp.dependencycheck.data.nvdcve + + + Contains classes used to work with the NVD CVE data.  + + org.owasp.dependencycheck.dependency @@ -111,6 +130,21 @@ Packages that use + + + + + + + +
      +Classes in org.owasp.dependencycheck.data.cpe used by org.owasp.dependencycheck.analyzer
      IndexEntry + +
      +          A CPE entry containing the name, vendor, product, and version.
      +  +

      @@ -118,6 +152,12 @@ Packages that use org.owasp.dependencycheck.data.cpe used by org.owasp.dependencycheck.data.cpe + + + - + - + + + + @@ -177,14 +178,6 @@ Uses of - - - - - - -
      BaseIndex + +
      +          The Base Index class used to access the CPE Index.
      IndexEntry
      @@ -126,6 +166,21 @@ Classes in + + + + + + + +
      +Classes in org.owasp.dependencycheck.data.cpe used by org.owasp.dependencycheck.data.nvdcve
      CpeIndexWriter + +
      +           
      +  +

      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweDB.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweDB.html index 9e4b9b9f6..34b485c47 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweDB.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweDB.html @@ -2,13 +2,13 @@ - + -CweDB (dependency-check-core 1.0.1 API) +CweDB (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ CweDB (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CweDB (dependency-check-core 1.0.1 API)"; + parent.document.title="CweDB (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweHandler.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweHandler.html index e8b43ab47..acb18a619 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweHandler.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/CweHandler.html @@ -2,13 +2,13 @@ - + -CweHandler (dependency-check-core 1.0.1 API) +CweHandler (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ CweHandler (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CweHandler (dependency-check-core 1.0.1 API)"; + parent.document.title="CweHandler (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweDB.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweDB.html index 335cb4ea0..bf254db63 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweDB.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweDB.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.data.cwe.CweDB (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.data.cwe.CweDB (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.data.cwe.CweDB (dependency-check-core 1. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.data.cwe.CweDB (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.data.cwe.CweDB (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweHandler.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweHandler.html index cee3e1dc8..7b821bb3d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweHandler.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/class-use/CweHandler.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.data.cwe.CweHandler (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.data.cwe.CweHandler (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.data.cwe.CweHandler (dependency-check-co function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.data.cwe.CweHandler (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.data.cwe.CweHandler (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-frame.html index 7f5f4b4f3..263bfa963 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.cwe (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.cwe (Dependency-Check Core 1.0.2 API) - + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-summary.html index fdcba8597..f165c5811 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.cwe (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.cwe (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data.cwe (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data.cwe (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data.cwe (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-tree.html index f55286679..e323ca8dc 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.cwe Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.cwe Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data.cwe Class Hierarchy (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data.cwe Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data.cwe Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-use.html index 3fb0439d2..a6f18bc3d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/cwe/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.data.cwe (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.data.cwe (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.data.cwe (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.data.cwe (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.data.cwe (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/AbstractTokenizingFilter.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/AbstractTokenizingFilter.html index 1d7024b77..8608f20be 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/AbstractTokenizingFilter.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/AbstractTokenizingFilter.html @@ -2,13 +2,13 @@ - + -AbstractTokenizingFilter (dependency-check-core 1.0.1 API) +AbstractTokenizingFilter (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ AbstractTokenizingFilter (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="AbstractTokenizingFilter (dependency-check-core 1.0.1 API)"; + parent.document.title="AbstractTokenizingFilter (Dependency-Check Core 1.0.2 API)"; } } @@ -56,7 +56,7 @@ function windowTitle() - - - - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-tree.html index 30ce4fec0..2ec4a18b4 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.lucene Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.lucene Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data.lucene Class Hierarchy (dependency-check-core 1.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data.lucene Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data.lucene Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } @@ -93,7 +93,7 @@ Class Hierarchy
      • java.lang.Object
          -
        • org.owasp.dependencycheck.data.lucene.AbstractIndex
        • org.apache.lucene.analysis.Analyzer (implements java.io.Closeable) +
        • org.apache.lucene.analysis.Analyzer (implements java.io.Closeable)
        • org.apache.lucene.util.AttributeSource
            diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-use.html index 6847356e6..663b34db7 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/lucene/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.data.lucene (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.data.lucene (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.data.lucene (dependency-check-core 1.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.data.lucene (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.data.lucene (Dependency-Check Core 1.0.2 API)"; } } @@ -91,15 +91,6 @@ function windowTitle() Packages that use org.owasp.dependencycheck.data.lucene
      - - - - - + - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/DatabaseException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/DatabaseException.html index f794e3d3d..8133895c4 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/DatabaseException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/DatabaseException.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.data.nvdcve.DatabaseException (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.data.nvdcve.DatabaseException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.data.nvdcve.DatabaseException (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.data.nvdcve.DatabaseException (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.data.nvdcve.DatabaseException (Dependency-Check Core 1.0.2 API)"; } } @@ -91,13 +91,14 @@ function windowTitle() Packages that use DatabaseException - + + Analyzers are used to inspect the identified dependencies, collect Evidence, + and process the dependencies.  @@ -108,22 +109,14 @@ Packages that use - - -
      AbstractIndexThe base Index for other index objects.
      AbstractTokenizingFilter An abstract tokenizing filter that can be used as the base for a tokenizing filter.
      org.owasp.dependencycheck.data.cpe - - org.owasp.dependencycheck.data.cpe - - - Contains classes for working with the CPE Lucene Index. 
      org.owasp.dependencycheck.data.lucene @@ -111,21 +102,6 @@ Packages that use - - - - - - - -
      -Classes in org.owasp.dependencycheck.data.lucene used by org.owasp.dependencycheck.data.cpe
      AbstractIndex - -
      -          The base Index for other index objects.
      -  -

      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/CveDB.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/CveDB.html index 2f7da6b4b..d9ebd3333 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/CveDB.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/CveDB.html @@ -2,13 +2,13 @@ - + -CveDB (dependency-check-core 1.0.1 API) +CveDB (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ CveDB (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CveDB (dependency-check-core 1.0.1 API)"; + parent.document.title="CveDB (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/DatabaseException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/DatabaseException.html index d33e9a9d0..469777949 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/DatabaseException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/DatabaseException.html @@ -2,13 +2,13 @@ - + -DatabaseException (dependency-check-core 1.0.1 API) +DatabaseException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DatabaseException (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DatabaseException (dependency-check-core 1.0.1 API)"; + parent.document.title="DatabaseException (Dependency-Check Core 1.0.2 API)"; } } @@ -57,7 +57,7 @@ function windowTitle() + NEXT CLASSNEXT CLASS - + + + Contains classes used to work with the NVD CVE data. 
      org.owasp.dependencycheck.data.nvdcve.xmlorg.owasp.dependencycheck.data.nvdcve - org.owasp.dependencycheck.data.nvdcve.xml + org.owasp.dependencycheck.data.nvdcve -  
       

      - + +Uses of CveDB in org.owasp.dependencycheck.data.nvdcve
      -Uses of CveDB in org.owasp.dependencycheck.data.nvdcve.xml
        @@ -113,12 +114,12 @@ Uses of

      Methods in org.owasp.dependencycheck.data.nvdcve.xml with parameters of type CveDBMethods in org.owasp.dependencycheck.data.nvdcve with parameters of type CveDB
       voidNvdCve20Handler.setCveDB(CveDB db) +NvdCve20Handler.setCveDB(CveDB db)
                Sets the cveDB.
      org.owasp.dependencycheck.data.cpeorg.owasp.dependencycheck.analyzer - org.owasp.dependencycheck.data.cpe + org.owasp.dependencycheck.analyzer - Contains classes for working with the CPE Lucene Index. 
      org.owasp.dependencycheck.data.nvdcveorg.owasp.dependencycheck.data.nvdcve.xml - - org.owasp.dependencycheck.data.nvdcve.xml - -  
       

      - + +Uses of DatabaseException in org.owasp.dependencycheck.analyzer
      -Uses of DatabaseException in org.owasp.dependencycheck.data.cpe
        @@ -131,12 +124,20 @@ Uses of

      Methods in org.owasp.dependencycheck.data.cpe that throw DatabaseExceptionMethods in org.owasp.dependencycheck.analyzer that throw DatabaseException
       voidCPEAnalyzer.open() +NvdCveAnalyzer.open() + +
      +          Opens the data source.
      + voidCPEAnalyzer.open()
                Opens the data source.
       voidNvdCveAnalyzer.open() - -
      -          Opens the data source.
      - void CveDB.open()
      @@ -193,35 +186,18 @@ Uses of
       voidCveDB.updateVulnerability(Vulnerability vuln) +NvdCve20Handler.saveEntry(Vulnerability vuln)
      -          Updates the vulnerability within the database.
      -  -

      - - - - - -
      -Uses of DatabaseException in org.owasp.dependencycheck.data.nvdcve.xml
      -  -

      - - - - +          Saves a vulnerability to the CVE Database. - +          Updates the vulnerability within the database.
      Methods in org.owasp.dependencycheck.data.nvdcve.xml that throw DatabaseException
       voidNvdCve20Handler.saveEntry(Vulnerability vuln) +CveDB.updateVulnerability(Vulnerability vuln)
      -          Saves a vulnerability to the CVE Database.
        diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/InvalidDataException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/InvalidDataException.html new file mode 100644 index 000000000..2215f30bd --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/InvalidDataException.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.nvdcve.InvalidDataException (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.nvdcve.InvalidDataException

      +
      +No usage of org.owasp.dependencycheck.data.nvdcve.InvalidDataException +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve12Handler.Element.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve12Handler.Element.html new file mode 100644 index 000000000..3e3e9095a --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve12Handler.Element.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element

      +
      +No usage of org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve12Handler.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve12Handler.html new file mode 100644 index 000000000..412707d75 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve12Handler.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler

      +
      +No usage of org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve20Handler.Element.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve20Handler.Element.html new file mode 100644 index 000000000..c1d439870 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve20Handler.Element.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element

      +
      +No usage of org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve20Handler.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve20Handler.html new file mode 100644 index 000000000..c36fb461f --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/class-use/NvdCve20Handler.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +

      +Uses of Class
      org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler

      +
      +No usage of org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler +

      +


      + + + + + + + + + + + + + + + +
      + +
      + + + +
      +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-frame.html index dd791aff3..58369e415 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.nvdcve (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.nvdcve (Dependency-Check Core 1.0.2 API) - + @@ -26,7 +26,13 @@ Classes 
      CveDB
      -NvdCveAnalyzer +NvdCve12Handler +
      +NvdCve12Handler.Element +
      +NvdCve20Handler +
      +NvdCve20Handler.Element @@ -37,7 +43,9 @@ Classes  Exceptions 
      -DatabaseException
      +DatabaseException +
      +InvalidDataException diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-summary.html index 9c0776853..1bd58ff3e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.nvdcve (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.nvdcve (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data.nvdcve (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data.nvdcve (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data.nvdcve (Dependency-Check Core 1.0.2 API)"; } } @@ -57,7 +57,7 @@ function windowTitle()  PREV PACKAGE  - NEXT PACKAGENEXT PACKAGE FRAMES    NO FRAMES   @@ -105,9 +105,22 @@ Package org.owasp.dependencycheck.data.nvdcve The database holding information about the NVD CVE data. -NvdCveAnalyzer -NvdCveAnalyzer is a utility class that takes a project dependency and - attempts to discern if there is an associated CVEs. +NvdCve12Handler +A SAX Handler that will parse the NVD CVE XML (schema version 1.2). + + +NvdCve12Handler.Element +A simple class to maintain information about the current element while + parsing the NVD CVE XML. + + +NvdCve20Handler +A SAX Handler that will parse the NVD CVE XML (schema version 2.0). + + +NvdCve20Handler.Element +A simple class to maintain information about the current element while + parsing the NVD CVE XML.   @@ -123,6 +136,11 @@ Package org.owasp.dependencycheck.data.nvdcve DatabaseException An exception thrown if an operation against the database fails. + +InvalidDataException +An InvalidDataDataException is a generic exception used when trying to load + the nvd cve meta data. +   @@ -176,7 +194,7 @@ Package org.owasp.dependencycheck.data.nvdcve Description  PREV PACKAGE  - NEXT PACKAGENEXT PACKAGE FRAMES    NO FRAMES   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-tree.html index 8b8969dc3..91cf6c215 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data.nvdcve Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data.nvdcve Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data.nvdcve Class Hierarchy (dependency-check-core 1.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data.nvdcve Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data.nvdcve Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } @@ -57,7 +57,7 @@ function windowTitle()  PREV  - NEXTNEXT FRAMES    NO FRAMES   @@ -93,11 +93,13 @@ Class Hierarchy
    @@ -132,7 +134,7 @@ Class Hierarchy  PREV  - NEXTNEXT FRAMES    NO FRAMES   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-use.html index c20982c81..60c399ccd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/nvdcve/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.data.nvdcve (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.data.nvdcve (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.data.nvdcve (dependency-check-core 1.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.data.nvdcve (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.data.nvdcve (Dependency-Check Core 1.0.2 API)"; } } @@ -91,13 +91,14 @@ function windowTitle() Packages that use org.owasp.dependencycheck.data.nvdcve -org.owasp.dependencycheck.data.cpe +org.owasp.dependencycheck.analyzer - org.owasp.dependencycheck.data.cpe + org.owasp.dependencycheck.analyzer - Contains classes for working with the CPE Lucene Index.  + Analyzers are used to inspect the identified dependencies, collect Evidence, + and process the dependencies.  org.owasp.dependencycheck.data.nvdcve @@ -108,25 +109,17 @@ Packages that use -org.owasp.dependencycheck.data.nvdcve.xml - - - org.owasp.dependencycheck.data.nvdcve.xml - -   -  

    - + +Classes in org.owasp.dependencycheck.data.nvdcve used by org.owasp.dependencycheck.analyzer - @@ -141,28 +134,13 @@ Classes in org.owasp.dependencycheck.data.nvdcve used by org.owasp.dependencycheck.data.nvdcve - - -
    -Classes in org.owasp.dependencycheck.data.nvdcve used by org.owasp.dependencycheck.data.cpe
    DatabaseException +DatabaseException
              An exception thrown if an operation against the database fails.
    DatabaseException - -
    -          An exception thrown if an operation against the database fails.
    -  -

    - - - - - - - - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-frame.html index 8d424d711..7b6aef3d9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data (Dependency-Check Core 1.0.2 API) - + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-summary.html index 853d6829d..a9e51899a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.data (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.data (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.data (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.data (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.data (Dependency-Check Core 1.0.2 API)"; } } @@ -56,7 +56,7 @@ function windowTitle() + - - - - - - - + + + + + + + + + + + + - - -
    -Classes in org.owasp.dependencycheck.data.nvdcve used by org.owasp.dependencycheck.data.nvdcve.xml
    CveDB +CveDB
              The database holding information about the NVD CVE data.
    DatabaseException +DatabaseException
              An exception thrown if an operation against the database fails.
    org.owasp.dependencycheck.data.nvdcve.xmlorg.owasp.dependencycheck.data.update org.owasp.dependencycheck.data.nvdcve.xml @@ -137,20 +137,20 @@ Classes in + +Classes in org.owasp.dependencycheck.data used by org.owasp.dependencycheck.data.update - - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html new file mode 100644 index 000000000..9328e738d --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html @@ -0,0 +1,505 @@ + + + + + + + +DataStoreMetaInfo (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + +
    -Classes in org.owasp.dependencycheck.data used by org.owasp.dependencycheck.data.nvdcve.xml
    CachedWebDataSource +CachedWebDataSource
              Defines an Index who's data is retrieved from the Internet.
    UpdateException +UpdateException
              An exception used when an error occurs reading a setting.
    + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.owasp.dependencycheck.data.update +
    +Class DataStoreMetaInfo

    +
    +java.lang.Object
    +  extended by org.owasp.dependencycheck.data.update.DataStoreMetaInfo
    +
    +
    +
    +
    public class DataStoreMetaInfo
    extends Object
    + + +

    +

    +
    Author:
    +
    Jeremy Long (jeremy.long@owasp.org)
    +
    +
    + +

    + + + + + + + + + + + + + + + + + + + + + + + +
    +Field Summary
    +static StringBATCH + +
    +          Batch key word, used as key to store information about batch mode.
    +static StringLAST_UPDATED + +
    +          The properties file key for the last updated field - used to store the + last updated time of the Modified NVD CVE xml file.
    +static StringLAST_UPDATED_BASE + +
    +          Stores the last updated time for each of the NVD CVE files.
    +static StringMODIFIED + +
    +          Modified key word, used as a key to store information about the modified + file (i.e.
    +  + + + + + + + + + + +
    +Constructor Summary
    DataStoreMetaInfo() + +
    +          Constructs a new data properties object.
    +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Method Summary
    +static FilegetPropertiesFile() + +
    +          Retrieves the properties file.
    + StringgetProperty(String key) + +
    +          Returns the property value for the given key.
    + StringgetProperty(String key, + String defaultValue) + +
    +          Returns the property value for the given key.
    +protected  booleanisBatchUpdateMode() + +
    +          Get the value of batchUpdateMode.
    + booleanisEmpty() + +
    +          Returns whether or not any properties are set.
    + voidsave(NvdCveInfo updatedValue) + +
    +          Writes a properties file containing the last updated date to the + VULNERABLE_CPE directory.
    +protected  voidsetBatchUpdateMode(boolean batchUpdateMode) + +
    +          Set the value of batchUpdateMode.
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +  +

    + + + + + + + + +
    +Field Detail
    + +

    +BATCH

    +
    +public static final String BATCH
    +
    +
    Batch key word, used as key to store information about batch mode. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +MODIFIED

    +
    +public static final String MODIFIED
    +
    +
    Modified key word, used as a key to store information about the modified + file (i.e. the containing the last 8 days of updates).. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +LAST_UPDATED

    +
    +public static final String LAST_UPDATED
    +
    +
    The properties file key for the last updated field - used to store the + last updated time of the Modified NVD CVE xml file. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +LAST_UPDATED_BASE

    +
    +public static final String LAST_UPDATED_BASE
    +
    +
    Stores the last updated time for each of the NVD CVE files. These + timestamps should be updated if we process the modified file within 7 + days of the last update. +

    +

    +
    See Also:
    Constant Field Values
    +
    + + + + + + + + +
    +Constructor Detail
    + +

    +DataStoreMetaInfo

    +
    +public DataStoreMetaInfo()
    +
    +
    Constructs a new data properties object. +

    +

    + + + + + + + + +
    +Method Detail
    + +

    +isBatchUpdateMode

    +
    +protected boolean isBatchUpdateMode()
    +
    +
    Get the value of batchUpdateMode. +

    +

    + +
    Returns:
    the value of batchUpdateMode
    +
    +
    +
    + +

    +setBatchUpdateMode

    +
    +protected void setBatchUpdateMode(boolean batchUpdateMode)
    +
    +
    Set the value of batchUpdateMode. +

    +

    +
    Parameters:
    batchUpdateMode - new value of batchUpdateMode
    +
    +
    +
    + +

    +isEmpty

    +
    +public boolean isEmpty()
    +
    +
    Returns whether or not any properties are set. +

    +

    + +
    Returns:
    whether or not any properties are set
    +
    +
    +
    + +

    +save

    +
    +public void save(NvdCveInfo updatedValue)
    +          throws UpdateException
    +
    +
    Writes a properties file containing the last updated date to the + VULNERABLE_CPE directory. +

    +

    +
    Parameters:
    updatedValue - the updated nvdcve entry +
    Throws: +
    UpdateException - is thrown if there is an update exception
    +
    +
    +
    + +

    +getProperty

    +
    +public String getProperty(String key)
    +
    +
    Returns the property value for the given key. If the key is not contained + in the underlying properties null is returned. +

    +

    +
    Parameters:
    key - the property key +
    Returns:
    the value of the property
    +
    +
    +
    + +

    +getProperty

    +
    +public String getProperty(String key,
    +                          String defaultValue)
    +
    +
    Returns the property value for the given key. If the key is not contained + in the underlying properties the default value is returned. +

    +

    +
    Parameters:
    key - the property key
    defaultValue - the default value +
    Returns:
    the value of the property
    +
    +
    +
    + +

    +getPropertiesFile

    +
    +public static File getPropertiesFile()
    +
    +
    Retrieves the properties file. +

    +

    + +
    Returns:
    the properties file
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/DatabaseUpdater.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/DatabaseUpdater.html new file mode 100644 index 000000000..4d4ff30e3 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/DatabaseUpdater.html @@ -0,0 +1,351 @@ + + + + + + + +DatabaseUpdater (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.owasp.dependencycheck.data.update +
    +Class DatabaseUpdater

    +
    +java.lang.Object
    +  extended by org.owasp.dependencycheck.data.update.DatabaseUpdater
    +
    +
    +
    All Implemented Interfaces:
    CachedWebDataSource
    +
    +
    +
    +
    public class DatabaseUpdater
    extends Object
    implements CachedWebDataSource
    + + +

    +Class responsible for updating the CPE and NVDCVE data stores. +

    + +

    +

    +
    Author:
    +
    Jeremy Long (jeremy.long@owasp.org)
    +
    +
    + +

    + + + + + + + + + + + +
    +Constructor Summary
    DatabaseUpdater() + +
    +           
    +  + + + + + + + + + + + + + + + + + + + + + + + +
    +Method Summary
    +protected  voiddeleteExistingData() + +
    +          Deletes the existing data directories.
    +protected  booleanisDoBatchUpdate() + +
    +          Get the value of doBatchUpdate
    +protected  voidsetDoBatchUpdate(boolean doBatchUpdate) + +
    +          Set the value of doBatchUpdate
    + voidupdate() + +
    +          Downloads the latest NVD CVE XML file from the web and imports it into + the current CVE Database.
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +  +

    + + + + + + + + +
    +Constructor Detail
    + +

    +DatabaseUpdater

    +
    +public DatabaseUpdater()
    +
    +
    + + + + + + + + +
    +Method Detail
    + +

    +isDoBatchUpdate

    +
    +protected boolean isDoBatchUpdate()
    +
    +
    Get the value of doBatchUpdate +

    +

    +
    +
    +
    + +
    Returns:
    the value of doBatchUpdate
    +
    +
    +
    + +

    +setDoBatchUpdate

    +
    +protected void setDoBatchUpdate(boolean doBatchUpdate)
    +
    +
    Set the value of doBatchUpdate +

    +

    +
    +
    +
    +
    Parameters:
    doBatchUpdate - new value of doBatchUpdate
    +
    +
    +
    + +

    +update

    +
    +public void update()
    +            throws UpdateException
    +
    +

    Downloads the latest NVD CVE XML file from the web and imports it into + the current CVE Database.

    +

    +

    +
    Specified by:
    update in interface CachedWebDataSource
    +
    +
    + +
    Throws: +
    UpdateException - is thrown if there is an error updating the + database
    +
    +
    +
    + +

    +deleteExistingData

    +
    +protected void deleteExistingData()
    +                           throws IOException
    +
    +
    Deletes the existing data directories. +

    +

    +
    +
    +
    + +
    Throws: +
    IOException - thrown if the directory cannot be deleted
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/NvdCveInfo.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/NvdCveInfo.html new file mode 100644 index 000000000..b333a2cbb --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/NvdCveInfo.html @@ -0,0 +1,457 @@ + + + + + + + +NvdCveInfo (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.owasp.dependencycheck.data.update +
    +Class NvdCveInfo

    +
    +java.lang.Object
    +  extended by org.owasp.dependencycheck.data.update.NvdCveInfo
    +
    +
    +
    +
    public class NvdCveInfo
    extends Object
    + + +

    +A pojo that contains the Url and timestamp of the current NvdCve XML files. +

    + +

    +

    +
    Author:
    +
    Jeremy Long (jeremy.long@owasp.org)
    +
    +
    + +

    + + + + + + + + + + + +
    +Constructor Summary
    NvdCveInfo() + +
    +           
    +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Method Summary
    + StringgetId() + +
    +          Get the value of id.
    + booleangetNeedsUpdate() + +
    +          Get the value of needsUpdate.
    + StringgetOldSchemaVersionUrl() + +
    +          Get the value of oldSchemaVersionUrl.
    + longgetTimestamp() + +
    +          Get the value of timestamp - epoch time.
    + StringgetUrl() + +
    +          Get the value of url.
    + voidsetId(String id) + +
    +          Set the value of id.
    + voidsetNeedsUpdate(boolean needsUpdate) + +
    +          Set the value of needsUpdate.
    + voidsetOldSchemaVersionUrl(String oldSchemaVersionUrl) + +
    +          Set the value of oldSchemaVersionUrl.
    + voidsetTimestamp(long timestamp) + +
    +          Set the value of timestamp - epoch time.
    + voidsetUrl(String url) + +
    +          Set the value of url.
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +  +

    + + + + + + + + +
    +Constructor Detail
    + +

    +NvdCveInfo

    +
    +public NvdCveInfo()
    +
    +
    + + + + + + + + +
    +Method Detail
    + +

    +getId

    +
    +public String getId()
    +
    +
    Get the value of id. +

    +

    + +
    Returns:
    the value of id
    +
    +
    +
    + +

    +setId

    +
    +public void setId(String id)
    +
    +
    Set the value of id. +

    +

    +
    Parameters:
    id - new value of id
    +
    +
    +
    + +

    +getUrl

    +
    +public String getUrl()
    +
    +
    Get the value of url. +

    +

    + +
    Returns:
    the value of url
    +
    +
    +
    + +

    +setUrl

    +
    +public void setUrl(String url)
    +
    +
    Set the value of url. +

    +

    +
    Parameters:
    url - new value of url
    +
    +
    +
    + +

    +getOldSchemaVersionUrl

    +
    +public String getOldSchemaVersionUrl()
    +
    +
    Get the value of oldSchemaVersionUrl. +

    +

    + +
    Returns:
    the value of oldSchemaVersionUrl
    +
    +
    +
    + +

    +setOldSchemaVersionUrl

    +
    +public void setOldSchemaVersionUrl(String oldSchemaVersionUrl)
    +
    +
    Set the value of oldSchemaVersionUrl. +

    +

    +
    Parameters:
    oldSchemaVersionUrl - new value of oldSchemaVersionUrl
    +
    +
    +
    + +

    +getTimestamp

    +
    +public long getTimestamp()
    +
    +
    Get the value of timestamp - epoch time. +

    +

    + +
    Returns:
    the value of timestamp - epoch time
    +
    +
    +
    + +

    +setTimestamp

    +
    +public void setTimestamp(long timestamp)
    +
    +
    Set the value of timestamp - epoch time. +

    +

    +
    Parameters:
    timestamp - new value of timestamp - epoch time
    +
    +
    +
    + +

    +getNeedsUpdate

    +
    +public boolean getNeedsUpdate()
    +
    +
    Get the value of needsUpdate. +

    +

    + +
    Returns:
    the value of needsUpdate
    +
    +
    +
    + +

    +setNeedsUpdate

    +
    +public void setNeedsUpdate(boolean needsUpdate)
    +
    +
    Set the value of needsUpdate. +

    +

    +
    Parameters:
    needsUpdate - new value of needsUpdate
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/DataStoreMetaInfo.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/DataStoreMetaInfo.html new file mode 100644 index 000000000..8e8e850ae --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/DataStoreMetaInfo.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.update.DataStoreMetaInfo (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Uses of Class
    org.owasp.dependencycheck.data.update.DataStoreMetaInfo

    +
    +No usage of org.owasp.dependencycheck.data.update.DataStoreMetaInfo +

    +


    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/DatabaseUpdater.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/DatabaseUpdater.html new file mode 100644 index 000000000..d4a776c74 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/DatabaseUpdater.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.update.DatabaseUpdater (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Uses of Class
    org.owasp.dependencycheck.data.update.DatabaseUpdater

    +
    +No usage of org.owasp.dependencycheck.data.update.DatabaseUpdater +

    +


    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/NvdCveInfo.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/NvdCveInfo.html new file mode 100644 index 000000000..4d44701f7 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/class-use/NvdCveInfo.html @@ -0,0 +1,186 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.data.update.NvdCveInfo (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Uses of Class
    org.owasp.dependencycheck.data.update.NvdCveInfo

    +
    + + + + + + + + + +
    +Packages that use NvdCveInfo
    org.owasp.dependencycheck.data.update + + org.owasp.dependencycheck.data.nvdcve.xml + +  
    +  +

    + + + + + +
    +Uses of NvdCveInfo in org.owasp.dependencycheck.data.update
    +  +

    + + + + + + + + + +
    Methods in org.owasp.dependencycheck.data.update with parameters of type NvdCveInfo
    + voidDataStoreMetaInfo.save(NvdCveInfo updatedValue) + +
    +          Writes a properties file containing the last updated date to the + VULNERABLE_CPE directory.
    +  +

    +


    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-frame.html new file mode 100644 index 000000000..64d3007ab --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-frame.html @@ -0,0 +1,37 @@ + + + + + + + +org.owasp.dependencycheck.data.update (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + +org.owasp.dependencycheck.data.update + + + + +
    +Classes  + +
    +DatabaseUpdater +
    +DataStoreMetaInfo +
    +NvdCveInfo
    + + + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-summary.html new file mode 100644 index 000000000..639713f6a --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-summary.html @@ -0,0 +1,198 @@ + + + + + + + +org.owasp.dependencycheck.data.update (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +

    +Package org.owasp.dependencycheck.data.update +

    + + + org.owasp.dependencycheck.data.nvdcve.xml + + +

    +See: +
    +          Description +

    + + + + + + + + + + + + + + + + + +
    +Class Summary
    DatabaseUpdaterClass responsible for updating the CPE and NVDCVE data stores.
    DataStoreMetaInfo 
    NvdCveInfoA pojo that contains the Url and timestamp of the current NvdCve XML files.
    +  + +

    +

    +Package org.owasp.dependencycheck.data.update Description +

    + +

    + + + org.owasp.dependencycheck.data.nvdcve.xml + + +

    Contains classes used to parse the NVD CVE XML file.

    +

    The basic use is that the Importer is called to import + an NVD CVE file. The Importer instantiates an Indexer object + (which extends Index). The Indexer creates a partial-unmarshalling + SAX parser (implemented in the NvdCveXmlFilter) that extracts + VulnerabilityTypes (aka Entry) from the NVD CVE data file and + stores these into a Lucene Index.

    + + +

    + +

    +

    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-tree.html new file mode 100644 index 000000000..8787cae12 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-tree.html @@ -0,0 +1,155 @@ + + + + + + + +org.owasp.dependencycheck.data.update Class Hierarchy (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Hierarchy For Package org.owasp.dependencycheck.data.update +

    +
    +
    +
    Package Hierarchies:
    All Packages
    +
    +

    +Class Hierarchy +

    + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-use.html new file mode 100644 index 000000000..f0d0e061d --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/data/update/package-use.html @@ -0,0 +1,175 @@ + + + + + + + +Uses of Package org.owasp.dependencycheck.data.update (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Uses of Package
    org.owasp.dependencycheck.data.update

    +
    + + + + + + + + + +
    +Packages that use org.owasp.dependencycheck.data.update
    org.owasp.dependencycheck.data.update + + org.owasp.dependencycheck.data.nvdcve.xml + +  
    +  +

    + + + + + + + + +
    +Classes in org.owasp.dependencycheck.data.update used by org.owasp.dependencycheck.data.update
    NvdCveInfo + +
    +          A pojo that contains the Url and timestamp of the current NvdCve XML files.
    +  +

    +


    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Dependency.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Dependency.html index 2d9d7800e..2f3a88825 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Dependency.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Dependency.html @@ -2,13 +2,13 @@ - + -Dependency (dependency-check-core 1.0.1 API) +Dependency (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Dependency (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Dependency (dependency-check-core 1.0.1 API)"; + parent.document.title="Dependency (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.Confidence.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.Confidence.html index ea65dee30..790f8d6f3 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.Confidence.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.Confidence.html @@ -2,13 +2,13 @@ - + -Evidence.Confidence (dependency-check-core 1.0.1 API) +Evidence.Confidence (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Evidence.Confidence (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Evidence.Confidence (dependency-check-core 1.0.1 API)"; + parent.document.title="Evidence.Confidence (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.html index e66f37d17..f471e9170 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Evidence.html @@ -2,13 +2,13 @@ - + -Evidence (dependency-check-core 1.0.1 API) +Evidence (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Evidence (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Evidence (dependency-check-core 1.0.1 API)"; + parent.document.title="Evidence (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/EvidenceCollection.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/EvidenceCollection.html index 2865775d4..83b4a897a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/EvidenceCollection.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/EvidenceCollection.html @@ -2,13 +2,13 @@ - + -EvidenceCollection (dependency-check-core 1.0.1 API) +EvidenceCollection (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ EvidenceCollection (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="EvidenceCollection (dependency-check-core 1.0.1 API)"; + parent.document.title="EvidenceCollection (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Identifier.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Identifier.html index 9f2133521..900f555d5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Identifier.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Identifier.html @@ -2,13 +2,13 @@ - + -Identifier (dependency-check-core 1.0.1 API) +Identifier (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Identifier (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Identifier (dependency-check-core 1.0.1 API)"; + parent.document.title="Identifier (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Reference.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Reference.html index 77b949e86..0fdf31358 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Reference.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Reference.html @@ -2,13 +2,13 @@ - + -Reference (dependency-check-core 1.0.1 API) +Reference (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Reference (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Reference (dependency-check-core 1.0.1 API)"; + parent.document.title="Reference (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Vulnerability.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Vulnerability.html index 7b753d0c9..b507904d6 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Vulnerability.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/Vulnerability.html @@ -2,13 +2,13 @@ - + -Vulnerability (dependency-check-core 1.0.1 API) +Vulnerability (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Vulnerability (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Vulnerability (dependency-check-core 1.0.1 API)"; + parent.document.title="Vulnerability (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerabilityComparator.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerabilityComparator.html index 155f4b817..ee11feaca 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerabilityComparator.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerabilityComparator.html @@ -2,13 +2,13 @@ - + -VulnerabilityComparator (dependency-check-core 1.0.1 API) +VulnerabilityComparator (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ VulnerabilityComparator (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="VulnerabilityComparator (dependency-check-core 1.0.1 API)"; + parent.document.title="VulnerabilityComparator (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerableSoftware.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerableSoftware.html index abe50b894..c6cbfa745 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerableSoftware.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/VulnerableSoftware.html @@ -2,13 +2,13 @@ - + -VulnerableSoftware (dependency-check-core 1.0.1 API) +VulnerableSoftware (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ VulnerableSoftware (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="VulnerableSoftware (dependency-check-core 1.0.1 API)"; + parent.document.title="VulnerableSoftware (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Dependency.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Dependency.html index cf686e342..b8eaff26f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Dependency.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Dependency.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.Dependency (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.Dependency (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.Dependency (dependency-check- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Dependency (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Dependency (Dependency-Check Core 1.0.2 API)"; } } @@ -110,24 +110,6 @@ Packages that use -
    org.owasp.dependencycheck.data.cpe - - org.owasp.dependencycheck.data.cpe - - - Contains classes for working with the CPE Lucene Index. 
    org.owasp.dependencycheck.data.nvdcve - - org.owasp.dependencycheck.data.nvdcve - - - Contains classes used to work with the NVD CVE data. 
    org.owasp.dependencycheck.dependency @@ -190,6 +172,16 @@ Uses of  voidNvdCveAnalyzer.analyze(Dependency dependency, + Engine engine) + +
    +          Analyzes a dependency and attempts to determine if there are any CPE + identifiers for this dependency.
    + void JavaScriptAnalyzer.analyze(Dependency dependency, Engine engine) @@ -248,6 +240,16 @@ Uses of  voidCPEAnalyzer.analyze(Dependency dependency, + Engine engine) + +
    +          Analyzes a dependency and attempts to determine if there are any CPE + identifiers for this dependency.
    + void ArchiveAnalyzer.analyze(Dependency dependency, Engine engine) @@ -285,6 +287,15 @@ Uses of +protected  voidCPEAnalyzer.determineCPE(Dependency dependency) + +
    +          Searches the data store of CPE entries, trying to identify the CPE for + the given dependency based on the evidence contained within.
    protected  boolean JarAnalyzer.parseManifest(Dependency dependency, ArrayList<JarAnalyzer.ClassNameInformation> classInformation) @@ -295,69 +306,6 @@ Uses of - - - - -
    -Uses of Dependency in org.owasp.dependencycheck.data.cpe
    -  -

    - - - - - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.cpe with parameters of type Dependency
    - voidCPEAnalyzer.analyze(Dependency dependency, - Engine engine) - -
    -          Analyzes a dependency and attempts to determine if there are any CPE - identifiers for this dependency.
    -protected  voidCPEAnalyzer.determineCPE(Dependency dependency) - -
    -          Searches the data store of CPE entries, trying to identify the CPE for - the given dependency based on the evidence contained within.
    -  -

    - - - - - -
    -Uses of Dependency in org.owasp.dependencycheck.data.nvdcve
    -  -

    - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.nvdcve with parameters of type Dependency
    - voidNvdCveAnalyzer.analyze(Dependency dependency, - Engine engine) - -
    -          Analyzes a dependency and attempts to determine if there are any CPE - identifiers for this dependency.
    -  -

    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.Confidence.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.Confidence.html index 6ef3eadec..d5e5d365f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.Confidence.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.Confidence.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.Evidence.Confidence (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.Evidence.Confidence (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.Evidence.Confidence (dependen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Evidence.Confidence (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Evidence.Confidence (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.html index 0198fa530..8008cf23f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Evidence.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.Evidence (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.Evidence (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.Evidence (dependency-check-co function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Evidence (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Evidence (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/EvidenceCollection.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/EvidenceCollection.html index 9e00b50f8..394623d8e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/EvidenceCollection.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/EvidenceCollection.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.EvidenceCollection (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.EvidenceCollection (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.EvidenceCollection (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.EvidenceCollection (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.EvidenceCollection (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Identifier.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Identifier.html index e60ae132e..aef0a332d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Identifier.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Identifier.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.Identifier (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.Identifier (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.Identifier (dependency-check- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Identifier (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Identifier (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Reference.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Reference.html index 55479571e..5ed72a3d6 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Reference.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Reference.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.Reference (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.Reference (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.Reference (dependency-check-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Reference (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Reference (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Vulnerability.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Vulnerability.html index 757730731..924999a99 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Vulnerability.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/Vulnerability.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.Vulnerability (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.Vulnerability (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.Vulnerability (dependency-che function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Vulnerability (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.Vulnerability (Dependency-Check Core 1.0.2 API)"; } } @@ -100,14 +100,6 @@ Packages that use - - - - - - -
    org.owasp.dependencycheck.data.nvdcve.xml - - org.owasp.dependencycheck.data.nvdcve.xml - -  
    org.owasp.dependencycheck.dependency @@ -152,35 +144,18 @@ Uses of  voidCveDB.updateVulnerability(Vulnerability vuln) +NvdCve20Handler.saveEntry(Vulnerability vuln)
    -          Updates the vulnerability within the database.
    -  -

    - - - - - -
    -Uses of Vulnerability in org.owasp.dependencycheck.data.nvdcve.xml
    -  -

    - - - - +          Saves a vulnerability to the CVE Database. - +          Updates the vulnerability within the database.
    Methods in org.owasp.dependencycheck.data.nvdcve.xml with parameters of type Vulnerability
     voidNvdCve20Handler.saveEntry(Vulnerability vuln) +CveDB.updateVulnerability(Vulnerability vuln)
    -          Saves a vulnerability to the CVE Database.
      diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerabilityComparator.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerabilityComparator.html index 12ef91932..8b3ecb529 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerabilityComparator.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerabilityComparator.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.VulnerabilityComparator (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.VulnerabilityComparator (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.VulnerabilityComparator (depe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.VulnerabilityComparator (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.VulnerabilityComparator (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerableSoftware.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerableSoftware.html index de41958a5..a15a915d4 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerableSoftware.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/class-use/VulnerableSoftware.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.dependency.VulnerableSoftware (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.dependency.VulnerableSoftware (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.dependency.VulnerableSoftware (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.VulnerableSoftware (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.dependency.VulnerableSoftware (Dependency-Check Core 1.0.2 API)"; } } @@ -100,14 +100,6 @@ Packages that use -

    org.owasp.dependencycheck.data.nvdcve.xml - - org.owasp.dependencycheck.data.nvdcve.xml - -  
    org.owasp.dependencycheck.dependency @@ -143,27 +135,10 @@ Uses of - - - - -
    -Uses of VulnerableSoftware in org.owasp.dependencycheck.data.nvdcve.xml
    -  -

    - - - - - - @@ -174,12 +149,12 @@ Uses of - + - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-frame.html index b834de8bb..7cb9c9ae7 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.dependency (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.dependency (Dependency-Check Core 1.0.2 API) - + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-summary.html index 257af9a8a..6ff67fc11 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/dependency/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.dependency (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.dependency (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.dependency (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.dependency (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.dependency (Dependency-Check Core 1.0.2 API)"; } } @@ -56,7 +56,7 @@ function windowTitle() - - - - - - - -
    Methods in org.owasp.dependencycheck.data.nvdcve.xml that return types with arguments of type VulnerableSoftware
     Map<String,List<VulnerableSoftware>>NvdCve12Handler.getVulnerabilities() +NvdCve12Handler.getVulnerabilities()
              Get the value of vulnerabilities.
    Method parameters in org.owasp.dependencycheck.data.nvdcve.xml with type arguments of type VulnerableSoftwareMethod parameters in org.owasp.dependencycheck.data.nvdcve with type arguments of type VulnerableSoftware
     voidNvdCve20Handler.setPrevVersionVulnMap(Map<String,List<VulnerableSoftware>> map) +NvdCve20Handler.setPrevVersionVulnMap(Map<String,List<VulnerableSoftware>> map)
              Sets the prevVersionVulnMap.
    org.owasp.dependencycheck.data.cpe - - org.owasp.dependencycheck.data.cpe - - - Contains classes for working with the CPE Lucene Index. 
    org.owasp.dependencycheck.data.nvdcve @@ -128,14 +119,6 @@ Packages that use -org.owasp.dependencycheck.data.nvdcve.xml - - org.owasp.dependencycheck.data.nvdcve.xml - -  
    org.owasp.dependencycheck.dependency @@ -180,21 +163,6 @@ Classes in Dependency -
    -          A program dependency.
    -  -

    - - - - - - - @@ -208,12 +176,6 @@ Classes in org.owasp.dependencycheck.dependency used by org.owasp.dependencycheck.data.nvdcve - - - - -
    -Classes in org.owasp.dependencycheck.dependency used by org.owasp.dependencycheck.data.cpe
    Dependency -
              A program dependency.
    Dependency - -
    -          A program dependency.
    Vulnerability
    @@ -222,27 +184,6 @@ Classes in
    VulnerableSoftware -
    -          A record containing information about vulnerable software.
    -  -

    - - - - - - - - - - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/MavenNamespaceFilter.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/MavenNamespaceFilter.html index 85c871450..bc70be0ad 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/MavenNamespaceFilter.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/MavenNamespaceFilter.html @@ -2,13 +2,13 @@ - + -MavenNamespaceFilter (dependency-check-core 1.0.1 API) +MavenNamespaceFilter (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ MavenNamespaceFilter (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="MavenNamespaceFilter (dependency-check-core 1.0.1 API)"; + parent.document.title="MavenNamespaceFilter (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/class-use/MavenNamespaceFilter.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/class-use/MavenNamespaceFilter.html index 792f9e902..ebcb951c5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/class-use/MavenNamespaceFilter.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/class-use/MavenNamespaceFilter.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Activation.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Activation.html index e1bcdb88a..887e643ee 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Activation.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Activation.html @@ -2,13 +2,13 @@ - + -Activation (dependency-check-core 1.0.1 API) +Activation (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Activation (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Activation (dependency-check-core 1.0.1 API)"; + parent.document.title="Activation (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationFile.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationFile.html index 1c4a88a61..48a460d97 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationFile.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationFile.html @@ -2,13 +2,13 @@ - + -ActivationFile (dependency-check-core 1.0.1 API) +ActivationFile (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ActivationFile (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ActivationFile (dependency-check-core 1.0.1 API)"; + parent.document.title="ActivationFile (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationOS.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationOS.html index 2ea9463c0..d05ef1b49 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationOS.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationOS.html @@ -2,13 +2,13 @@ - + -ActivationOS (dependency-check-core 1.0.1 API) +ActivationOS (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ActivationOS (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ActivationOS (dependency-check-core 1.0.1 API)"; + parent.document.title="ActivationOS (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationProperty.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationProperty.html index 024f8104f..f55251517 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationProperty.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ActivationProperty.html @@ -2,13 +2,13 @@ - + -ActivationProperty (dependency-check-core 1.0.1 API) +ActivationProperty (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ActivationProperty (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ActivationProperty (dependency-check-core 1.0.1 API)"; + parent.document.title="ActivationProperty (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Extensions.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Extensions.html index 10ce6d263..3bf07b01c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Extensions.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Extensions.html @@ -2,13 +2,13 @@ - + -Build.Extensions (dependency-check-core 1.0.1 API) +Build.Extensions (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Build.Extensions (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Build.Extensions (dependency-check-core 1.0.1 API)"; + parent.document.title="Build.Extensions (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Filters.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Filters.html index e9e155b0f..80d021f45 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Filters.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Filters.html @@ -2,13 +2,13 @@ - + -Build.Filters (dependency-check-core 1.0.1 API) +Build.Filters (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Build.Filters (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Build.Filters (dependency-check-core 1.0.1 API)"; + parent.document.title="Build.Filters (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Plugins.html index ea8140daf..5a742fc7c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Plugins.html @@ -2,13 +2,13 @@ - + -Build.Plugins (dependency-check-core 1.0.1 API) +Build.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Build.Plugins (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Build.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="Build.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Resources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Resources.html index 2567625ba..fc2af6350 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Resources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.Resources.html @@ -2,13 +2,13 @@ - + -Build.Resources (dependency-check-core 1.0.1 API) +Build.Resources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Build.Resources (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Build.Resources (dependency-check-core 1.0.1 API)"; + parent.document.title="Build.Resources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.TestResources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.TestResources.html index 9c08ef781..88c1ee846 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.TestResources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.TestResources.html @@ -2,13 +2,13 @@ - + -Build.TestResources (dependency-check-core 1.0.1 API) +Build.TestResources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Build.TestResources (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Build.TestResources (dependency-check-core 1.0.1 API)"; + parent.document.title="Build.TestResources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.html index 56bc569a8..f2af0d1af 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Build.html @@ -2,13 +2,13 @@ - + -Build (dependency-check-core 1.0.1 API) +Build (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Build (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Build (dependency-check-core 1.0.1 API)"; + parent.document.title="Build (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Filters.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Filters.html index 2c9545dd3..22cb0d844 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Filters.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Filters.html @@ -2,13 +2,13 @@ - + -BuildBase.Filters (dependency-check-core 1.0.1 API) +BuildBase.Filters (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ BuildBase.Filters (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="BuildBase.Filters (dependency-check-core 1.0.1 API)"; + parent.document.title="BuildBase.Filters (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Plugins.html index f9d42f9d0..f799b3054 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Plugins.html @@ -2,13 +2,13 @@ - + -BuildBase.Plugins (dependency-check-core 1.0.1 API) +BuildBase.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ BuildBase.Plugins (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="BuildBase.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="BuildBase.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Resources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Resources.html index 2330d2150..292a52f84 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Resources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.Resources.html @@ -2,13 +2,13 @@ - + -BuildBase.Resources (dependency-check-core 1.0.1 API) +BuildBase.Resources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ BuildBase.Resources (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="BuildBase.Resources (dependency-check-core 1.0.1 API)"; + parent.document.title="BuildBase.Resources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.TestResources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.TestResources.html index 5e17c182a..ace36448c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.TestResources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.TestResources.html @@ -2,13 +2,13 @@ - + -BuildBase.TestResources (dependency-check-core 1.0.1 API) +BuildBase.TestResources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ BuildBase.TestResources (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="BuildBase.TestResources (dependency-check-core 1.0.1 API)"; + parent.document.title="BuildBase.TestResources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.html index e32473916..7f0f7ba35 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/BuildBase.html @@ -2,13 +2,13 @@ - + -BuildBase (dependency-check-core 1.0.1 API) +BuildBase (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ BuildBase (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="BuildBase (dependency-check-core 1.0.1 API)"; + parent.document.title="BuildBase (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.Notifiers.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.Notifiers.html index 1d9c25f18..31840cee6 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.Notifiers.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.Notifiers.html @@ -2,13 +2,13 @@ - + -CiManagement.Notifiers (dependency-check-core 1.0.1 API) +CiManagement.Notifiers (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ CiManagement.Notifiers (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CiManagement.Notifiers (dependency-check-core 1.0.1 API)"; + parent.document.title="CiManagement.Notifiers (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.html index 7e1f717f4..56d4d2ed7 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/CiManagement.html @@ -2,13 +2,13 @@ - + -CiManagement (dependency-check-core 1.0.1 API) +CiManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ CiManagement (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CiManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="CiManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Properties.html index e1f614e2a..397b787fd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Properties.html @@ -2,13 +2,13 @@ - + -Contributor.Properties (dependency-check-core 1.0.1 API) +Contributor.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Contributor.Properties (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Contributor.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Contributor.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Roles.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Roles.html index 83784bebd..5d78e22d5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Roles.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.Roles.html @@ -2,13 +2,13 @@ - + -Contributor.Roles (dependency-check-core 1.0.1 API) +Contributor.Roles (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Contributor.Roles (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Contributor.Roles (dependency-check-core 1.0.1 API)"; + parent.document.title="Contributor.Roles (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.html index 5530a7f1a..8f0c1eea0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Contributor.html @@ -2,13 +2,13 @@ - + -Contributor (dependency-check-core 1.0.1 API) +Contributor (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Contributor (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Contributor (dependency-check-core 1.0.1 API)"; + parent.document.title="Contributor (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.Exclusions.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.Exclusions.html index 02ef03986..c2c09b8bc 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.Exclusions.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.Exclusions.html @@ -2,13 +2,13 @@ - + -Dependency.Exclusions (dependency-check-core 1.0.1 API) +Dependency.Exclusions (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Dependency.Exclusions (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Dependency.Exclusions (dependency-check-core 1.0.1 API)"; + parent.document.title="Dependency.Exclusions (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.html index 6f7b8aaff..7c1a42a21 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Dependency.html @@ -2,13 +2,13 @@ - + -Dependency (dependency-check-core 1.0.1 API) +Dependency (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Dependency (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Dependency (dependency-check-core 1.0.1 API)"; + parent.document.title="Dependency (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.Dependencies.html index a77d7fdba..3c52660b5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.Dependencies.html @@ -2,13 +2,13 @@ - + -DependencyManagement.Dependencies (dependency-check-core 1.0.1 API) +DependencyManagement.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DependencyManagement.Dependencies (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DependencyManagement.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="DependencyManagement.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.html index d7bbc1333..710e32b04 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DependencyManagement.html @@ -2,13 +2,13 @@ - + -DependencyManagement (dependency-check-core 1.0.1 API) +DependencyManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DependencyManagement (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DependencyManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="DependencyManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DeploymentRepository.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DeploymentRepository.html index 204123f13..556d352dd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DeploymentRepository.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DeploymentRepository.html @@ -2,13 +2,13 @@ - + -DeploymentRepository (dependency-check-core 1.0.1 API) +DeploymentRepository (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DeploymentRepository (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DeploymentRepository (dependency-check-core 1.0.1 API)"; + parent.document.title="DeploymentRepository (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Properties.html index d138b8b21..29ca7e63f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Properties.html @@ -2,13 +2,13 @@ - + -Developer.Properties (dependency-check-core 1.0.1 API) +Developer.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Developer.Properties (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Developer.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Developer.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Roles.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Roles.html index 4c3c5600b..d067af115 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Roles.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.Roles.html @@ -2,13 +2,13 @@ - + -Developer.Roles (dependency-check-core 1.0.1 API) +Developer.Roles (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Developer.Roles (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Developer.Roles (dependency-check-core 1.0.1 API)"; + parent.document.title="Developer.Roles (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.html index 2bd7c7b7a..f3a143ef6 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Developer.html @@ -2,13 +2,13 @@ - + -Developer (dependency-check-core 1.0.1 API) +Developer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Developer (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Developer (dependency-check-core 1.0.1 API)"; + parent.document.title="Developer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DistributionManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DistributionManagement.html index f74298bb6..8ebf744bd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DistributionManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/DistributionManagement.html @@ -2,13 +2,13 @@ - + -DistributionManagement (dependency-check-core 1.0.1 API) +DistributionManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DistributionManagement (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DistributionManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="DistributionManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Exclusion.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Exclusion.html index ca82a8c19..1a5b52a0f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Exclusion.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Exclusion.html @@ -2,13 +2,13 @@ - + -Exclusion (dependency-check-core 1.0.1 API) +Exclusion (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Exclusion (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Exclusion (dependency-check-core 1.0.1 API)"; + parent.document.title="Exclusion (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Extension.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Extension.html index 3506051e6..cbcc42369 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Extension.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Extension.html @@ -2,13 +2,13 @@ - + -Extension (dependency-check-core 1.0.1 API) +Extension (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Extension (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Extension (dependency-check-core 1.0.1 API)"; + parent.document.title="Extension (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/IssueManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/IssueManagement.html index 1c90188cf..140882590 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/IssueManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/IssueManagement.html @@ -2,13 +2,13 @@ - + -IssueManagement (dependency-check-core 1.0.1 API) +IssueManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ IssueManagement (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="IssueManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="IssueManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/License.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/License.html index 1bb988585..22feeef10 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/License.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/License.html @@ -2,13 +2,13 @@ - + -License (dependency-check-core 1.0.1 API) +License (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ License (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="License (dependency-check-core 1.0.1 API)"; + parent.document.title="License (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.OtherArchives.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.OtherArchives.html index 67b79316a..2912d33a4 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.OtherArchives.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.OtherArchives.html @@ -2,13 +2,13 @@ - + -MailingList.OtherArchives (dependency-check-core 1.0.1 API) +MailingList.OtherArchives (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ MailingList.OtherArchives (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="MailingList.OtherArchives (dependency-check-core 1.0.1 API)"; + parent.document.title="MailingList.OtherArchives (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.html index bdd373c9c..037e520b0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/MailingList.html @@ -2,13 +2,13 @@ - + -MailingList (dependency-check-core 1.0.1 API) +MailingList (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ MailingList (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="MailingList (dependency-check-core 1.0.1 API)"; + parent.document.title="MailingList (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Contributors.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Contributors.html index 192720171..3f78ac804 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Contributors.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Contributors.html @@ -2,13 +2,13 @@ - + -Model.Contributors (dependency-check-core 1.0.1 API) +Model.Contributors (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Contributors (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Contributors (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Contributors (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Dependencies.html index 66feb4f16..def64df7a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Dependencies.html @@ -2,13 +2,13 @@ - + -Model.Dependencies (dependency-check-core 1.0.1 API) +Model.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Dependencies (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Developers.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Developers.html index a9d5d4c86..d8dd6dcaa 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Developers.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Developers.html @@ -2,13 +2,13 @@ - + -Model.Developers (dependency-check-core 1.0.1 API) +Model.Developers (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Developers (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Developers (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Developers (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Licenses.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Licenses.html index 14152e7a6..928508205 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Licenses.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Licenses.html @@ -2,13 +2,13 @@ - + -Model.Licenses (dependency-check-core 1.0.1 API) +Model.Licenses (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Licenses (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Licenses (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Licenses (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.MailingLists.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.MailingLists.html index 8f174f71a..6d03b05e8 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.MailingLists.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.MailingLists.html @@ -2,13 +2,13 @@ - + -Model.MailingLists (dependency-check-core 1.0.1 API) +Model.MailingLists (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.MailingLists (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.MailingLists (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.MailingLists (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Modules.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Modules.html index eb4a4e6aa..85dfdeffd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Modules.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Modules.html @@ -2,13 +2,13 @@ - + -Model.Modules (dependency-check-core 1.0.1 API) +Model.Modules (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Modules (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Modules (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Modules (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.PluginRepositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.PluginRepositories.html index 3eab9adc3..48ca0e7cd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.PluginRepositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.PluginRepositories.html @@ -2,13 +2,13 @@ - + -Model.PluginRepositories (dependency-check-core 1.0.1 API) +Model.PluginRepositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.PluginRepositories (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.PluginRepositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.PluginRepositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Profiles.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Profiles.html index 7ffc2b944..28fc287b1 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Profiles.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Profiles.html @@ -2,13 +2,13 @@ - + -Model.Profiles (dependency-check-core 1.0.1 API) +Model.Profiles (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Profiles (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Profiles (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Profiles (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Properties.html index c9ae5597e..d7869dc23 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Properties.html @@ -2,13 +2,13 @@ - + -Model.Properties (dependency-check-core 1.0.1 API) +Model.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Properties (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Reports.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Reports.html index 6cac1321a..80b66a0e2 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Reports.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Reports.html @@ -2,13 +2,13 @@ - + -Model.Reports (dependency-check-core 1.0.1 API) +Model.Reports (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Reports (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Reports (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Reports (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Repositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Repositories.html index b602db035..be09d40d3 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Repositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.Repositories.html @@ -2,13 +2,13 @@ - + -Model.Repositories (dependency-check-core 1.0.1 API) +Model.Repositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model.Repositories (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model.Repositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Model.Repositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.html index bd738e86c..f4d50337e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Model.html @@ -2,13 +2,13 @@ - + -Model (dependency-check-core 1.0.1 API) +Model (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Model (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Model (dependency-check-core 1.0.1 API)"; + parent.document.title="Model (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.Configuration.html index 147027c91..930f0bc48 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.Configuration.html @@ -2,13 +2,13 @@ - + -Notifier.Configuration (dependency-check-core 1.0.1 API) +Notifier.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Notifier.Configuration (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Notifier.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="Notifier.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.html index bc9cfbe04..129d2f9ac 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Notifier.html @@ -2,13 +2,13 @@ - + -Notifier (dependency-check-core 1.0.1 API) +Notifier (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Notifier (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Notifier (dependency-check-core 1.0.1 API)"; + parent.document.title="Notifier (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ObjectFactory.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ObjectFactory.html index 489eed438..f82edd9f5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ObjectFactory.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ObjectFactory.html @@ -2,13 +2,13 @@ - + -ObjectFactory (dependency-check-core 1.0.1 API) +ObjectFactory (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ObjectFactory (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ObjectFactory (dependency-check-core 1.0.1 API)"; + parent.document.title="ObjectFactory (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Organization.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Organization.html index f2db34ca6..de8613ea0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Organization.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Organization.html @@ -2,13 +2,13 @@ - + -Organization (dependency-check-core 1.0.1 API) +Organization (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Organization (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Organization (dependency-check-core 1.0.1 API)"; + parent.document.title="Organization (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Parent.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Parent.html index 04d690341..4d4c7409b 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Parent.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Parent.html @@ -2,13 +2,13 @@ - + -Parent (dependency-check-core 1.0.1 API) +Parent (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Parent (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Parent (dependency-check-core 1.0.1 API)"; + parent.document.title="Parent (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Configuration.html index a03dadda1..a3c9cbf25 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Configuration.html @@ -2,13 +2,13 @@ - + -Plugin.Configuration (dependency-check-core 1.0.1 API) +Plugin.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Plugin.Configuration (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Plugin.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="Plugin.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Dependencies.html index bb57de621..9f1f3db5c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Dependencies.html @@ -2,13 +2,13 @@ - + -Plugin.Dependencies (dependency-check-core 1.0.1 API) +Plugin.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Plugin.Dependencies (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Plugin.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="Plugin.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Executions.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Executions.html index 73afb21e4..5fe61fd56 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Executions.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Executions.html @@ -2,13 +2,13 @@ - + -Plugin.Executions (dependency-check-core 1.0.1 API) +Plugin.Executions (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Plugin.Executions (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Plugin.Executions (dependency-check-core 1.0.1 API)"; + parent.document.title="Plugin.Executions (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Goals.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Goals.html index 273c13006..6824bf92a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Goals.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.Goals.html @@ -2,13 +2,13 @@ - + -Plugin.Goals (dependency-check-core 1.0.1 API) +Plugin.Goals (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Plugin.Goals (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Plugin.Goals (dependency-check-core 1.0.1 API)"; + parent.document.title="Plugin.Goals (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.html index 80b4123b2..df9fe7be5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Plugin.html @@ -2,13 +2,13 @@ - + -Plugin (dependency-check-core 1.0.1 API) +Plugin (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Plugin (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Plugin (dependency-check-core 1.0.1 API)"; + parent.document.title="Plugin (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Configuration.html index fd32624f2..ec77bea3a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Configuration.html @@ -2,13 +2,13 @@ - + -PluginExecution.Configuration (dependency-check-core 1.0.1 API) +PluginExecution.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ PluginExecution.Configuration (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="PluginExecution.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="PluginExecution.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Goals.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Goals.html index 1dfa297fb..90cfa81b2 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Goals.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.Goals.html @@ -2,13 +2,13 @@ - + -PluginExecution.Goals (dependency-check-core 1.0.1 API) +PluginExecution.Goals (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ PluginExecution.Goals (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="PluginExecution.Goals (dependency-check-core 1.0.1 API)"; + parent.document.title="PluginExecution.Goals (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.html index 72b1f7109..f5c1a43a8 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginExecution.html @@ -2,13 +2,13 @@ - + -PluginExecution (dependency-check-core 1.0.1 API) +PluginExecution (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ PluginExecution (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="PluginExecution (dependency-check-core 1.0.1 API)"; + parent.document.title="PluginExecution (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.Plugins.html index d9a93b7e7..ce317cc71 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.Plugins.html @@ -2,13 +2,13 @@ - + -PluginManagement.Plugins (dependency-check-core 1.0.1 API) +PluginManagement.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ PluginManagement.Plugins (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="PluginManagement.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="PluginManagement.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.html index c868035b2..9e0f7fb03 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/PluginManagement.html @@ -2,13 +2,13 @@ - + -PluginManagement (dependency-check-core 1.0.1 API) +PluginManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ PluginManagement (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="PluginManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="PluginManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Prerequisites.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Prerequisites.html index 1b760f528..ff644fbd0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Prerequisites.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Prerequisites.html @@ -2,13 +2,13 @@ - + -Prerequisites (dependency-check-core 1.0.1 API) +Prerequisites (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Prerequisites (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Prerequisites (dependency-check-core 1.0.1 API)"; + parent.document.title="Prerequisites (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Dependencies.html index 96efbe1dd..b280bf5d7 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Dependencies.html @@ -2,13 +2,13 @@ - + -Profile.Dependencies (dependency-check-core 1.0.1 API) +Profile.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Profile.Dependencies (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Profile.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="Profile.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Modules.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Modules.html index e8bc1b9e4..feac4589c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Modules.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Modules.html @@ -2,13 +2,13 @@ - + -Profile.Modules (dependency-check-core 1.0.1 API) +Profile.Modules (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Profile.Modules (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Profile.Modules (dependency-check-core 1.0.1 API)"; + parent.document.title="Profile.Modules (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.PluginRepositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.PluginRepositories.html index cea0431d9..ac8e32537 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.PluginRepositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.PluginRepositories.html @@ -2,13 +2,13 @@ - + -Profile.PluginRepositories (dependency-check-core 1.0.1 API) +Profile.PluginRepositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Profile.PluginRepositories (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Profile.PluginRepositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Profile.PluginRepositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Properties.html index 1f4719255..b3d30978c 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Properties.html @@ -2,13 +2,13 @@ - + -Profile.Properties (dependency-check-core 1.0.1 API) +Profile.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Profile.Properties (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Profile.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Profile.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Reports.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Reports.html index eeb4f0592..a8e69d362 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Reports.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Reports.html @@ -2,13 +2,13 @@ - + -Profile.Reports (dependency-check-core 1.0.1 API) +Profile.Reports (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Profile.Reports (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Profile.Reports (dependency-check-core 1.0.1 API)"; + parent.document.title="Profile.Reports (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Repositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Repositories.html index 31307e4c9..b6bea801a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Repositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.Repositories.html @@ -2,13 +2,13 @@ - + -Profile.Repositories (dependency-check-core 1.0.1 API) +Profile.Repositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Profile.Repositories (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Profile.Repositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Profile.Repositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.html index e6df24f22..f5e3ccfc3 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Profile.html @@ -2,13 +2,13 @@ - + -Profile (dependency-check-core 1.0.1 API) +Profile (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Profile (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Profile (dependency-check-core 1.0.1 API)"; + parent.document.title="Profile (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Relocation.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Relocation.html index dedbbc741..c608af618 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Relocation.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Relocation.html @@ -2,13 +2,13 @@ - + -Relocation (dependency-check-core 1.0.1 API) +Relocation (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Relocation (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Relocation (dependency-check-core 1.0.1 API)"; + parent.document.title="Relocation (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.Configuration.html index 9e28e3b3a..e605621aa 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.Configuration.html @@ -2,13 +2,13 @@ - + -ReportPlugin.Configuration (dependency-check-core 1.0.1 API) +ReportPlugin.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportPlugin.Configuration (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportPlugin.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportPlugin.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.ReportSets.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.ReportSets.html index a74064622..e5846e958 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.ReportSets.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.ReportSets.html @@ -2,13 +2,13 @@ - + -ReportPlugin.ReportSets (dependency-check-core 1.0.1 API) +ReportPlugin.ReportSets (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportPlugin.ReportSets (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportPlugin.ReportSets (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportPlugin.ReportSets (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.html index cb1c677e6..028b3bac9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportPlugin.html @@ -2,13 +2,13 @@ - + -ReportPlugin (dependency-check-core 1.0.1 API) +ReportPlugin (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportPlugin (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportPlugin (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportPlugin (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Configuration.html index 914faa6a8..ad821c45a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Configuration.html @@ -2,13 +2,13 @@ - + -ReportSet.Configuration (dependency-check-core 1.0.1 API) +ReportSet.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportSet.Configuration (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportSet.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportSet.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Reports.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Reports.html index 66e2dcdc6..3357becd0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Reports.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.Reports.html @@ -2,13 +2,13 @@ - + -ReportSet.Reports (dependency-check-core 1.0.1 API) +ReportSet.Reports (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportSet.Reports (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportSet.Reports (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportSet.Reports (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.html index 11b08ea2e..4fc2eb59e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/ReportSet.html @@ -2,13 +2,13 @@ - + -ReportSet (dependency-check-core 1.0.1 API) +ReportSet (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportSet (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportSet (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportSet (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.Plugins.html index 79859cf06..a251e15a9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.Plugins.html @@ -2,13 +2,13 @@ - + -Reporting.Plugins (dependency-check-core 1.0.1 API) +Reporting.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Reporting.Plugins (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Reporting.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="Reporting.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.html index d8bd04da3..6b8095265 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Reporting.html @@ -2,13 +2,13 @@ - + -Reporting (dependency-check-core 1.0.1 API) +Reporting (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Reporting (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Reporting (dependency-check-core 1.0.1 API)"; + parent.document.title="Reporting (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Repository.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Repository.html index b5fa46d0e..ba06dc606 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Repository.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Repository.html @@ -2,13 +2,13 @@ - + -Repository (dependency-check-core 1.0.1 API) +Repository (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Repository (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Repository (dependency-check-core 1.0.1 API)"; + parent.document.title="Repository (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/RepositoryPolicy.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/RepositoryPolicy.html index 81b3c24e9..774b9a2ef 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/RepositoryPolicy.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/RepositoryPolicy.html @@ -2,13 +2,13 @@ - + -RepositoryPolicy (dependency-check-core 1.0.1 API) +RepositoryPolicy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ RepositoryPolicy (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RepositoryPolicy (dependency-check-core 1.0.1 API)"; + parent.document.title="RepositoryPolicy (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Excludes.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Excludes.html index da4943e82..948a8edae 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Excludes.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Excludes.html @@ -2,13 +2,13 @@ - + -Resource.Excludes (dependency-check-core 1.0.1 API) +Resource.Excludes (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Resource.Excludes (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Resource.Excludes (dependency-check-core 1.0.1 API)"; + parent.document.title="Resource.Excludes (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Includes.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Includes.html index fc6e3f491..79f8b4b0d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Includes.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.Includes.html @@ -2,13 +2,13 @@ - + -Resource.Includes (dependency-check-core 1.0.1 API) +Resource.Includes (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Resource.Includes (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Resource.Includes (dependency-check-core 1.0.1 API)"; + parent.document.title="Resource.Includes (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.html index 88a1ae46f..b9ba51b84 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Resource.html @@ -2,13 +2,13 @@ - + -Resource (dependency-check-core 1.0.1 API) +Resource (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Resource (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Resource (dependency-check-core 1.0.1 API)"; + parent.document.title="Resource (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Scm.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Scm.html index 5baf996e7..ac15d776f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Scm.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Scm.html @@ -2,13 +2,13 @@ - + -Scm (dependency-check-core 1.0.1 API) +Scm (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Scm (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Scm (dependency-check-core 1.0.1 API)"; + parent.document.title="Scm (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Site.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Site.html index 059c743bf..2b271282d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Site.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/Site.html @@ -2,13 +2,13 @@ - + -Site (dependency-check-core 1.0.1 API) +Site (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Site (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Site (dependency-check-core 1.0.1 API)"; + parent.document.title="Site (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Activation.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Activation.html index 86cf2a36e..dde97ec7a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Activation.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Activation.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Activation (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Activation (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Activation (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Activation (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Activation (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationFile.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationFile.html index 86274f64e..a0a4129f8 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationFile.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationFile.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile (depen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationOS.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationOS.html index a4310079a..ac48bb186 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationOS.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationOS.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS (depende function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationProperty.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationProperty.html index dd73803b8..e6ba20d52 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationProperty.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ActivationProperty.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty (d function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Extensions.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Extensions.html index 1c83e6ab8..faae6cfd1 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Extensions.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Extensions.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Extensions (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Extensions (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Extensions (dep function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Extensions (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Extensions (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Filters.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Filters.html index 144cb2ef4..01677b8af 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Filters.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Filters.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Filters (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Filters (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Filters (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Filters (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Filters (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Plugins.html index 0da355c20..f55cf8163 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Plugins.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Plugins (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Plugins (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Resources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Resources.html index 03d8b1a2c..d2660a190 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Resources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.Resources.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources (depe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.TestResources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.TestResources.html index 6a1394514..ea5b49255 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.TestResources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.TestResources.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.TestResources (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.TestResources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.TestResources ( function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.TestResources (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build.TestResources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.html index 0196dab66..0737b9542 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Build.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build (dependency-che function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Build (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Filters.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Filters.html index b1309852e..5a75c0cb7 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Filters.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Filters.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Filters (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Filters (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Filters (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Filters (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Filters (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Plugins.html index 222fd9880..b6678c136 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Plugins.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Plugins (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Plugins (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Resources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Resources.html index aeca494f4..4bc2e4bc5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Resources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.Resources.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Resources (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Resources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Resources ( function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Resources (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Resources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.TestResources.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.TestResources.html index 95386f333..acec8f9b2 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.TestResources.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.TestResources.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResourc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.html index 85699f37e..033c0e656 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/BuildBase.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.BuildBase (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.Notifiers.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.Notifiers.html index f88003f58..a710538a0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.Notifiers.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.Notifiers.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifiers (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifiers (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifier function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifiers (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifiers (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.html index 830219a2a..20726d1bd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/CiManagement.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement (depende function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.CiManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Properties.html index 075bcb052..405af5679 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Properties.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Properties (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Propertie function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Roles.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Roles.html index 650fbae3f..2083c0867 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Roles.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.Roles.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.html index 86725fc17..ff57d6a57 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Contributor.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor (dependen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Contributor (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.Exclusions.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.Exclusions.html index 221585f9c..6d03a6ab1 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.Exclusions.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.Exclusions.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency.Exclusions (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency.Exclusions (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency.Exclusions function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency.Exclusions (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency.Exclusions (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.html index 37455da04..5cad1685b 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Dependency.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Dependency (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.Dependencies.html index fa4a5d049..838dacb1d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.Dependencies.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.Dependencies (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.html index f968b57b3..3b6bcf8c9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DependencyManagement.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DeploymentRepository.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DeploymentRepository.html index 6d37602b9..4ad3ab6c0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DeploymentRepository.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DeploymentRepository.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Properties.html index e7427505f..8d8642c9e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Properties.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Properties (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Properties function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Roles.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Roles.html index f661e041e..c02be385e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Roles.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.Roles.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Roles (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Roles (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Roles (depe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Roles (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer.Roles (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.html index 97651e1e7..9aaf56224 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Developer.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Developer (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DistributionManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DistributionManagement.html index b53c9328b..9c63a0839 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DistributionManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/DistributionManagement.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagemen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Exclusion.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Exclusion.html index 272937d0a..6d398170d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Exclusion.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Exclusion.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Exclusion (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Exclusion (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Exclusion (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Exclusion (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Exclusion (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Extension.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Extension.html index 56a01a5e6..f50741133 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Extension.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Extension.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Extension (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Extension (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Extension (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Extension (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Extension (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/IssueManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/IssueManagement.html index 97241eebd..8cc99689f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/IssueManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/IssueManagement.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement (depe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/License.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/License.html index 2817b2866..fb67d7462 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/License.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/License.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.License (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.License (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.License (dependency-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.License (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.License (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.OtherArchives.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.OtherArchives.html index 4e153ac78..2c87df59f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.OtherArchives.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.OtherArchives.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList.OtherArchives (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList.OtherArchives (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList.OtherArch function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList.OtherArchives (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList.OtherArchives (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.html index 54c994eb3..291423927 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/MailingList.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList (dependen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.MailingList (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Contributors.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Contributors.html index efb82f9ab..432e5aaa0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Contributors.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Contributors.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Contributors (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Contributors (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Contributors (d function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Contributors (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Contributors (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Dependencies.html index ef992ebc3..c6f9cf5d5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Dependencies.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Dependencies (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Dependencies (d function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Developers.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Developers.html index 78b108682..d120bc7d2 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Developers.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Developers.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Developers (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Developers (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Developers (dep function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Developers (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Developers (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Licenses.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Licenses.html index e4865a7d9..17e189bd8 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Licenses.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Licenses.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Licenses (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Licenses (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Licenses (depen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Licenses (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Licenses (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.MailingLists.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.MailingLists.html index 6dc4b8d44..4fa206eb7 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.MailingLists.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.MailingLists.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.MailingLists (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.MailingLists (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.MailingLists (d function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.MailingLists (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.MailingLists (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Modules.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Modules.html index 937b46bcc..99735f5ee 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Modules.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Modules.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.PluginRepositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.PluginRepositories.html index 25c44a09e..4c4c60972 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.PluginRepositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.PluginRepositories.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.PluginRepositories (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.PluginRepositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.PluginRepositor function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.PluginRepositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.PluginRepositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Profiles.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Profiles.html index b99ccba78..040926809 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Profiles.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Profiles.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Profiles (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Profiles (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Profiles (depen function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Profiles (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Profiles (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Properties.html index 970a748da..4b5188215 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Properties.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Properties (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Properties (dep function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Reports.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Reports.html index b0ad45856..969f274d5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Reports.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Reports.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Reports (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Reports (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Reports (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Reports (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Reports (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Repositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Repositories.html index fdfd29060..b2bc36f2a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Repositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.Repositories.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Repositories (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Repositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Repositories (d function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Repositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model.Repositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.html index acc07fe2c..5f52191ec 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Model.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model (dependency-che function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Model (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.Configuration.html index 78658eccd..9eb807066 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.Configuration.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier.Configuration (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier.Configuratio function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.html index 8d698ff6d..15e268eb4 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Notifier.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier (dependency- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Notifier (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ObjectFactory.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ObjectFactory.html index 8807a08b2..81fd642d9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ObjectFactory.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ObjectFactory.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Organization.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Organization.html index b150b33e0..d2734c410 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Organization.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Organization.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Organization (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Organization (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Organization (depende function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Organization (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Organization (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Parent.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Parent.html index 33898e051..905bbdf22 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Parent.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Parent.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Parent (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Parent (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Parent (dependency-ch function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Parent (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Parent (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Configuration.html index b77133fdb..5d0ef4b18 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Configuration.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Configuration (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Configuration function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Dependencies.html index 736eff90c..f68e918fb 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Dependencies.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Dependencies (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Dependencies ( function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Executions.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Executions.html index 8297120d1..b663aa436 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Executions.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Executions.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Executions (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Executions (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Executions (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Executions (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Executions (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Goals.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Goals.html index abc6d39dd..8d4229058 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Goals.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.Goals.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Goals (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Goals (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Goals (depende function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Goals (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Goals (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.html index c779b6720..509b5160f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Plugin.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin (dependency-ch function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Plugin (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Configuration.html index 69eaa60a7..d0959b94d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Configuration.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Configuration (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Confi function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Goals.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Goals.html index 086d73a34..d540ca1a4 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Goals.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.Goals.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Goals (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Goals (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Goals function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Goals (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Goals (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.html index 3516068db..e9636bcf5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginExecution.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution (depe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.Plugins.html index 5d827a3e3..7252692a7 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.Plugins.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.Plugins (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.Plug function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.html index 3ed4f3888..ae819abad 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/PluginManagement.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement (dep function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Prerequisites.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Prerequisites.html index 2d98bb6cf..10b5344a8 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Prerequisites.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Prerequisites.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Dependencies.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Dependencies.html index 18e35ffe4..9bc027372 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Dependencies.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Dependencies.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Dependencies (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Dependencies (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Dependencies function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Dependencies (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Dependencies (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Modules.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Modules.html index 9ad12aa73..af162c28b 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Modules.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Modules.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Modules (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Modules (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Modules (depe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Modules (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Modules (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.PluginRepositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.PluginRepositories.html index e84dc246b..51ef4d4a1 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.PluginRepositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.PluginRepositories.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.PluginRepositories (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.PluginRepositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.PluginReposit function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.PluginRepositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.PluginRepositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Properties.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Properties.html index ad70226d6..3f4dfd4a4 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Properties.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Properties.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Properties (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Properties (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Properties (d function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Properties (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Properties (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Reports.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Reports.html index 049210cf1..8d72d7f08 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Reports.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Reports.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Reports (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Reports (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Reports (depe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Reports (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Reports (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Repositories.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Repositories.html index 962dc50ac..7c85f6619 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Repositories.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.Repositories.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Repositories (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Repositories (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Repositories function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Repositories (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile.Repositories (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.html index 688c2c490..aaa2acc00 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Profile.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile (dependency-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Profile (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Relocation.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Relocation.html index b63cc0a9d..769cfa559 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Relocation.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Relocation.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Relocation (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Relocation (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Relocation (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Relocation (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Relocation (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.Configuration.html index c5cc7350c..37f0331e0 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.Configuration.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.Configuration (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.Configur function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.ReportSets.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.ReportSets.html index bc970e247..38efb906f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.ReportSets.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.ReportSets.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.ReportSets (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.ReportSets (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.ReportSe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.ReportSets (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.ReportSets (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.html index 7e6af47cf..b3859f144 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportPlugin.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin (depende function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Configuration.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Configuration.html index 3d19f4041..b33607431 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Configuration.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Configuration.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Configuration (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Configuration (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Configurati function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Configuration (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Configuration (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Reports.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Reports.html index 1430f7fde..21d00097d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Reports.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.Reports.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Reports (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Reports (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Reports (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Reports (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Reports (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.html index 150826538..b17497916 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/ReportSet.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.ReportSet (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.Plugins.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.Plugins.html index 958722f07..a43487c7e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.Plugins.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.Plugins.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting.Plugins (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting.Plugins (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting.Plugins (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting.Plugins (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting.Plugins (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.html index 8de4b34d9..f61b3b942 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Reporting.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting (dependency function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Reporting (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Repository.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Repository.html index be5202d64..1771ec265 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Repository.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Repository.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Repository (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Repository (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Repository (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Repository (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Repository (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/RepositoryPolicy.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/RepositoryPolicy.html index e535b1834..d05db4629 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/RepositoryPolicy.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/RepositoryPolicy.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy (dep function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Excludes.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Excludes.html index 0b80683a1..189a760e1 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Excludes.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Excludes.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Excludes (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Excludes (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Excludes (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Excludes (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Excludes (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Includes.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Includes.html index dbda43f1d..5a29eb625 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Includes.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.Includes.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Includes (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Includes (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Includes (de function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Includes (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource.Includes (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.html index e53ebca41..0be2d680b 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Resource.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource (dependency- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Resource (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Scm.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Scm.html index 2af1e10c6..8ffe40286 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Scm.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Scm.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Scm (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Scm (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Scm (dependency-check function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Scm (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Scm (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Site.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Site.html index 9d574c48f..dcfef253d 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Site.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/class-use/Site.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Site (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Site (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Site (dependency-chec function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Site (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.jaxb.pom.generated.Site (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html index 737872c0d..9b8b07769 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.jaxb.pom.generated (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.jaxb.pom.generated (Dependency-Check Core 1.0.2 API) - + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html index 6ab244367..84f4261f8 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.jaxb.pom.generated (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.jaxb.pom.generated (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.jaxb.pom.generated (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.jaxb.pom.generated (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.jaxb.pom.generated (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-tree.html index b5a3ebe6b..0e989318e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.jaxb.pom.generated Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.jaxb.pom.generated Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.jaxb.pom.generated Class Hierarchy (dependency-check-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.jaxb.pom.generated Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.jaxb.pom.generated Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-use.html index 971c9cf9e..fd1ab0a91 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/generated/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.jaxb.pom.generated (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.jaxb.pom.generated (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.jaxb.pom.generated (dependency-check-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.jaxb.pom.generated (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.jaxb.pom.generated (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-frame.html index 4b2cf7b43..f3e9cb0e8 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.jaxb.pom (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.jaxb.pom (Dependency-Check Core 1.0.2 API) - + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-summary.html index a7eaffada..087087d94 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.jaxb.pom (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.jaxb.pom (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.jaxb.pom (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.jaxb.pom (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.jaxb.pom (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-tree.html index d33faff35..df85537ce 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.jaxb.pom Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.jaxb.pom Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.jaxb.pom Class Hierarchy (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.jaxb.pom Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.jaxb.pom Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-use.html index 9bfa4a5e6..f16ce1180 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/jaxb/pom/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.jaxb.pom (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.jaxb.pom (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.jaxb.pom (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.jaxb.pom (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.jaxb.pom (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-frame.html index c28e15a53..d9a8cf1fb 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck (Dependency-Check Core 1.0.2 API) - + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-summary.html index 35873b2f2..a34c69a10 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-tree.html index 869b2f24f..f8b714cfd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck Class Hierarchy (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-use.html index d946df3db..c24f243e5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck (Dependency-Check Core 1.0.2 API)"; } } @@ -101,22 +101,13 @@ Packages that use - + - - - - + Includes various utility classes such as a Settings wrapper, a Checksum utility, etc. 
    -Classes in org.owasp.dependencycheck.dependency used by org.owasp.dependencycheck.data.nvdcve.xml
    Vulnerability - -
    -          Contains the information about a vulnerability.
    VulnerableSoftware -
              A record containing information about vulnerable software.
    org.owasp.dependencycheck.data.cpeorg.owasp.dependencycheck.utils - org.owasp.dependencycheck.data.cpe + org.owasp.dependencycheck.utils - Contains classes for working with the CPE Lucene Index. 
    org.owasp.dependencycheck.data.nvdcve - - org.owasp.dependencycheck.data.nvdcve - - - Contains classes used to work with the NVD CVE data. 
      @@ -136,29 +127,14 @@ Classes in org

     

    - + +Classes in org.owasp.dependencycheck used by org.owasp.dependencycheck.utils - - -
    -Classes in org.owasp.dependencycheck used by org.owasp.dependencycheck.data.cpe
    Engine - -
    -          Scans files, directories, etc.
    -  -

    - - - - - - - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.Format.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.Format.html index ba6770aa1..e5d3b2a35 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.Format.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.Format.html @@ -2,13 +2,13 @@ - + -ReportGenerator.Format (dependency-check-core 1.0.1 API) +ReportGenerator.Format (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportGenerator.Format (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportGenerator.Format (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportGenerator.Format (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.html index fd13e6b82..31dafccdc 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/ReportGenerator.html @@ -2,13 +2,13 @@ - + -ReportGenerator (dependency-check-core 1.0.1 API) +ReportGenerator (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ ReportGenerator (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ReportGenerator (dependency-check-core 1.0.1 API)"; + parent.document.title="ReportGenerator (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/VelocityLoggerRedirect.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/VelocityLoggerRedirect.html index a81faf2f0..c85926361 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/VelocityLoggerRedirect.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/VelocityLoggerRedirect.html @@ -2,13 +2,13 @@ - + -VelocityLoggerRedirect (dependency-check-core 1.0.1 API) +VelocityLoggerRedirect (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ VelocityLoggerRedirect (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="VelocityLoggerRedirect (dependency-check-core 1.0.1 API)"; + parent.document.title="VelocityLoggerRedirect (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.Format.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.Format.html index ee0ce3b04..1ca3c1f21 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.Format.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.Format.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator.Format (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator.Format (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator.Format (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator.Format (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator.Format (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.html index 443843730..f2ed95ad5 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/ReportGenerator.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator (dependency-ch function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.reporting.ReportGenerator (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/VelocityLoggerRedirect.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/VelocityLoggerRedirect.html index aab692049..8032e4bcf 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/VelocityLoggerRedirect.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/class-use/VelocityLoggerRedirect.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.reporting.VelocityLoggerRedirect (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.reporting.VelocityLoggerRedirect (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.reporting.VelocityLoggerRedirect (depend function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.reporting.VelocityLoggerRedirect (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.reporting.VelocityLoggerRedirect (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-frame.html index dce95c175..fbf1e2a3b 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.reporting (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.reporting (Dependency-Check Core 1.0.2 API) - + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-summary.html index 95d500cc3..71c8eaf3a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.reporting (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.reporting (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.reporting (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.reporting (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.reporting (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-tree.html index 3d9224bb8..5604c057f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.reporting Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.reporting Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.reporting Class Hierarchy (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.reporting Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.reporting Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-use.html index 3e659fc6f..81038034a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/reporting/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.reporting (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.reporting (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.reporting (dependency-check-core 1.0.1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.reporting (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.reporting (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Checksum.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Checksum.html index 6452d8cd6..bc3005ba9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Checksum.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Checksum.html @@ -2,13 +2,13 @@ - + -Checksum (dependency-check-core 1.0.1 API) +Checksum (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Checksum (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Checksum (dependency-check-core 1.0.1 API)"; + parent.document.title="Checksum (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersion.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersion.html index ac414d25c..a5738e438 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersion.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersion.html @@ -2,13 +2,13 @@ - + -DependencyVersion (dependency-check-core 1.0.1 API) +DependencyVersion (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DependencyVersion (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DependencyVersion (dependency-check-core 1.0.1 API)"; + parent.document.title="DependencyVersion (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersionUtil.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersionUtil.html index afd908d0d..504c5b4bf 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersionUtil.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DependencyVersionUtil.html @@ -2,13 +2,13 @@ - + -DependencyVersionUtil (dependency-check-core 1.0.1 API) +DependencyVersionUtil (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DependencyVersionUtil (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DependencyVersionUtil (dependency-check-core 1.0.1 API)"; + parent.document.title="DependencyVersionUtil (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DownloadFailedException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DownloadFailedException.html index 25af082f4..a9a85c99e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DownloadFailedException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/DownloadFailedException.html @@ -2,13 +2,13 @@ - + -DownloadFailedException (dependency-check-core 1.0.1 API) +DownloadFailedException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ DownloadFailedException (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="DownloadFailedException (dependency-check-core 1.0.1 API)"; + parent.document.title="DownloadFailedException (Dependency-Check Core 1.0.2 API)"; } } @@ -57,7 +57,7 @@ function windowTitle() + NEXT CLASSNEXT CLASS - - - - - - - - - - - - @@ -192,44 +163,6 @@ A utility to download files from the Internet.
    -Classes in org.owasp.dependencycheck used by org.owasp.dependencycheck.data.nvdcve
    Engine +Engine
              Scans files, directories, etc.
    fetchFile(URL url, File outputPath) -
    -          Retrieves a file from a given URL and saves it to the outputPath.
    -static voidfetchFile(URL url, - File outputPath, - boolean unzip) - -
    -          Retrieves a file from a given URL and saves it to the outputPath.
    -static voidfetchFile(URL url, - String outputPath) - -
    -          Retrieves a file from a given URL and saves it to the outputPath.
    -static voidfetchFile(URL url, - String outputPath, - boolean unzip) -
              Retrieves a file from a given URL and saves it to the outputPath.
    -

    -fetchFile

    -
    -public static void fetchFile(URL url,
    -                             String outputPath)
    -                      throws DownloadFailedException
    -
    -
    Retrieves a file from a given URL and saves it to the outputPath. -

    -

    -
    Parameters:
    url - the URL of the file to download.
    outputPath - the path to the save the file to. -
    Throws: -
    DownloadFailedException - is thrown if there is an error - downloading the file.
    -
    -
    -
    - -

    -fetchFile

    -
    -public static void fetchFile(URL url,
    -                             String outputPath,
    -                             boolean unzip)
    -                      throws DownloadFailedException
    -
    -
    Retrieves a file from a given URL and saves it to the outputPath. -

    -

    -
    Parameters:
    url - the URL of the file to download.
    outputPath - the path to the save the file to.
    unzip - true/false indicating that the file being retrieved is - gzipped and if true, should be uncompressed before writing to the file. -
    Throws: -
    DownloadFailedException - is thrown if there is an error - downloading the file.
    -
    -
    -
    -

    fetchFile

    @@ -248,26 +181,6 @@ public static void fetchFile(

    -fetchFile

    -
    -public static void fetchFile(URL url,
    -                             File outputPath,
    -                             boolean unzip)
    -                      throws DownloadFailedException
    -
    -
    Retrieves a file from a given URL and saves it to the outputPath. -

    -

    -
    Parameters:
    url - the URL of the file to download.
    outputPath - the path to the save the file to.
    unzip - true/false indicating that the file being retrieved is - gzipped and if true, should be uncompressed before writing to the file. -
    Throws: -
    DownloadFailedException - is thrown if there is an error - downloading the file.
    -
    -
    -
    -

    getLastModified

    @@ -275,7 +188,8 @@ public static long getLastModified(DownloadFailedException
    Makes an HTTP Head request to retrieve the last modified date of the - given URL. + given URL. If the file:// protocol is specified, then the lastTimestamp + of the file is returned.

    Parameters:
    url - the URL to retrieve the timestamp from diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/ExtractionException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/ExtractionException.html new file mode 100644 index 000000000..2bc502d40 --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/ExtractionException.html @@ -0,0 +1,306 @@ + + + + + + + +ExtractionException (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.owasp.dependencycheck.utils +
    +Class ExtractionException

    +
    +java.lang.Object
    +  extended by java.lang.Throwable
    +      extended by java.lang.Exception
    +          extended by java.io.IOException
    +              extended by org.owasp.dependencycheck.utils.ExtractionException
    +
    +
    +
    All Implemented Interfaces:
    Serializable
    +
    +
    +
    +
    public class ExtractionException
    extends IOException
    +
    + +

    +An exception used when a file is unable to be un-zipped. +

    + +

    +

    +
    Author:
    +
    Jeremy Long (jeremy.long@owasp.org)
    +
    See Also:
    Serialized Form
    +
    + +

    + + + + + + + + + + + + + + + + + + + + +
    +Constructor Summary
    ExtractionException() + +
    +          Creates a new ExtractionException.
    ExtractionException(String msg) + +
    +          Creates a new ExtractionException.
    ExtractionException(String msg, + Throwable ex) + +
    +          Creates a new ExtractionException.
    ExtractionException(Throwable ex) + +
    +          Creates a new ExtractionException.
    +  + + + + + + + +
    +Method Summary
    + + + + + + + +
    Methods inherited from class java.lang.Throwable
    fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +  +

    + + + + + + + + +
    +Constructor Detail
    + +

    +ExtractionException

    +
    +public ExtractionException()
    +
    +
    Creates a new ExtractionException. +

    +

    +
    + +

    +ExtractionException

    +
    +public ExtractionException(String msg)
    +
    +
    Creates a new ExtractionException. +

    +

    +
    Parameters:
    msg - a message for the exception.
    +
    +
    + +

    +ExtractionException

    +
    +public ExtractionException(Throwable ex)
    +
    +
    Creates a new ExtractionException. +

    +

    +
    Parameters:
    ex - the cause of the download failure.
    +
    +
    + +

    +ExtractionException

    +
    +public ExtractionException(String msg,
    +                           Throwable ex)
    +
    +
    Creates a new ExtractionException. +

    +

    +
    Parameters:
    msg - a message for the exception.
    ex - the cause of the download failure.
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/FileUtils.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/FileUtils.html index 988f9547f..cf7a97838 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/FileUtils.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/FileUtils.html @@ -2,13 +2,13 @@ - + -FileUtils (dependency-check-core 1.0.1 API) +FileUtils (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ FileUtils (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="FileUtils (dependency-check-core 1.0.1 API)"; + parent.document.title="FileUtils (Dependency-Check Core 1.0.2 API)"; } } @@ -56,7 +56,7 @@ function windowTitle() PREV CLASS  + PREV CLASS   NEXT CLASS FRAMES   @@ -132,6 +132,34 @@ A collection of utilities for processing information about files. +static void +delete(File file, + boolean deleteOnExit) + +
    +          Deletes a file. + + + +static void +extractFiles(File archive, + File extractTo) + +
    +          Extracts the contents of an archive into the specified directory. + + + +static void +extractFiles(File archive, + File extractTo, + Engine engine) + +
    +          Extracts the contents of an archive into the specified directory. + + + static File getDataDirectory(String configuredFilePath, Class clazz) @@ -211,6 +239,26 @@ public static void delete(

    +delete

    +
    +public static void delete(File file,
    +                          boolean deleteOnExit)
    +                   throws IOException
    +
    +
    Deletes a file. If the File is a directory it will recursively delete the + contents. +

    +

    +
    Parameters:
    file - the File to delete
    deleteOnExit - setting this to true will cause errors to be ignored + and if there is an error deleting the file it will be setup to be deleted + when the JVM exits. +
    Throws: +
    IOException - is thrown if the file could not be deleted
    +
    +
    +
    +

    getDataDirectory

    @@ -259,6 +307,46 @@ getPathToJar
     
    UnsupportedEncodingException - thrown if UTF-8 is not supported.
    +
    + +

    +extractFiles

    +
    +public static void extractFiles(File archive,
    +                                File extractTo)
    +                         throws ExtractionException
    +
    +
    Extracts the contents of an archive into the specified directory. +

    +

    +
    Parameters:
    archive - an archive file such as a WAR or EAR
    extractTo - a directory to extract the contents to +
    Throws: +
    ExtractionException - thrown if an exception occurs while + extracting the files
    +
    +
    +
    + +

    +extractFiles

    +
    +public static void extractFiles(File archive,
    +                                File extractTo,
    +                                Engine engine)
    +                         throws ExtractionException
    +
    +
    Extracts the contents of an archive into the specified directory. The + files are only extracted if they are supported by the analyzers loaded + into the specified engine. If the engine is specified as null then all + files are extracted. +

    +

    +
    Parameters:
    archive - an archive file such as a WAR or EAR
    extractTo - a directory to extract the contents to
    engine - the scanning engine +
    Throws: +
    ExtractionException - thrown if there is an error extracting the + files
    +
    +

    @@ -290,7 +378,7 @@ getPathToJar PREV CLASS  + PREV CLASS   NEXT CLASS FRAMES   diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Filter.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Filter.html index 3f376879a..81f03de60 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Filter.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Filter.html @@ -2,13 +2,13 @@ - + -Filter (dependency-check-core 1.0.1 API) +Filter (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Filter (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Filter (dependency-check-core 1.0.1 API)"; + parent.document.title="Filter (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/InvalidSettingException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/InvalidSettingException.html index 112eb0771..4aa6edf02 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/InvalidSettingException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/InvalidSettingException.html @@ -2,13 +2,13 @@ - + -InvalidSettingException (dependency-check-core 1.0.1 API) +InvalidSettingException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ InvalidSettingException (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="InvalidSettingException (dependency-check-core 1.0.1 API)"; + parent.document.title="InvalidSettingException (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/NonClosingStream.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/NonClosingStream.html index 9e6bbce23..db06ffc85 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/NonClosingStream.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/NonClosingStream.html @@ -2,13 +2,13 @@ - + -NonClosingStream (dependency-check-core 1.0.1 API) +NonClosingStream (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ NonClosingStream (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="NonClosingStream (dependency-check-core 1.0.1 API)"; + parent.document.title="NonClosingStream (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.KEYS.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.KEYS.html index a10eea0b0..234e6ce5a 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.KEYS.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.KEYS.html @@ -2,13 +2,13 @@ - + -Settings.KEYS (dependency-check-core 1.0.1 API) +Settings.KEYS (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Settings.KEYS (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Settings.KEYS (dependency-check-core 1.0.1 API)"; + parent.document.title="Settings.KEYS (Dependency-Check Core 1.0.2 API)"; } } @@ -132,6 +132,14 @@ The collection of keys used within the properties file. static String +BATCH_UPDATE_URL + +
    +          The location of the batch update URL. + + + +static String CONNECTION_TIMEOUT
    @@ -149,22 +157,6 @@ The collection of keys used within the properties file. static String -CPE_META_URL - -
    -          The properties key for the URL to the CPE. - - - -static String -CPE_URL - -
    -          The properties key for the URL to the CPE. - - - -static String CVE_DATA_DIRECTORY
    @@ -364,6 +356,19 @@ public static final

    +BATCH_UPDATE_URL

    +
    +public static final String BATCH_UPDATE_URL
    +
    +
    The location of the batch update URL. This is a zip file that + contains the contents of the data directory. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    +

    CPE_DATA_DIRECTORY

    @@ -390,30 +395,6 @@ public static final 

    -CPE_URL

    -
    -public static final String CPE_URL
    -
    -
    The properties key for the URL to the CPE. -

    -

    -
    See Also:
    Constant Field Values
    -
    -
    - -

    -CPE_META_URL

    -
    -public static final String CPE_META_URL
    -
    -
    The properties key for the URL to the CPE. -

    -

    -
    See Also:
    Constant Field Values
    -
    -
    -

    CVE_META_URL

    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.html
    index 5936a8001..da3902232 100644
    --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.html
    +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/Settings.html
    @@ -2,13 +2,13 @@
     
     
     
    -
    +
     
     
    -Settings (dependency-check-core 1.0.1 API)
    +Settings (Dependency-Check Core 1.0.2 API)
     
     
    -
    +
     
     
     
    @@ -16,7 +16,7 @@ Settings (dependency-check-core 1.0.1 API)
     function windowTitle()
     {
         if (location.href.indexOf('is-external=true') == -1) {
    -        parent.document.title="Settings (dependency-check-core 1.0.1 API)";
    +        parent.document.title="Settings (Dependency-Check Core 1.0.2 API)";
         }
     }
     
    @@ -152,15 +152,6 @@ A simple settings container that wraps the dependencycheck.properties file.
     static File
     getFile(String key)
     
    -
    -          Returns a value from the properties file as a File object. - - - -static File -getFile(String key, - String defaultValue) -
              Returns a value from the properties file as a File object. @@ -208,6 +199,14 @@ A simple settings container that wraps the dependencycheck.properties file. +static File +getTempDirectory() + +
    +          Returns the temporary directory. + + + static void mergeProperties(InputStream stream) @@ -225,6 +224,14 @@ A simple settings container that wraps the dependencycheck.properties file. static void +removeProperty(String key) + +
    +          Removes a property from the local properties collection. + + + +static void setBoolean(String key, boolean value) @@ -334,29 +341,10 @@ public static void mergeProperties(

    -getFile

    -
    -public static File getFile(String key,
    -                           String defaultValue)
    -
    -
    Returns a value from the properties file as a File object. If the value - was specified as a system property or passed in via the -Dprop=value - argument - this method will return the value from the system properties - before the values in the contained configuration file. -

    -

    -
    Parameters:
    key - the key to lookup within the properties file
    defaultValue - the default value for the requested property -
    Returns:
    the property from the properties file as a File object
    -
    -
    -
    -

    getFile

    -public static File getFile(String key)
    -                    throws IOException
    +public static File getFile(String key)
    Returns a value from the properties file as a File object. If the value was specified as a system property or passed in via the -Dprop=value @@ -368,9 +356,7 @@ public static IOException - thrown if the file path to the JAR cannot be found
    +
    Returns:
    the property from the properties file converted to a File object

    @@ -393,6 +379,20 @@ public static

    +getTempDirectory

    +
    +public static File getTempDirectory()
    +
    +
    Returns the temporary directory. +

    +

    + +
    Returns:
    the temporary directory
    +
    +
    +
    +

    getString

    @@ -410,6 +410,20 @@ public static 

    +removeProperty

    +
    +public static void removeProperty(String key)
    +
    +
    Removes a property from the local properties collection. This is mainly + used in test cases. +

    +

    +
    Parameters:
    key - the property key to remove
    +
    +
    +
    +

    getInt

    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/UrlStringUtils.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/UrlStringUtils.html
    index 842a4748f..25cb31200 100644
    --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/UrlStringUtils.html
    +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/UrlStringUtils.html
    @@ -2,13 +2,13 @@
     
     
     
    -
    +
     
     
    -UrlStringUtils (dependency-check-core 1.0.1 API)
    +UrlStringUtils (Dependency-Check Core 1.0.2 API)
     
     
    -
    +
     
     
     
    @@ -16,7 +16,7 @@ UrlStringUtils (dependency-check-core 1.0.1 API)
     function windowTitle()
     {
         if (location.href.indexOf('is-external=true') == -1) {
    -        parent.document.title="UrlStringUtils (dependency-check-core 1.0.1 API)";
    +        parent.document.title="UrlStringUtils (Dependency-Check Core 1.0.2 API)";
         }
     }
     
    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Checksum.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Checksum.html
    index e180fe830..edbfbe403 100644
    --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Checksum.html
    +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Checksum.html
    @@ -2,13 +2,13 @@
     
     
     
    -
    +
     
     
    -Uses of Class org.owasp.dependencycheck.utils.Checksum (dependency-check-core 1.0.1 API)
    +Uses of Class org.owasp.dependencycheck.utils.Checksum (Dependency-Check Core 1.0.2 API)
     
     
    -
    +
     
     
     
    @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.Checksum (dependency-check-core 1.
     function windowTitle()
     {
         if (location.href.indexOf('is-external=true') == -1) {
    -        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Checksum (dependency-check-core 1.0.1 API)";
    +        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Checksum (Dependency-Check Core 1.0.2 API)";
         }
     }
     
    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersion.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersion.html
    index 8a7191b81..aa5434c32 100644
    --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersion.html
    +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersion.html
    @@ -2,13 +2,13 @@
     
     
     
    -
    +
     
     
    -Uses of Class org.owasp.dependencycheck.utils.DependencyVersion (dependency-check-core 1.0.1 API)
    +Uses of Class org.owasp.dependencycheck.utils.DependencyVersion (Dependency-Check Core 1.0.2 API)
     
     
    -
    +
     
     
     
    @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.DependencyVersion (dependency-chec
     function windowTitle()
     {
         if (location.href.indexOf('is-external=true') == -1) {
    -        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.DependencyVersion (dependency-check-core 1.0.1 API)";
    +        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.DependencyVersion (Dependency-Check Core 1.0.2 API)";
         }
     }
     
    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersionUtil.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersionUtil.html
    index 033bc2fdf..8e62568fc 100644
    --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersionUtil.html
    +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DependencyVersionUtil.html
    @@ -2,13 +2,13 @@
     
     
     
    -
    +
     
     
    -Uses of Class org.owasp.dependencycheck.utils.DependencyVersionUtil (dependency-check-core 1.0.1 API)
    +Uses of Class org.owasp.dependencycheck.utils.DependencyVersionUtil (Dependency-Check Core 1.0.2 API)
     
     
    -
    +
     
     
     
    @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.DependencyVersionUtil (dependency-
     function windowTitle()
     {
         if (location.href.indexOf('is-external=true') == -1) {
    -        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.DependencyVersionUtil (dependency-check-core 1.0.1 API)";
    +        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.DependencyVersionUtil (Dependency-Check Core 1.0.2 API)";
         }
     }
     
    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DownloadFailedException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DownloadFailedException.html
    index 2c35169f3..3e2a3395d 100644
    --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DownloadFailedException.html
    +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/DownloadFailedException.html
    @@ -2,13 +2,13 @@
     
     
     
    -
    +
     
     
    -Uses of Class org.owasp.dependencycheck.utils.DownloadFailedException (dependency-check-core 1.0.1 API)
    +Uses of Class org.owasp.dependencycheck.utils.DownloadFailedException (Dependency-Check Core 1.0.2 API)
     
     
    -
    +
     
     
     
    @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.DownloadFailedException (dependenc
     function windowTitle()
     {
         if (location.href.indexOf('is-external=true') == -1) {
    -        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.DownloadFailedException (dependency-check-core 1.0.1 API)";
    +        parent.document.title="Uses of Class org.owasp.dependencycheck.utils.DownloadFailedException (Dependency-Check Core 1.0.2 API)";
         }
     }
     
    @@ -91,14 +91,6 @@ function windowTitle()
     Packages that use DownloadFailedException
     
     
    -org.owasp.dependencycheck.data.nvdcve.xml
    -
    - 
    - org.owasp.dependencycheck.data.nvdcve.xml
    - 
    -  
    -
    -
     org.owasp.dependencycheck.utils
     
      
    @@ -110,39 +102,6 @@ Packages that use 
    -
    -
    -
    -
    -
    -Uses of DownloadFailedException in org.owasp.dependencycheck.data.nvdcve.xml
    -  -

    - - - - - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.nvdcve.xml that throw DownloadFailedException
    -protected  Map<String,DatabaseUpdater.NvdCveUrl>DatabaseUpdater.retrieveCurrentTimestampsFromWeb() - -
    -          Retrieves the timestamps from the NVD CVE meta data file.
    - Map<String,DatabaseUpdater.NvdCveUrl>DatabaseUpdater.updateNeeded() - -
    -          Determines if the index needs to be updated.
    -  -

    @@ -163,35 +122,6 @@ Uses of fetchFile(URL url, File outputPath) -
    -          Retrieves a file from a given URL and saves it to the outputPath. - - - - - - - - - - - - diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Downloader.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Downloader.html index c7520cc48..482fe7811 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Downloader.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Downloader.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.Downloader (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.Downloader (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.Downloader (dependency-check-core function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Downloader (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Downloader (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/ExtractionException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/ExtractionException.html new file mode 100644 index 000000000..bd38b0a6e --- /dev/null +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/ExtractionException.html @@ -0,0 +1,197 @@ + + + + + + + +Uses of Class org.owasp.dependencycheck.utils.ExtractionException (Dependency-Check Core 1.0.2 API) + + + + + + + + + + + + +
    + + + + + +
    -static voidDownloader.fetchFile(URL url, - File outputPath, - boolean unzip) - -
    -          Retrieves a file from a given URL and saves it to the outputPath.
    -static voidDownloader.fetchFile(URL url, - String outputPath) - -
    -          Retrieves a file from a given URL and saves it to the outputPath.
    -static voidDownloader.fetchFile(URL url, - String outputPath, - boolean unzip) -
              Retrieves a file from a given URL and saves it to the outputPath.
    + + + + + + + + + +
    + +
    + + + +


    +
    +

    +Uses of Class
    org.owasp.dependencycheck.utils.ExtractionException

    +
    + + + + + + + + + +
    +Packages that use ExtractionException
    org.owasp.dependencycheck.utils + + org.owasp.dependencycheck.utils + + + Includes various utility classes such as a Settings wrapper, a Checksum utility, etc. 
    +  +

    + + + + + +
    +Uses of ExtractionException in org.owasp.dependencycheck.utils
    +  +

    + + + + + + + + + + + + + +
    Methods in org.owasp.dependencycheck.utils that throw ExtractionException
    +static voidFileUtils.extractFiles(File archive, + File extractTo) + +
    +          Extracts the contents of an archive into the specified directory.
    +static voidFileUtils.extractFiles(File archive, + File extractTo, + Engine engine) + +
    +          Extracts the contents of an archive into the specified directory.
    +  +

    +


    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +Copyright © 2012-2013 OWASP. All Rights Reserved. + + diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/FileUtils.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/FileUtils.html index a9f356808..db68ab416 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/FileUtils.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/FileUtils.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.FileUtils (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.FileUtils (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.FileUtils (dependency-check-core 1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.FileUtils (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.FileUtils (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Filter.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Filter.html index e69cf719d..e84c3648e 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Filter.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Filter.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.Filter (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.Filter (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.Filter (dependency-check-core 1.0. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Filter (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Filter (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/InvalidSettingException.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/InvalidSettingException.html index 2259703ea..8e51d14ed 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/InvalidSettingException.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/InvalidSettingException.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.InvalidSettingException (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.InvalidSettingException (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.InvalidSettingException (dependenc function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.InvalidSettingException (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.InvalidSettingException (Dependency-Check Core 1.0.2 API)"; } } @@ -91,14 +91,6 @@ function windowTitle() Packages that use InvalidSettingException -org.owasp.dependencycheck.data.nvdcve.xml - - - org.owasp.dependencycheck.data.nvdcve.xml - -   - - org.owasp.dependencycheck.utils @@ -110,31 +102,6 @@ Packages that use - - - - -
    -Uses of InvalidSettingException in org.owasp.dependencycheck.data.nvdcve.xml
    -  -

    - - - - - - - - - -
    Methods in org.owasp.dependencycheck.data.nvdcve.xml that throw InvalidSettingException
    -protected  Map<String,DatabaseUpdater.NvdCveUrl>DatabaseUpdater.retrieveCurrentTimestampsFromWeb() - -
    -          Retrieves the timestamps from the NVD CVE meta data file.
    -  -

    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/NonClosingStream.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/NonClosingStream.html index 32557b980..59af61fef 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/NonClosingStream.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/NonClosingStream.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.NonClosingStream (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.NonClosingStream (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.NonClosingStream (dependency-check function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.NonClosingStream (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.NonClosingStream (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.KEYS.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.KEYS.html index b6422080e..f62835d5f 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.KEYS.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.KEYS.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.Settings.KEYS (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.Settings.KEYS (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.Settings.KEYS (dependency-check-co function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Settings.KEYS (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Settings.KEYS (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.html index 47099e246..d0d038a10 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/Settings.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.Settings (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.Settings (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.Settings (dependency-check-core 1. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Settings (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.Settings (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/UrlStringUtils.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/UrlStringUtils.html index abba9f526..e110ef6a9 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/UrlStringUtils.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/class-use/UrlStringUtils.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.utils.UrlStringUtils (dependency-check-core 1.0.1 API) +Uses of Class org.owasp.dependencycheck.utils.UrlStringUtils (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.utils.UrlStringUtils (dependency-check-c function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.utils.UrlStringUtils (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.utils.UrlStringUtils (Dependency-Check Core 1.0.2 API)"; } } diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-frame.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-frame.html index 9a9370ffe..fc65681e1 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-frame.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.utils (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.utils (Dependency-Check Core 1.0.2 API) - + @@ -55,6 +55,8 @@ Exceptions 
    DownloadFailedException
    +ExtractionException +
    InvalidSettingException
    diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-summary.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-summary.html index 3ea911ba3..e1a2e97cd 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-summary.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.utils (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.utils (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.utils (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.utils (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.utils (Dependency-Check Core 1.0.2 API)"; } } @@ -157,6 +157,10 @@ Package org.owasp.dependencycheck.utils An exception used when a download fails. +ExtractionException +An exception used when a file is unable to be un-zipped. + + InvalidSettingException An exception used when an error occurs reading a setting. diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-tree.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-tree.html index 1102414eb..7bd135f57 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-tree.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.utils Class Hierarchy (dependency-check-core 1.0.1 API) +org.owasp.dependencycheck.utils Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.utils Class Hierarchy (dependency-check-core 1.0.1 API function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.utils Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.utils Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } @@ -103,7 +103,7 @@ Class Hierarchy

  • org.owasp.dependencycheck.utils.UrlStringUtils diff --git a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-use.html b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-use.html index 991d0466d..b0b0bbafe 100644 --- a/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-use.html +++ b/dependency-check-core/apidocs/org/owasp/dependencycheck/utils/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.utils (dependency-check-core 1.0.1 API) +Uses of Package org.owasp.dependencycheck.utils (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.utils (dependency-check-core 1.0.1 API function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.utils (dependency-check-core 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.utils (Dependency-Check Core 1.0.2 API)"; } } @@ -91,14 +91,6 @@ function windowTitle() Packages that use org.owasp.dependencycheck.utils -org.owasp.dependencycheck.data.nvdcve.xml - - - org.owasp.dependencycheck.data.nvdcve.xml - -   - - org.owasp.dependencycheck.dependency @@ -119,27 +111,6 @@ Packages that use - - - - - - - - - - -
    -Classes in org.owasp.dependencycheck.utils used by org.owasp.dependencycheck.data.nvdcve.xml
    DownloadFailedException - -
    -          An exception used when a download fails.
    InvalidSettingException - -
    -          An exception used when an error occurs reading a setting.
    -  -

    @@ -174,6 +145,12 @@ Classes in + + + + + + + - +
    ExtractionException + +
    +          An exception used when a file is unable to be un-zipped.
    InvalidSettingException
    diff --git a/dependency-check-core/apidocs/overview-frame.html b/dependency-check-core/apidocs/overview-frame.html index 22cec39c9..b0ef9953a 100644 --- a/dependency-check-core/apidocs/overview-frame.html +++ b/dependency-check-core/apidocs/overview-frame.html @@ -2,13 +2,13 @@ - + -Overview List (dependency-check-core 1.0.1 API) +Overview List (Dependency-Check Core 1.0.2 API) - + @@ -35,6 +35,8 @@ Packages
    org.owasp.dependencycheck.analyzer
    +org.owasp.dependencycheck.concurrency +
    org.owasp.dependencycheck.data
    org.owasp.dependencycheck.data.cpe @@ -45,7 +47,7 @@ Packages
    org.owasp.dependencycheck.data.nvdcve
    -org.owasp.dependencycheck.data.nvdcve.xml +org.owasp.dependencycheck.data.update
    org.owasp.dependencycheck.dependency
    diff --git a/dependency-check-core/apidocs/overview-summary.html b/dependency-check-core/apidocs/overview-summary.html index 17614606e..930efb0c8 100644 --- a/dependency-check-core/apidocs/overview-summary.html +++ b/dependency-check-core/apidocs/overview-summary.html @@ -2,13 +2,13 @@ - + -Overview (dependency-check-core 1.0.1 API) +Overview (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Overview (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Overview (dependency-check-core 1.0.1 API)"; + parent.document.title="Overview (Dependency-Check Core 1.0.2 API)"; } } @@ -82,7 +82,7 @@ function windowTitle()

    -dependency-check-core 1.0.1 API +Dependency-Check Core 1.0.2 API

    @@ -111,6 +111,15 @@ dependency-check-core 1.0.1 API and process the dependencies.
    org.owasp.dependencycheck.concurrency + + org.owasp.dependencycheck.concurrency + + + Contains classes used to create shared and exclusive locks on directories.
    org.owasp.dependencycheck.data @@ -156,7 +165,7 @@ dependency-check-core 1.0.1 API Contains classes used to work with the NVD CVE data.
    org.owasp.dependencycheck.data.nvdcve.xmlorg.owasp.dependencycheck.data.update org.owasp.dependencycheck.data.nvdcve.xml diff --git a/dependency-check-core/apidocs/overview-tree.html b/dependency-check-core/apidocs/overview-tree.html index 6f1832f25..b76a7f3b4 100644 --- a/dependency-check-core/apidocs/overview-tree.html +++ b/dependency-check-core/apidocs/overview-tree.html @@ -2,13 +2,13 @@ - + -Class Hierarchy (dependency-check-core 1.0.1 API) +Class Hierarchy (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Class Hierarchy (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Class Hierarchy (dependency-check-core 1.0.1 API)"; + parent.document.title="Class Hierarchy (Dependency-Check Core 1.0.2 API)"; } } @@ -85,7 +85,7 @@ function windowTitle() Hierarchy For All Packages
    -
    Package Hierarchies:
    org.owasp.dependencycheck, org.owasp.dependencycheck.analyzer, org.owasp.dependencycheck.data, org.owasp.dependencycheck.data.cpe, org.owasp.dependencycheck.data.cwe, org.owasp.dependencycheck.data.lucene, org.owasp.dependencycheck.data.nvdcve, org.owasp.dependencycheck.data.nvdcve.xml, org.owasp.dependencycheck.dependency, org.owasp.dependencycheck.jaxb.pom, org.owasp.dependencycheck.jaxb.pom.generated, org.owasp.dependencycheck.reporting, org.owasp.dependencycheck.utils
    +
    Package Hierarchies:
    org.owasp.dependencycheck, org.owasp.dependencycheck.analyzer, org.owasp.dependencycheck.concurrency, org.owasp.dependencycheck.data, org.owasp.dependencycheck.data.cpe, org.owasp.dependencycheck.data.cwe, org.owasp.dependencycheck.data.lucene, org.owasp.dependencycheck.data.nvdcve, org.owasp.dependencycheck.data.update, org.owasp.dependencycheck.dependency, org.owasp.dependencycheck.jaxb.pom, org.owasp.dependencycheck.jaxb.pom.generated, org.owasp.dependencycheck.reporting, org.owasp.dependencycheck.utils

    Class Hierarchy @@ -101,8 +101,6 @@ Class Hierarchy
  • org.owasp.dependencycheck.analyzer.JarAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer)
  • org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) -
  • org.owasp.dependencycheck.data.lucene.AbstractIndex
      -
    • org.owasp.dependencycheck.data.cpe.Index
  • org.owasp.dependencycheck.jaxb.pom.generated.Activation
  • org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile
  • org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS
  • org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty
  • org.apache.lucene.analysis.Analyzer (implements java.io.Closeable) @@ -119,14 +117,17 @@ Class Hierarchy -
  • org.owasp.dependencycheck.jaxb.pom.generated.Build
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Extensions
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Filters
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Plugins
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.TestResources
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Filters
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Plugins
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Resources
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources
  • org.owasp.dependencycheck.utils.Checksum
  • org.owasp.dependencycheck.jaxb.pom.generated.CiManagement
  • org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifiers
  • org.owasp.dependencycheck.jaxb.pom.generated.Contributor
  • org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles
  • org.owasp.dependencycheck.data.cpe.CPEAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) -
  • org.owasp.dependencycheck.data.nvdcve.CveDB
  • org.owasp.dependencycheck.data.cwe.CweDB
  • org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater (implements org.owasp.dependencycheck.data.CachedWebDataSource) -
  • org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.NvdCveUrl
  • org.xml.sax.helpers.DefaultHandler (implements org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler) +
  • org.owasp.dependencycheck.data.cpe.BaseIndex +
  • org.owasp.dependencycheck.jaxb.pom.generated.Build
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Extensions
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Filters
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Plugins
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.Resources
  • org.owasp.dependencycheck.jaxb.pom.generated.Build.TestResources
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Filters
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Plugins
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.Resources
  • org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.TestResources
  • org.owasp.dependencycheck.utils.Checksum
  • org.owasp.dependencycheck.jaxb.pom.generated.CiManagement
  • org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.Notifiers
  • org.owasp.dependencycheck.jaxb.pom.generated.Contributor
  • org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Contributor.Roles
  • org.owasp.dependencycheck.analyzer.CPEAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) +
  • org.owasp.dependencycheck.data.nvdcve.CveDB
  • org.owasp.dependencycheck.data.cwe.CweDB
  • org.owasp.dependencycheck.data.update.DatabaseUpdater (implements org.owasp.dependencycheck.data.CachedWebDataSource) +
  • org.owasp.dependencycheck.data.update.DataStoreMetaInfo
  • org.xml.sax.helpers.DefaultHandler (implements org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler) +
  • org.owasp.dependencycheck.data.cwe.CweHandler
  • org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler
  • org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
  • org.owasp.dependencycheck.dependency.Dependency (implements java.lang.Comparable<T>)
  • org.owasp.dependencycheck.jaxb.pom.generated.Dependency
  • org.owasp.dependencycheck.jaxb.pom.generated.Dependency.Exclusions
  • org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement
  • org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.Dependencies
  • org.owasp.dependencycheck.utils.DependencyVersion (implements java.lang.Comparable<T>, java.lang.Iterable<T>) -
  • org.owasp.dependencycheck.utils.DependencyVersionUtil
  • org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository
  • org.owasp.dependencycheck.jaxb.pom.generated.Developer
  • org.owasp.dependencycheck.jaxb.pom.generated.Developer.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Developer.Roles
  • org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement
  • org.owasp.dependencycheck.utils.Downloader
  • org.owasp.dependencycheck.Engine
  • org.owasp.dependencycheck.dependency.Evidence (implements java.lang.Comparable<T>) +
  • org.owasp.dependencycheck.utils.DependencyVersionUtil
  • org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository
  • org.owasp.dependencycheck.jaxb.pom.generated.Developer
  • org.owasp.dependencycheck.jaxb.pom.generated.Developer.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Developer.Roles
  • org.owasp.dependencycheck.concurrency.DirectorySpinLock (implements java.io.Closeable) +
  • org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement
  • org.owasp.dependencycheck.utils.Downloader
  • org.owasp.dependencycheck.Engine
  • org.owasp.dependencycheck.dependency.Evidence (implements java.lang.Comparable<T>)
  • org.owasp.dependencycheck.dependency.EvidenceCollection (implements java.lang.Iterable<T>)
  • org.owasp.dependencycheck.jaxb.pom.generated.Exclusion
  • org.owasp.dependencycheck.jaxb.pom.generated.Extension
  • org.owasp.dependencycheck.data.cpe.Fields
  • org.owasp.dependencycheck.utils.FileUtils
  • org.owasp.dependencycheck.utils.Filter<T>
  • org.owasp.dependencycheck.dependency.Identifier (implements java.lang.Comparable<T>)
  • org.owasp.dependencycheck.data.cpe.IndexEntry (implements java.io.Serializable) @@ -138,8 +139,8 @@ Class Hierarchy
  • java.io.FilterInputStream -
  • org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement
  • org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation
  • org.owasp.dependencycheck.jaxb.pom.generated.License
  • org.owasp.dependencycheck.data.lucene.LuceneUtils
  • org.owasp.dependencycheck.jaxb.pom.generated.MailingList
  • org.owasp.dependencycheck.jaxb.pom.generated.MailingList.OtherArchives
  • org.owasp.dependencycheck.jaxb.pom.generated.Model
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Contributors
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Dependencies
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Developers
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Licenses
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.MailingLists
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.PluginRepositories
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Profiles
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Reports
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Repositories
  • org.owasp.dependencycheck.jaxb.pom.generated.Notifier
  • org.owasp.dependencycheck.jaxb.pom.generated.Notifier.Configuration
  • org.owasp.dependencycheck.data.nvdcve.xml.NvdCve12Handler.Element
  • org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler.Element
  • org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) -
  • org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
  • org.owasp.dependencycheck.jaxb.pom.generated.Organization
  • org.owasp.dependencycheck.jaxb.pom.generated.Parent
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Configuration
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Dependencies
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Executions
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Goals
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Configuration
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Goals
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.Plugins
  • org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Dependencies
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Modules
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.PluginRepositories
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Reports
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Repositories
  • org.owasp.dependencycheck.dependency.Reference (implements java.lang.Comparable<T>, java.io.Serializable) +
  • org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement
  • org.owasp.dependencycheck.analyzer.JarAnalyzer.ClassNameInformation
  • org.owasp.dependencycheck.jaxb.pom.generated.License
  • org.owasp.dependencycheck.data.lucene.LuceneUtils
  • org.owasp.dependencycheck.jaxb.pom.generated.MailingList
  • org.owasp.dependencycheck.jaxb.pom.generated.MailingList.OtherArchives
  • org.owasp.dependencycheck.jaxb.pom.generated.Model
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Contributors
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Dependencies
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Developers
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Licenses
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.MailingLists
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Modules
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.PluginRepositories
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Profiles
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Reports
  • org.owasp.dependencycheck.jaxb.pom.generated.Model.Repositories
  • org.owasp.dependencycheck.jaxb.pom.generated.Notifier
  • org.owasp.dependencycheck.jaxb.pom.generated.Notifier.Configuration
  • org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.Element
  • org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.Element
  • org.owasp.dependencycheck.analyzer.NvdCveAnalyzer (implements org.owasp.dependencycheck.analyzer.Analyzer) +
  • org.owasp.dependencycheck.data.update.NvdCveInfo
  • org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory
  • org.owasp.dependencycheck.jaxb.pom.generated.Organization
  • org.owasp.dependencycheck.jaxb.pom.generated.Parent
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Configuration
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Dependencies
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Executions
  • org.owasp.dependencycheck.jaxb.pom.generated.Plugin.Goals
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Configuration
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.Goals
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement
  • org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.Plugins
  • org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Dependencies
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Modules
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.PluginRepositories
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Properties
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Reports
  • org.owasp.dependencycheck.jaxb.pom.generated.Profile.Repositories
  • org.owasp.dependencycheck.dependency.Reference (implements java.lang.Comparable<T>, java.io.Serializable)
  • org.owasp.dependencycheck.jaxb.pom.generated.Relocation
  • org.owasp.dependencycheck.reporting.ReportGenerator
  • org.owasp.dependencycheck.jaxb.pom.generated.Reporting
  • org.owasp.dependencycheck.jaxb.pom.generated.Reporting.Plugins
  • org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin
  • org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.Configuration
  • org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.ReportSets
  • org.owasp.dependencycheck.jaxb.pom.generated.ReportSet
  • org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Configuration
  • org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.Reports
  • org.owasp.dependencycheck.jaxb.pom.generated.Repository
  • org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy
  • org.owasp.dependencycheck.jaxb.pom.generated.Resource
  • org.owasp.dependencycheck.jaxb.pom.generated.Resource.Excludes
  • org.owasp.dependencycheck.jaxb.pom.generated.Resource.Includes
  • org.owasp.dependencycheck.jaxb.pom.generated.Scm
  • org.owasp.dependencycheck.utils.Settings
  • org.owasp.dependencycheck.utils.Settings.KEYS
  • org.apache.lucene.search.similarities.Similarity
    • org.apache.lucene.search.similarities.TFIDFSimilarity
      • org.apache.lucene.search.similarities.DefaultSimilarity
          @@ -149,8 +150,8 @@ Class Hierarchy
        • org.owasp.dependencycheck.jaxb.pom.generated.Site
        • java.lang.Throwable (implements java.io.Serializable)
        • org.owasp.dependencycheck.data.UpdateService
        • org.owasp.dependencycheck.utils.UrlStringUtils
        • org.owasp.dependencycheck.reporting.VelocityLoggerRedirect (implements org.apache.velocity.runtime.log.LogChute) diff --git a/dependency-check-core/apidocs/package-list b/dependency-check-core/apidocs/package-list index 48e37dfbc..94c452da0 100644 --- a/dependency-check-core/apidocs/package-list +++ b/dependency-check-core/apidocs/package-list @@ -1,11 +1,12 @@ org.owasp.dependencycheck org.owasp.dependencycheck.analyzer +org.owasp.dependencycheck.concurrency org.owasp.dependencycheck.data org.owasp.dependencycheck.data.cpe org.owasp.dependencycheck.data.cwe org.owasp.dependencycheck.data.lucene org.owasp.dependencycheck.data.nvdcve -org.owasp.dependencycheck.data.nvdcve.xml +org.owasp.dependencycheck.data.update org.owasp.dependencycheck.dependency org.owasp.dependencycheck.jaxb.pom org.owasp.dependencycheck.jaxb.pom.generated diff --git a/dependency-check-core/apidocs/serialized-form.html b/dependency-check-core/apidocs/serialized-form.html index d79ded861..21ec5150c 100644 --- a/dependency-check-core/apidocs/serialized-form.html +++ b/dependency-check-core/apidocs/serialized-form.html @@ -2,13 +2,13 @@ - + -Serialized Form (dependency-check-core 1.0.1 API) +Serialized Form (Dependency-Check Core 1.0.2 API) - + @@ -16,7 +16,7 @@ Serialized Form (dependency-check-core 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Serialized Form (dependency-check-core 1.0.1 API)"; + parent.document.title="Serialized Form (Dependency-Check Core 1.0.2 API)"; } } @@ -108,6 +108,42 @@ Serialized Form

  • + + + + +
    +Package org.owasp.dependencycheck.concurrency
    + +

    + + + + + +
    +Class org.owasp.dependencycheck.concurrency.DirectoryLockException extends Exception implements Serializable
    + +

    +serialVersionUID: 1L + +

    + +

    + + + + + +
    +Class org.owasp.dependencycheck.concurrency.InvalidDirectoryException extends Exception implements Serializable
    + +

    +serialVersionUID: 1L + +

    +


    +
    @@ -223,21 +259,13 @@ float searchScore serialVersionUID: 1L

    -


    - - - - - -
    -Package org.owasp.dependencycheck.data.nvdcve.xml

    - + +Class org.owasp.dependencycheck.data.nvdcve.InvalidDataException extends Exception implements Serializable
    -Class org.owasp.dependencycheck.data.nvdcve.xml.InvalidDataException extends Exception implements Serializable
    @@ -573,6 +601,20 @@ edition

    +

    + + + + + +
    +Class org.owasp.dependencycheck.utils.ExtractionException extends IOException implements Serializable
    + +

    +serialVersionUID: 1L + +

    +

    diff --git a/dependency-check-core/checkstyle.html b/dependency-check-core/checkstyle.html index 395e35e47..25b2cc8f3 100644 --- a/dependency-check-core/checkstyle.html +++ b/dependency-check-core/checkstyle.html @@ -1,13 +1,13 @@ - + dependency-check-core - Checkstyle Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -227,10 +227,10 @@ - + -
    Warnings Warnings Errors Errors
    151140 0 02
    +

    4

    Details

    +

    org/owasp/dependencycheck/analyzer/CPEAnalyzer.java

    + + + + + + + + +
    ViolationMessageLine
    ErrorsVariable 'tmp' should be declared final.463
    +

    org/owasp/dependencycheck/analyzer/FalsePositiveAnalyzer.java

    @@ -272,7 +293,18 @@ -
    Errors Nested if-else depth is 5 (max allowed is 4).82
    +
    82
    +

    +

    org/owasp/dependencycheck/utils/UrlStringUtils.java

    + + + + + + + + +
    ViolationMessageLine
    ErrorsLine is longer than 150 characters (found 170).73
    diff --git a/dependency-check-core/checkstyle.rss b/dependency-check-core/checkstyle.rss index 30fa82187..969139785 100644 --- a/dependency-check-core/checkstyle.rss +++ b/dependency-check-core/checkstyle.rss @@ -2,14 +2,14 @@ - dependency-check-core - Checkstyle report + Dependency-Check Core - Checkstyle report https://github.com/jeremylong/DependencyCheck.git/dependency-check-core - dependency-check-core - Checkstyle report + Dependency-Check Core - Checkstyle report en-us ©2012 - 2013 OWASP - File: 151, - Errors: 2, + <title>File: 140, + Errors: 4, Warnings: 0, Infos: 0 @@ -28,20 +28,6 @@ - - dependency-check-maven/target/classes/log.properties - - - 0 - - - 0 - - - 0 - - - org/owasp/dependencycheck/data/lucene/package-info.java @@ -57,7 +43,7 @@ - dependency-check-maven/target/generated-classes/cobertura/mojo.properties + org/owasp/dependencycheck/data/update/package-info.java 0 @@ -82,20 +68,6 @@ 0 - - - - org/owasp/dependencycheck/data/nvdcve/xml/DatabaseUpdater.java - - - 0 - - - 0 - - - 0 - @@ -124,20 +96,6 @@ 0 - - - - dependency-check-ant/target/generated-classes/cobertura/cobertura.properties - - - 0 - - - 0 - - - 0 - @@ -194,6 +152,20 @@ 0 + + + + org/owasp/dependencycheck/data/nvdcve/NvdCve12Handler.java + + + 0 + + + 0 + + + 0 + @@ -267,7 +239,7 @@ - dependency-check-ant/target/generated-classes/cobertura/task.properties + org/owasp/dependencycheck/analyzer/CPEAnalyzer.java 0 @@ -276,21 +248,7 @@ 0 - 0 - - - - - dependency-check-maven/target/maven-archiver/pom.properties - - - 0 - - - 0 - - - 0 + 1 @@ -320,20 +278,6 @@ 0 - - - - dependency-check-maven/target/maven-plugin-help.properties - - - 0 - - - 0 - - - 0 - @@ -365,7 +309,7 @@ - dependency-check-ant/target/classes/task.properties + org/owasp/dependencycheck/data/nvdcve/NvdCve20Handler.java 0 @@ -432,20 +376,6 @@ 0 - - - - dependency-check-maven/target/generated-classes/cobertura/log.properties - - - 0 - - - 0 - - - 0 - @@ -516,6 +446,20 @@ 0 + + + + org/owasp/dependencycheck/data/nvdcve/InvalidDataException.java + + + 0 + + + 0 + + + 0 + @@ -614,20 +558,6 @@ 0 - - - - dependency-check-ant/target/generated-classes/cobertura/taskdefs.properties - - - 0 - - - 0 - - - 0 - @@ -754,20 +684,6 @@ 0 - - - - dependency-check-ant/target/maven-archiver/pom.properties - - - 0 - - - 0 - - - 0 - @@ -810,20 +726,6 @@ 0 - - - - dependency-check-cli/target/maven-archiver/pom.properties - - - 0 - - - 0 - - - 0 - @@ -892,7 +794,7 @@ 0 - 0 + 1 @@ -953,7 +855,7 @@ - dependency-check-ant/target/classes/log.properties + org/owasp/dependencycheck/analyzer/NvdCveAnalyzer.java 0 @@ -992,20 +894,6 @@ 0 - - - - dependency-check-cli/target/generated-classes/cobertura/log.properties - - - 0 - - - 0 - - - 0 - @@ -1034,6 +922,20 @@ 0 + + + + org/owasp/dependencycheck/concurrency/DirectoryLockException.java + + + 0 + + + 0 + + + 0 + @@ -1090,20 +992,6 @@ 0 - - - - dependency-check-ant/target/classes/taskdefs.properties - - - 0 - - - 0 - - - 0 - @@ -1118,20 +1006,6 @@ 0 - - - - org/owasp/dependencycheck/data/nvdcve/xml/NvdCve20Handler.java - - - 0 - - - 0 - - - 0 - @@ -1160,20 +1034,6 @@ 0 - - - - org/owasp/dependencycheck/data/cpe/CPEAnalyzer.java - - - 0 - - - 0 - - - 0 - @@ -1202,20 +1062,6 @@ 0 - - - - org/owasp/dependencycheck/data/nvdcve/xml/NvdCve12Handler.java - - - 0 - - - 0 - - - 0 - @@ -1412,20 +1258,6 @@ 0 - - - - dependency-check-maven/target/generated-classes/cobertura/cobertura.properties - - - 0 - - - 0 - - - 0 - @@ -1440,20 +1272,6 @@ 0 - - - - org/owasp/dependencycheck/data/nvdcve/xml/package-info.java - - - 0 - - - 0 - - - 0 - @@ -1485,7 +1303,7 @@ - org/owasp/dependencycheck/data/nvdcve/xml/InvalidDataException.java + org/owasp/dependencycheck/concurrency/package-info.java 0 @@ -1510,20 +1328,6 @@ 0 - - - - org/owasp/dependencycheck/data/lucene/AbstractIndex.java - - - 0 - - - 0 - - - 0 - @@ -1608,6 +1412,20 @@ 0 + + + + org/owasp/dependencycheck/concurrency/DirectorySpinLock.java + + + 0 + + + 0 + + + 0 + @@ -1625,7 +1443,21 @@ - org/owasp/dependencycheck/data/cpe/Index.java + org/owasp/dependencycheck/data/update/DataStoreMetaInfo.java + + + 0 + + + 0 + + + 0 + + + + + org/owasp/dependencycheck/data/cpe/BaseIndex.java 0 @@ -1734,20 +1566,6 @@ 0 - - - - dependency-check-cli/target/generated-classes/cobertura/cobertura.properties - - - 0 - - - 0 - - - 0 - @@ -1776,20 +1594,6 @@ 0 - - - - dependency-check-ant/target/generated-classes/cobertura/log.properties - - - 0 - - - 0 - - - 0 - @@ -1818,20 +1622,6 @@ 0 - - - - dependency-check-cli/target/classes/log.properties - - - 0 - - - 0 - - - 0 - @@ -1860,6 +1650,20 @@ 0 + + + + org/owasp/dependencycheck/data/cpe/CpeIndexWriter.java + + + 0 + + + 0 + + + 0 + @@ -1916,6 +1720,34 @@ 0 + + + + org/owasp/dependencycheck/data/update/NvdCveInfo.java + + + 0 + + + 0 + + + 0 + + + + + org/owasp/dependencycheck/data/cpe/CpeIndexReader.java + + + 0 + + + 0 + + + 0 + @@ -1944,34 +1776,6 @@ 0 - - - - org/owasp/dependencycheck/data/nvdcve/NvdCveAnalyzer.java - - - 0 - - - 0 - - - 0 - - - - - dependency-check-maven/target/classes/mojo.properties - - - 0 - - - 0 - - - 0 - @@ -2070,6 +1874,20 @@ 0 + + + + org/owasp/dependencycheck/utils/ExtractionException.java + + + 0 + + + 0 + + + 0 + @@ -2126,6 +1944,34 @@ 0 + + + + org/owasp/dependencycheck/concurrency/InvalidDirectoryException.java + + + 0 + + + 0 + + + 0 + + + + + org/owasp/dependencycheck/data/update/DatabaseUpdater.java + + + 0 + + + 0 + + + 0 + diff --git a/dependency-check-core/cobertura/frame-packages.html b/dependency-check-core/cobertura/frame-packages.html index 571cdfad8..a86db9b53 100644 --- a/dependency-check-core/cobertura/frame-packages.html +++ b/dependency-check-core/cobertura/frame-packages.html @@ -19,6 +19,9 @@ org.owasp.dependencycheck.analyzer +org.owasp.dependencycheck.concurrency + + org.owasp.dependencycheck.data @@ -34,7 +37,7 @@ org.owasp.dependencycheck.data.nvdcve -org.owasp.dependencycheck.data.nvdcve.xml +org.owasp.dependencycheck.data.update org.owasp.dependencycheck.dependency diff --git a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.analyzer.html b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.analyzer.html index 4790127d2..aa0fb73bf 100644 --- a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.analyzer.html +++ b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.analyzer.html @@ -30,13 +30,16 @@ org.owasp.dependencycheck.analyzer AnalyzerService (100%) -ArchiveAnalyzer (72%) +ArchiveAnalyzer (70%) + + +CPEAnalyzer (79%) DependencyBundlingAnalyzer (6%) -FalsePositiveAnalyzer (56%) +FalsePositiveAnalyzer (62%) FileNameAnalyzer (100%) @@ -50,6 +53,9 @@ org.owasp.dependencycheck.analyzer JavaScriptAnalyzer (0%) + +NvdCveAnalyzer (11%) + diff --git a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.concurrency.html b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.concurrency.html new file mode 100644 index 000000000..c532d2a1a --- /dev/null +++ b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.concurrency.html @@ -0,0 +1,29 @@ + + + + +Coverage Report Classes + + + +
    +org.owasp.dependencycheck.concurrency +
    +
     
    +
    Classes
    + + + + + + + + + + + + +
    DirectoryLockException (25%)
    DirectorySpinLock (65%)
    InvalidDirectoryException (0%)
    + + diff --git a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.cpe.html b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.cpe.html index 75e174092..70f97f9f9 100644 --- a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.cpe.html +++ b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.cpe.html @@ -15,16 +15,19 @@ org.owasp.dependencycheck.data.cpe - + + + + + + + - - - - +
    CPEAnalyzer (78%)BaseIndex (73%)
    CpeIndexReader (75%)
    CpeIndexWriter (48%)
    Fields (0%)
    Index (64%)
    IndexEntry (66%)IndexEntry (63%)
    diff --git a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.lucene.html b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.lucene.html index d4711c6b3..716800395 100644 --- a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.lucene.html +++ b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.lucene.html @@ -15,9 +15,6 @@ org.owasp.dependencycheck.data.lucene - - - diff --git a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.nvdcve.html b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.nvdcve.html index 6d7a8f500..481b6750c 100644 --- a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.nvdcve.html +++ b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.nvdcve.html @@ -24,7 +24,13 @@ org.owasp.dependencycheck.data.nvdcve - + + + + + + +
    AbstractIndex (54%)
    AbstractTokenizingFilter (100%)
    DatabaseException (0%)
    NvdCveAnalyzer (11%)InvalidDataException (0%)
    NvdCve12Handler (93%)
    NvdCve20Handler (79%)
    diff --git a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.update.html b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.update.html new file mode 100644 index 000000000..14b673feb --- /dev/null +++ b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.data.update.html @@ -0,0 +1,29 @@ + + + + +Coverage Report Classes + + + +
    +org.owasp.dependencycheck.data.update +
    +
     
    +
    Classes
    + + + + + + + + + + + + +
    DataStoreMetaInfo (50%)
    DatabaseUpdater (33%)
    NvdCveInfo (88%)
    + + diff --git a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.utils.html b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.utils.html index 5365d82ce..6cbc1c733 100644 --- a/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.utils.html +++ b/dependency-check-core/cobertura/frame-sourcefiles-org.owasp.dependencycheck.utils.html @@ -27,10 +27,13 @@ org.owasp.dependencycheck.utils DownloadFailedException (0%) -Downloader (0%) +Downloader (8%) -FileUtils (36%) +ExtractionException (0%) + + +FileUtils (48%) Filter (92%) @@ -45,7 +48,7 @@ org.owasp.dependencycheck.utils Settings (61%) -UrlStringUtils (81%) +UrlStringUtils (82%) diff --git a/dependency-check-core/cobertura/frame-sourcefiles.html b/dependency-check-core/cobertura/frame-sourcefiles.html index d1ab5a2fe..3a64a294d 100644 --- a/dependency-check-core/cobertura/frame-sourcefiles.html +++ b/dependency-check-core/cobertura/frame-sourcefiles.html @@ -18,9 +18,6 @@ All Packages AbstractAnalyzer (100%) -AbstractIndex (54%) - - AbstractTokenizingFilter (100%) @@ -51,7 +48,10 @@ All Packages AnalyzerService (100%) -ArchiveAnalyzer (72%) +ArchiveAnalyzer (70%) + + +BaseIndex (73%) Build (9%) @@ -60,7 +60,7 @@ All Packages BuildBase (7%) -CPEAnalyzer (78%) +CPEAnalyzer (79%) CachedWebDataSource (N/A) @@ -78,6 +78,12 @@ All Packages CorruptDatabaseException (0%) +CpeIndexReader (75%) + + +CpeIndexWriter (48%) + + CveDB (46%) @@ -87,10 +93,13 @@ All Packages CweHandler (0%) +DataStoreMetaInfo (50%) + + DatabaseException (0%) -DatabaseUpdater (0%) +DatabaseUpdater (33%) Dependency (57%) @@ -120,13 +129,19 @@ All Packages Developer (5%) +DirectoryLockException (25%) + + +DirectorySpinLock (65%) + + DistributionManagement (5%) DownloadFailedException (0%) -Downloader (0%) +Downloader (8%) Engine (38%) @@ -144,7 +159,10 @@ All Packages Extension (0%) -FalsePositiveAnalyzer (56%) +ExtractionException (0%) + + +FalsePositiveAnalyzer (62%) FieldAnalyzer (100%) @@ -156,7 +174,7 @@ All Packages FileNameAnalyzer (100%) -FileUtils (36%) +FileUtils (48%) Filter (92%) @@ -168,13 +186,13 @@ All Packages Identifier (25%) -Index (64%) +IndexEntry (63%) -IndexEntry (66%) +InvalidDataException (0%) -InvalidDataException (0%) +InvalidDirectoryException (0%) InvalidSettingException (0%) @@ -210,13 +228,16 @@ All Packages Notifier (0%) -NvdCve12Handler (93%) +NvdCve12Handler (93%) -NvdCve20Handler (79%) +NvdCve20Handler (79%) -NvdCveAnalyzer (11%) +NvdCveAnalyzer (11%) + + +NvdCveInfo (88%) ObjectFactory (0%) @@ -294,7 +315,7 @@ All Packages UpdateService (0%) -UrlStringUtils (81%) +UrlStringUtils (82%) UrlTokenizingFilter (80%) diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.analyzer.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.analyzer.html index a6484b7b6..97dfb9b1d 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.analyzer.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.analyzer.html @@ -16,7 +16,7 @@ - +
    Package # Classes Line Coverage Branch Coverage Complexity
    org.owasp.dependencycheck.analyzer13
    66%
    542/813
    49%
    239/484
    4.196
    org.owasp.dependencycheck.analyzer17
    68%
    740/1083
    55%
    355/644
    3.97
    - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.concurrency.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.concurrency.html new file mode 100644 index 000000000..a82e46bf3 --- /dev/null +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.concurrency.html @@ -0,0 +1,46 @@ + + + + +Coverage Report + + + + + + + +
    Coverage Report - org.owasp.dependencycheck.concurrency
    +
     
    + + + + + +
    Package # Classes Line Coverage Branch Coverage Complexity
    org.owasp.dependencycheck.concurrency3
    56%
    53/94
    66%
    16/24
    2.611
    + +
     
    + + + + + + + + + + +
    Classes in this Package Line Coverage Branch Coverage Complexity
    DirectoryLockException
    25%
    2/8
    N/A
    1
    DirectorySpinLock
    65%
    51/78
    66%
    16/24
    3.9
    InvalidDirectoryException
    0%
    0/8
    N/A
    1
    + + + + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cpe.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cpe.html index c0c09e11a..8c11aeca4 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cpe.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cpe.html @@ -16,7 +16,7 @@ - +
    Package # Classes Line Coverage Branch Coverage Complexity
    org.owasp.dependencycheck.data.cpe6
    75%
    227/301
    64%
    116/180
    3.192
    org.owasp.dependencycheck.data.cpe5
    62%
    92/147
    34%
    17/50
    2.133
    - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cwe.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cwe.html index 76b795646..4aa5dd1b5 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cwe.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.cwe.html @@ -39,6 +39,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.html index d8b1c128a..a6de81c74 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.html @@ -17,11 +17,11 @@ Package # Classes Line Coverage Branch Coverage Complexity org.owasp.dependencycheck.data3
    0%
    0/15
    0%
    0/2
    1.125 - org.owasp.dependencycheck.data.cpe6
    75%
    227/301
    64%
    116/180
    3.192 + org.owasp.dependencycheck.data.cpe5
    62%
    92/147
    34%
    17/50
    2.133 org.owasp.dependencycheck.data.cwe2
    35%
    11/31
    25%
    2/8
    2.8 - org.owasp.dependencycheck.data.lucene12
    61%
    140/226
    53%
    50/93
    2.34 - org.owasp.dependencycheck.data.nvdcve4
    42%
    150/354
    47%
    48/102
    3.355 - org.owasp.dependencycheck.data.nvdcve.xml7
    34%
    169/486
    51%
    99/192
    3.789 + org.owasp.dependencycheck.data.lucene11
    66%
    94/141
    52%
    35/67
    2.607 + org.owasp.dependencycheck.data.nvdcve8
    59%
    317/534
    70%
    149/210
    3.305 + org.owasp.dependencycheck.data.update3
    39%
    142/357
    31%
    40/126
    4.933 - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.lucene.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.lucene.html index 4c852b5cf..02f78a500 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.lucene.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.lucene.html @@ -16,7 +16,7 @@ - +
    Package # Classes Line Coverage Branch Coverage Complexity
    org.owasp.dependencycheck.data.lucene12
    61%
    140/226
    53%
    50/93
    2.34
    org.owasp.dependencycheck.data.lucene11
    66%
    94/141
    52%
    35/67
    2.607
    - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.nvdcve.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.nvdcve.html index 3260ccf6e..9c9dce79b 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.nvdcve.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.nvdcve.html @@ -16,8 +16,7 @@ - - +
    Package # Classes Line Coverage Branch Coverage Complexity
    org.owasp.dependencycheck.data.nvdcve4
    42%
    150/354
    47%
    48/102
    3.355
    org.owasp.dependencycheck.data.nvdcve.xml7
    34%
    169/486
    51%
    99/192
    3.789
    org.owasp.dependencycheck.data.nvdcve8
    59%
    317/534
    70%
    149/210
    3.305
    - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.update.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.update.html new file mode 100644 index 000000000..5c0683c0c --- /dev/null +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.data.update.html @@ -0,0 +1,46 @@ + + + + +Coverage Report + + + + + + + +
    Coverage Report - org.owasp.dependencycheck.data.update
    +
     
    + + + + + +
    Package # Classes Line Coverage Branch Coverage Complexity
    org.owasp.dependencycheck.data.update3
    39%
    142/357
    31%
    40/126
    4.933
    + +
     
    + + + + + + + + + + +
    Classes in this Package Line Coverage Branch Coverage Complexity
    DataStoreMetaInfo
    50%
    37/73
    43%
    7/16
    3.111
    DatabaseUpdater
    33%
    90/267
    30%
    33/110
    10
    NvdCveInfo
    88%
    15/17
    N/A
    1
    + + + + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.dependency.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.dependency.html index 38ce77018..8218ed133 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.dependency.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.dependency.html @@ -57,6 +57,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.html index 72ff7c471..5396419b0 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.html @@ -17,18 +17,19 @@ Package # Classes Line Coverage Branch Coverage Complexity org.owasp.dependencycheck1
    38%
    50/130
    42%
    27/64
    3.412 - org.owasp.dependencycheck.analyzer13
    66%
    542/813
    49%
    239/484
    4.196 + org.owasp.dependencycheck.analyzer17
    68%
    740/1083
    55%
    355/644
    3.97 + org.owasp.dependencycheck.concurrency3
    56%
    53/94
    66%
    16/24
    2.611 org.owasp.dependencycheck.data3
    0%
    0/15
    0%
    0/2
    1.125 - org.owasp.dependencycheck.data.cpe6
    75%
    227/301
    64%
    116/180
    3.192 + org.owasp.dependencycheck.data.cpe5
    62%
    92/147
    34%
    17/50
    2.133 org.owasp.dependencycheck.data.cwe2
    35%
    11/31
    25%
    2/8
    2.8 - org.owasp.dependencycheck.data.lucene12
    61%
    140/226
    53%
    50/93
    2.34 - org.owasp.dependencycheck.data.nvdcve4
    42%
    150/354
    47%
    48/102
    3.355 - org.owasp.dependencycheck.data.nvdcve.xml7
    34%
    169/486
    51%
    99/192
    3.789 + org.owasp.dependencycheck.data.lucene11
    66%
    94/141
    52%
    35/67
    2.607 + org.owasp.dependencycheck.data.nvdcve8
    59%
    317/534
    70%
    149/210
    3.305 + org.owasp.dependencycheck.data.update3
    39%
    142/357
    31%
    40/126
    4.933 org.owasp.dependencycheck.dependency14
    58%
    311/529
    33%
    127/376
    2.439 org.owasp.dependencycheck.jaxb.pom1
    100%
    13/13
    50%
    1/2
    1.25 org.owasp.dependencycheck.jaxb.pom.generated87
    7%
    73/945
    1%
    1/98
    1.091 org.owasp.dependencycheck.reporting3
    0%
    0/101
    0%
    0/44
    4.273 - org.owasp.dependencycheck.utils14
    57%
    222/384
    61%
    96/156
    2.881 + org.owasp.dependencycheck.utils15
    57%
    264/457
    62%
    116/186
    3.181 - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.generated.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.generated.html index bcfbd70d2..6ee4cfdab 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.generated.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.generated.html @@ -160,6 +160,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.html index aa09686a4..4cadf0ed3 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.jaxb.pom.html @@ -38,6 +38,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.reporting.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.reporting.html index 874b3fa81..e4c560170 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.reporting.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.reporting.html @@ -40,6 +40,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.utils.html b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.utils.html index 50770297a..026a18c69 100644 --- a/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.utils.html +++ b/dependency-check-core/cobertura/frame-summary-org.owasp.dependencycheck.utils.html @@ -16,7 +16,7 @@ - +
    Package # Classes Line Coverage Branch Coverage Complexity
    org.owasp.dependencycheck.utils14
    57%
    222/384
    61%
    96/156
    2.881
    org.owasp.dependencycheck.utils15
    57%
    264/457
    62%
    116/186
    3.181
    - + diff --git a/dependency-check-core/cobertura/frame-summary.html b/dependency-check-core/cobertura/frame-summary.html index 5bb4450d0..114a6fe20 100644 --- a/dependency-check-core/cobertura/frame-summary.html +++ b/dependency-check-core/cobertura/frame-summary.html @@ -16,20 +16,21 @@ - + - + + - + - - - + + + - +
    Package # Classes Line Coverage Branch Coverage Complexity
    All Packages167
    44%
    1908/4328
    44%
    806/1801
    2.095
    All Packages173
    47%
    2160/4577
    46%
    886/1901
    2.149
    org.owasp.dependencycheck1
    38%
    50/130
    42%
    27/64
    3.412
    org.owasp.dependencycheck.analyzer13
    66%
    542/813
    49%
    239/484
    4.196
    org.owasp.dependencycheck.analyzer17
    68%
    740/1083
    55%
    355/644
    3.97
    org.owasp.dependencycheck.concurrency3
    56%
    53/94
    66%
    16/24
    2.611
    org.owasp.dependencycheck.data3
    0%
    0/15
    0%
    0/2
    1.125
    org.owasp.dependencycheck.data.cpe6
    75%
    227/301
    64%
    116/180
    3.192
    org.owasp.dependencycheck.data.cpe5
    62%
    92/147
    34%
    17/50
    2.133
    org.owasp.dependencycheck.data.cwe2
    35%
    11/31
    25%
    2/8
    2.8
    org.owasp.dependencycheck.data.lucene12
    61%
    140/226
    53%
    50/93
    2.34
    org.owasp.dependencycheck.data.nvdcve4
    42%
    150/354
    47%
    48/102
    3.355
    org.owasp.dependencycheck.data.nvdcve.xml7
    34%
    169/486
    51%
    99/192
    3.789
    org.owasp.dependencycheck.data.lucene11
    66%
    94/141
    52%
    35/67
    2.607
    org.owasp.dependencycheck.data.nvdcve8
    59%
    317/534
    70%
    149/210
    3.305
    org.owasp.dependencycheck.data.update3
    39%
    142/357
    31%
    40/126
    4.933
    org.owasp.dependencycheck.dependency14
    58%
    311/529
    33%
    127/376
    2.439
    org.owasp.dependencycheck.jaxb.pom1
    100%
    13/13
    50%
    1/2
    1.25
    org.owasp.dependencycheck.jaxb.pom.generated87
    7%
    73/945
    1%
    1/98
    1.091
    org.owasp.dependencycheck.reporting3
    0%
    0/101
    0%
    0/44
    4.273
    org.owasp.dependencycheck.utils14
    57%
    222/384
    61%
    96/156
    2.881
    org.owasp.dependencycheck.utils15
    57%
    264/457
    62%
    116/186
    3.181
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.Engine.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.Engine.html index fc681f4b1..050c7017f 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.Engine.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.Engine.html @@ -125,14 +125,14 @@
          * The list of dependencies.
     54  
          */
    -  55  3
         private final List<Dependency> dependencies = new ArrayList<Dependency>();
    +  55  2
         private final List<Dependency> dependencies = new ArrayList<Dependency>();
     56  
         /**
     57  
          * A Map of analyzers grouped by Analysis phase.
     58  
          */
    -  59  3
         private final EnumMap<AnalysisPhase, List<Analyzer>> analyzers =
    +  59  2
         private final EnumMap<AnalysisPhase, List<Analyzer>> analyzers =
     60  
                 new EnumMap<AnalysisPhase, List<Analyzer>>(AnalysisPhase.class);
     61   @@ -141,7 +141,7 @@
          * A set of extensions supported by the analyzers.
     63  
          */
    -  64  3
         private final Set<String> extensions = new HashSet<String>();
    +  64  2
         private final Set<String> extensions = new HashSet<String>();
     65  
     
     66   @@ -150,20 +150,20 @@
          * Creates a new Engine.
     68  
          */
    -  69  3
         public Engine() {
    -  70  3
             boolean autoUpdate = true;
    +  69  2
         public Engine() {
    +  70  2
             boolean autoUpdate = true;
     71  
             try {
    -  72  3
                 autoUpdate = Settings.getBoolean(Settings.KEYS.AUTO_UPDATE);
    +  72  2
                 autoUpdate = Settings.getBoolean(Settings.KEYS.AUTO_UPDATE);
     73  0
             } catch (InvalidSettingException ex) {
     74  0
                 Logger.getLogger(Engine.class.getName()).log(Level.FINE, "Invalid setting for auto-update; using true.");
    -  75  3
             }
    -  76  3
             if (autoUpdate) {
    +  75  2
             }
    +  76  2
             if (autoUpdate) {
     77  0
                 doUpdates();
     78  
             }
    -  79  3
             loadAnalyzers();
    -  80  3
         }
    +  79  2
             loadAnalyzers();
    +  80  2
         }
     81  
     
     82   @@ -207,23 +207,23 @@
         private void loadAnalyzers() {
     104  
     
    -  105  30
             for (AnalysisPhase phase : AnalysisPhase.values()) {
    -  106  27
                 analyzers.put(phase, new ArrayList<Analyzer>());
    +  105  20
             for (AnalysisPhase phase : AnalysisPhase.values()) {
    +  106  18
                 analyzers.put(phase, new ArrayList<Analyzer>());
     107  
             }
     108  
     
    -  109  3
             final AnalyzerService service = AnalyzerService.getInstance();
    -  110  3
             final Iterator<Analyzer> iterator = service.getAnalyzers();
    -  111  27
             while (iterator.hasNext()) {
    -  112  24
                 final Analyzer a = iterator.next();
    -  113  24
                 analyzers.get(a.getAnalysisPhase()).add(a);
    -  114  24
                 if (a.getSupportedExtensions() != null) {
    -  115  6
                     extensions.addAll(a.getSupportedExtensions());
    +  109  2
             final AnalyzerService service = AnalyzerService.getInstance();
    +  110  2
             final Iterator<Analyzer> iterator = service.getAnalyzers();
    +  111  18
             while (iterator.hasNext()) {
    +  112  16
                 final Analyzer a = iterator.next();
    +  113  16
                 analyzers.get(a.getAnalysisPhase()).add(a);
    +  114  16
                 if (a.getSupportedExtensions() != null) {
    +  115  4
                     extensions.addAll(a.getSupportedExtensions());
     116  
                 }
    -  117  24
             }
    -  118  3
         }
    +  117  16
             }
    +  118  2
         }
     119  
     
     120   @@ -257,7 +257,7 @@
          */
     135  
         public List<Dependency> getDependencies() {
    -  136  15
             return dependencies;
    +  136  13
             return dependencies;
     137  
         }
     138   @@ -439,21 +439,21 @@
          */
     237  
         protected void scanDirectory(File dir) {
    -  238  876
             final File[] files = dir.listFiles();
    -  239  876
             if (files != null) {
    -  240  1926
                 for (File f : files) {
    -  241  1050
                     if (f.isDirectory()) {
    -  242  873
                         scanDirectory(f);
    +  238  28
             final File[] files = dir.listFiles();
    +  239  28
             if (files != null) {
    +  240  58
                 for (File f : files) {
    +  241  30
                     if (f.isDirectory()) {
    +  242  25
                         scanDirectory(f);
     243  
                     } else {
    -  244  177
                         scanFile(f);
    +  244  5
                         scanFile(f);
     245  
                     }
     246  
                 }
     247  
             }
    -  248  876
         }
    +  248  28
         }
     249  
     
     250   @@ -470,19 +470,19 @@
          */
     256  
         protected void scanFile(File file) {
    -  257  177
             if (!file.isFile()) {
    +  257  5
             if (!file.isFile()) {
     258  0
                 final String msg = String.format("Path passed to scanFile(File) is not a file: %s. Skipping the file.", file.toString());
     259  0
                 Logger.getLogger(Engine.class.getName()).log(Level.FINE, msg);
     260  0
                 return;
     261  
             }
    -  262  177
             final String fileName = file.getName();
    -  263  177
             final String extension = FileUtils.getFileExtension(fileName);
    -  264  177
             if (extension != null) {
    -  265  177
                 if (extensions.contains(extension)) {
    -  266  177
                     final Dependency dependency = new Dependency(file);
    -  267  177
                     dependencies.add(dependency);
    -  268  177
                 }
    +  262  5
             final String fileName = file.getName();
    +  263  5
             final String extension = FileUtils.getFileExtension(fileName);
    +  264  5
             if (extension != null) {
    +  265  5
                 if (extensions.contains(extension)) {
    +  266  5
                     final Dependency dependency = new Dependency(file);
    +  267  5
                     dependencies.add(dependency);
    +  268  5
                 }
     269  
             } else {
     270  0
                 final String msg = String.format("No file extension found on file '%s'. The file was not analyzed.",
    @@ -491,7 +491,7 @@  272  0
                 Logger.getLogger(Engine.class.getName()).log(Level.FINEST, msg);
     273  
             }
    -  274  177
         }
    +  274  5
         }
     275  
     
     276   @@ -649,28 +649,28 @@
          */
     377  
         public boolean supportsExtension(String ext) {
    -  378  17691
             if (ext == null) {
    -  379  231
                 return false;
    +  378  138
             if (ext == null) {
    +  379  8
                 return false;
     380  
             }
    -  381  173184
             for (AnalysisPhase phase : AnalysisPhase.values()) {
    -  382  155901
                 final List<Analyzer> analyzerList = analyzers.get(phase);
    -  383  155901
                 for (Analyzer a : analyzerList) {
    -  384  138618
                     if (a.getSupportedExtensions() != null && a.supportsExtension(ext)) {
    -  385  177
                         return true;
    +  381  1259
             for (AnalysisPhase phase : AnalysisPhase.values()) {
    +  382  1134
                 final List<Analyzer> analyzerList = analyzers.get(phase);
    +  383  1134
                 for (Analyzer a : analyzerList) {
    +  384  1009
                     if (a.getSupportedExtensions() != null && a.supportsExtension(ext)) {
    +  385  5
                         return true;
     386  
                     }
     387  
                 }
     388  
             }
    -  389  17283
             return false;
    +  389  125
             return false;
     390  
         }
     391  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AbstractAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AbstractAnalyzer.html index e31d82245..9aef3b313 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AbstractAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AbstractAnalyzer.html @@ -73,7 +73,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     28  
      */
    -  29  138
     public abstract class AbstractAnalyzer implements Analyzer {
    +  29  51
     public abstract class AbstractAnalyzer implements Analyzer {
     30  
     
     31   @@ -100,11 +100,11 @@
          */
     42  
         protected static Set<String> newHashSet(String... strings) {
    -  43  15
             final Set<String> set = new HashSet<String>();
    +  43  5
             final Set<String> set = new HashSet<String>();
     44  
     
    -  45  15
             Collections.addAll(set, strings);
    -  46  15
             return set;
    +  45  5
             Collections.addAll(set, strings);
    +  46  5
             return set;
     47  
         }
     48   @@ -125,7 +125,7 @@
         public void initialize() throws Exception {
     56  
             //do nothing
    -  57  3
         }
    +  57  1
         }
     58  
     
     59   @@ -144,11 +144,11 @@
         public void close() throws Exception {
     66  
             //do nothing
    -  67  3
         }
    +  67  1
         }
     68  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisException.html index 574bb395b..517488923 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisException.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisException.html @@ -145,6 +145,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisPhase.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisPhase.html index f6446812b..bc5e5e685 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisPhase.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalysisPhase.html @@ -67,7 +67,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     25  
      */
    -  26  17496
     public enum AnalysisPhase {
    +  26  143
     public enum AnalysisPhase {
     27  
     
     28   @@ -76,67 +76,67 @@
          * Initialization phase.
     30  
          */
    -  31  3
         INITIAL,
    +  31  1
         INITIAL,
     32  
         /**
     33  
          * Information collection phase.
     34  
          */
    -  35  3
         INFORMATION_COLLECTION,
    +  35  1
         INFORMATION_COLLECTION,
     36  
         /**
     37  
          * Pre identifier analysis phase.
     38  
          */
    -  39  3
         PRE_IDENTIFIER_ANALYSIS,
    +  39  1
         PRE_IDENTIFIER_ANALYSIS,
     40  
         /**
     41  
          * Identifier analysis phase.
     42  
          */
    -  43  3
         IDENTIFIER_ANALYSIS,
    +  43  1
         IDENTIFIER_ANALYSIS,
     44  
         /**
     45  
          * Post identifier analysis phase.
     46  
          */
    -  47  3
         POST_IDENTIFIER_ANALYSIS,
    +  47  1
         POST_IDENTIFIER_ANALYSIS,
     48  
         /**
     49  
          * Pre finding analysis phase.
     50  
          */
    -  51  3
         PRE_FINDING_ANALYSIS,
    +  51  1
         PRE_FINDING_ANALYSIS,
     52  
         /**
     53  
          * Finding analysis phase.
     54  
          */
    -  55  3
         FINDING_ANALYSIS,
    +  55  1
         FINDING_ANALYSIS,
     56  
         /**
     57  
          * Post analysis phase.
     58  
          */
    -  59  3
         POST_FINDING_ANALYSIS,
    +  59  1
         POST_FINDING_ANALYSIS,
     60  
         /**
     61  
          * The final analysis phase.
     62  
          */
    -  63  3
         FINAL
    +  63  1
         FINAL
     64  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.Analyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.Analyzer.html index f5edea9b7..3ae449392 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.Analyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.Analyzer.html @@ -223,6 +223,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalyzerService.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalyzerService.html index 6a6da58b8..3aeca5631 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalyzerService.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.AnalyzerService.html @@ -99,9 +99,9 @@
          * Creates a new instance of AnalyzerService.
     41  
          */
    -  42  3
         private AnalyzerService() {
    -  43  3
             loader = ServiceLoader.load(Analyzer.class);
    -  44  3
         }
    +  42  1
         private AnalyzerService() {
    +  43  1
             loader = ServiceLoader.load(Analyzer.class);
    +  44  1
         }
     45  
     
     46   @@ -116,11 +116,11 @@
          */
     51  
         public static synchronized AnalyzerService getInstance() {
    -  52  6
             if (service == null) {
    -  53  3
                 service = new AnalyzerService();
    +  52  3
             if (service == null) {
    +  53  1
                 service = new AnalyzerService();
     54  
             }
    -  55  6
             return service;
    +  55  3
             return service;
     56  
         }
     57   @@ -137,13 +137,13 @@
          */
     63  
         public Iterator<Analyzer> getAnalyzers() {
    -  64  6
             return loader.iterator();
    +  64  3
             return loader.iterator();
     65  
         }
     66  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.ArchiveAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.ArchiveAnalyzer.html index 8e9688681..506837985 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.ArchiveAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.ArchiveAnalyzer.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    ArchiveAnalyzer
    72%
    71/98
    61%
    21/34
    4.556
    ArchiveAnalyzer
    70%
    74/105
    69%
    25/36
    4.889
     
    @@ -86,457 +86,476 @@  34  
     import java.util.logging.Logger;
     35   -
     import java.util.zip.ZipEntry;
    +
     //import java.util.zip.ZipEntry;
     36   -
     import java.util.zip.ZipInputStream;
    +
     //import java.util.zip.ZipException;
     37   -
     import org.h2.store.fs.FileUtils;
    +
     //import java.util.zip.ZipInputStream;
     38   -
     import org.owasp.dependencycheck.Engine;
    +
     import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
     39   -
     import org.owasp.dependencycheck.dependency.Dependency;
    +
     import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
     40   -
     import org.owasp.dependencycheck.utils.Settings;
    +
     import org.h2.store.fs.FileUtils;
     41   -
     
    +
     import org.owasp.dependencycheck.Engine;
     42   -
     /**
    +
     import org.owasp.dependencycheck.dependency.Dependency;
     43   -
      * <p>An analyzer that works on archive files:
    +
     import org.owasp.dependencycheck.utils.Settings;
     44   -
      * <ul>
    +
     
     45   -
      * <li><b>ZIP</b> - if it is determined to be a JAR, WAR or EAR a copy is made
    +
     /**
     46   -
      * and the copy is given the correct extension so that it will be correctly
    +
      * <p>An analyzer that works on archive files:
     47   -
      * analyzed.</li>
    +
      * <ul>
     48   -
      * <li><b>WAR</b> - the WAR contents are extracted and added as dependencies to
    +
      * <li><b>ZIP</b> - if it is determined to be a JAR, WAR or EAR a copy is made
     49   -
      * the scan. The displayed path is relative to the WAR.</li>
    +
      * and the copy is given the correct extension so that it will be correctly
     50   -
      * <li><b>EAR</b> - the WAR contents are extracted and added as dependencies to
    +
      * analyzed.</li>
     51   -
      * the scan. Any WAR files are also processed so that the contained JAR files
    +
      * <li><b>WAR</b> - the WAR contents are extracted and added as dependencies to
     52   -
      * are added to the list of dependencies. The displayed path is relative to the
    +
      * the scan. The displayed path is relative to the WAR.</li>
     53   -
      * EAR.</li>
    +
      * <li><b>EAR</b> - the WAR contents are extracted and added as dependencies to
     54   -
      * </ul></p>
    +
      * the scan. Any WAR files are also processed so that the contained JAR files
     55   -
      *
    +
      * are added to the list of dependencies. The displayed path is relative to the
     56   -
      * @author Jeremy Long (jeremy.long@owasp.org)
    +
      * EAR.</li>
     57   -
      */
    -  58  21
     public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
    +
      * </ul></p>
    +  58   +
      *
     59   -
     
    +
      * @author Jeremy Long (jeremy.long@owasp.org)
     60   -
         /**
    -  61   -
          * The buffer size to use when extracting files from the archive.
    +
      */
    +  61  8
     public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer {
     62   -
          */
    +
     
     63   -
         private static final int BUFFER_SIZE = 4096;
    +
         /**
     64   -
         /**
    +
          * The buffer size to use when extracting files from the archive.
     65   -
          * The count of directories created during analysis. This is used for
    +
          */
     66   -
          * creating temporary directories.
    +
         private static final int BUFFER_SIZE = 4096;
     67   -
          */
    -  68  3
         private static int dirCount = 0;
    +
         /**
    +  68   +
          * The count of directories created during analysis. This is used for
     69   -
         /**
    +
          * creating temporary directories.
     70   -
          * The parent directory for the individual directories per archive.
    -  71  
          */
    -  72  21
         private File tempFileLocation = null;
    +  71  1
         private static int dirCount = 0;
    +  72   +
         /**
     73   -
         /**
    +
          * The parent directory for the individual directories per archive.
     74   -
          * The max scan depth that the analyzer will recursively extract nested
    -  75   -
          * archives.
    +
          */
    +  75  8
         private File tempFileLocation = null;
     76   -
          */
    -  77  3
         private static final int MAX_SCAN_DEPTH = Settings.getInt("archive.scan.depth", 3);
    +
         /**
    +  77   +
          * The max scan depth that the analyzer will recursively extract nested
     78   -
         /**
    +
          * archives.
     79   -
          * Tracks the current scan/extraction depth for nested archives.
    -  80  
          */
    -  81  21
         private int scanDepth = 0;
    +  80  1
         private static final int MAX_SCAN_DEPTH = Settings.getInt("archive.scan.depth", 3);
    +  81   +
         /**
     82   -
         //<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
    +
          * Tracks the current scan/extraction depth for nested archives.
     83   -
         /**
    -  84   -
          * The name of the analyzer.
    +
          */
    +  84  8
         private int scanDepth = 0;
     85   -
          */
    +
         //<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
     86   -
         private static final String ANALYZER_NAME = "Archive Analyzer";
    +
         /**
     87   -
         /**
    +
          * The name of the analyzer.
     88   -
          * The phase that this analyzer is intended to run in.
    +
          */
     89   -
          */
    -  90  3
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INITIAL;
    +
         private static final String ANALYZER_NAME = "Archive Analyzer";
    +  90   +
         /**
     91   -
         /**
    +
          * The phase that this analyzer is intended to run in.
     92   -
          * The set of file extensions supported by this analyzer.
    -  93  
          */
    -  94  3
         private static final Set<String> EXTENSIONS = newHashSet("zip", "ear", "war");
    +  93  1
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INITIAL;
    +  94   +
         /**
     95   -
     
    +
          * The set of file extensions supported by this analyzer.
     96   -
         /**
    -  97   -
          * Returns a list of file EXTENSIONS supported by this analyzer.
    +
          */
    +  97  1
         private static final Set<String> EXTENSIONS = newHashSet("zip", "ear", "war");
     98   -
          *
    +
     
     99   -
          * @return a list of file EXTENSIONS supported by this analyzer.
    +
         /**
     100   -
          */
    +
          * Returns a list of file EXTENSIONS supported by this analyzer.
     101   -
         public Set<String> getSupportedExtensions() {
    -  102  17472
             return EXTENSIONS;
    +
          *
    +  102   +
          * @return a list of file EXTENSIONS supported by this analyzer.
     103   -
         }
    +
          */
     104   -
     
    -  105   -
         /**
    +
         public Set<String> getSupportedExtensions() {
    +  105  136
             return EXTENSIONS;
     106   -
          * Returns the name of the analyzer.
    +
         }
     107   -
          *
    +
     
     108   -
          * @return the name of the analyzer.
    +
         /**
     109   -
          */
    +
          * Returns the name of the analyzer.
     110   -
         public String getName() {
    -  111  3
             return ANALYZER_NAME;
    +
          *
    +  111   +
          * @return the name of the analyzer.
     112   -
         }
    +
          */
     113   -
     
    -  114   -
         /**
    +
         public String getName() {
    +  114  1
             return ANALYZER_NAME;
     115   -
          * Returns whether or not this analyzer can process the given extension.
    +
         }
     116   -
          *
    +
     
     117   -
          * @param extension the file extension to test for support.
    +
         /**
     118   -
          * @return whether or not the specified file extension is supported by this
    +
          * Returns whether or not this analyzer can process the given extension.
     119   -
          * analyzer.
    +
          *
     120   -
          */
    +
          * @param extension the file extension to test for support.
     121   -
         public boolean supportsExtension(String extension) {
    -  122  17649
             return EXTENSIONS.contains(extension);
    +
          * @return whether or not the specified file extension is supported by this
    +  122   +
          * analyzer.
     123   -
         }
    +
          */
     124   -
     
    -  125   -
         /**
    +
         public boolean supportsExtension(String extension) {
    +  125  139
             return EXTENSIONS.contains(extension);
     126   -
          * Returns the phase that the analyzer is intended to run in.
    +
         }
     127   -
          *
    +
     
     128   -
          * @return the phase that the analyzer is intended to run in.
    +
         /**
     129   -
          */
    +
          * Returns the phase that the analyzer is intended to run in.
     130   -
         public AnalysisPhase getAnalysisPhase() {
    -  131  6
             return ANALYSIS_PHASE;
    +
          *
    +  131   +
          * @return the phase that the analyzer is intended to run in.
     132   -
         }
    +
          */
     133   -
         //</editor-fold>
    -  134   -
     
    +
         public AnalysisPhase getAnalysisPhase() {
    +  134  3
             return ANALYSIS_PHASE;
     135   -
         /**
    -  136   -
          * The initialize method does nothing for this Analyzer.
    -  137   -
          *
    -  138   -
          * @throws Exception is thrown if there is an exception deleting or creating
    -  139   -
          * temporary files
    -  140   -
          */
    -  141   -
         @Override
    -  142   -
         public void initialize() throws Exception {
    -  143  6
             final String tmpDir = Settings.getString(Settings.KEYS.TEMP_DIRECTORY, System.getProperty("java.io.tmpdir"));
    -  144  6
             final File baseDir = new File(tmpDir);
    -  145  6
             tempFileLocation = File.createTempFile("check", "tmp", baseDir);
    -  146  6
             if (!tempFileLocation.delete()) {
    -  147  0
                 throw new AnalysisException("Unable to delete temporary file '" + tempFileLocation.getAbsolutePath() + "'.");
    -  148   -
             }
    -  149  6
             if (!tempFileLocation.mkdirs()) {
    -  150  0
                 throw new AnalysisException("Unable to create directory '" + tempFileLocation.getAbsolutePath() + "'.");
    -  151   -
             }
    -  152  6
         }
    -  153   -
     
    -  154   -
         /**
    -  155   -
          * The close method does nothing for this Analyzer.
    -  156   -
          *
    -  157   -
          * @throws Exception thrown if there is an exception deleting temporary
    -  158   -
          * files
    -  159   -
          */
    -  160   -
         @Override
    -  161   -
         public void close() throws Exception {
    -  162  6
             if (tempFileLocation != null && tempFileLocation.exists()) {
    -  163  6
                 FileUtils.deleteRecursive(tempFileLocation.getAbsolutePath(), true);
    -  164   -
             }
    -  165  6
         }
    -  166   -
     
    -  167   -
         /**
    -  168   -
          * Analyzes a given dependency. If the dependency is an archive, such as a
    -  169   -
          * WAR or EAR, the contents are extracted, scanned, and added to the list of
    -  170   -
          * dependencies within the engine.
    -  171   -
          *
    -  172   -
          * @param dependency the dependency to analyze
    -  173   -
          * @param engine the engine scanning
    -  174   -
          * @throws AnalysisException thrown if there is an analysis exception
    -  175   -
          */
    -  176   -
         @Override
    -  177   -
         public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
    -  178  3
             final File f = new File(dependency.getActualFilePath());
    -  179  3
             final File tmpDir = getNextTempDirectory();
    -  180  3
             extractFiles(f, tmpDir, engine);
    -  181   -
     
    -  182   -
             //make a copy
    -  183  3
             final List<Dependency> dependencies = new ArrayList<Dependency>(engine.getDependencies());
    -  184  3
             engine.scan(tmpDir);
    -  185  3
             final List<Dependency> newDependencies = engine.getDependencies();
    -  186  3
             if (dependencies.size() != newDependencies.size()) {
    -  187   -
                 //get the new dependencies
    -  188  3
                 final Set<Dependency> dependencySet = new HashSet<Dependency>();
    -  189  3
                 dependencySet.addAll(newDependencies);
    -  190  3
                 dependencySet.removeAll(dependencies);
    -  191   -
     
    -  192  3
                 for (Dependency d : dependencySet) {
    -  193   -
                     //fix the dependency's display name and path
    -  194  177
                     final String displayPath = String.format("%s%s",
    -  195   -
                             dependency.getFilePath(),
    -  196   -
                             d.getActualFilePath().substring(tmpDir.getAbsolutePath().length()));
    -  197  177
                     final String displayName = String.format("%s%s%s",
    -  198   -
                             dependency.getFileName(),
    -  199   -
                             File.separator,
    -  200   -
                             d.getFileName());
    -  201  177
                     d.setFilePath(displayPath);
    -  202  177
                     d.setFileName(displayName);
    -  203   -
     
    -  204   -
                     //TODO - can we get more evidence from the parent? EAR contains module name, etc.
    -  205   -
     
    -  206   -
                     //analyze the dependency (i.e. extract files) if it is a supported type.
    -  207  177
                     if (this.supportsExtension(d.getFileExtension()) && scanDepth < MAX_SCAN_DEPTH) {
    -  208  0
                         scanDepth += 1;
    -  209  0
                         analyze(d, engine);
    -  210  0
                         scanDepth -= 1;
    -  211   -
                     }
    -  212  177
                 }
    -  213   -
             }
    -  214  3
             Collections.sort(engine.getDependencies());
    -  215  3
         }
    -  216   -
     
    -  217   -
         /**
    -  218   -
          * Retrieves the next temporary directory to extract an archive too.
    -  219   -
          *
    -  220   -
          * @return a directory
    -  221   -
          * @throws AnalysisException thrown if unable to create temporary directory
    -  222   -
          */
    -  223   -
         private File getNextTempDirectory() throws AnalysisException {
    -  224  3
             dirCount += 1;
    -  225  3
             final File directory = new File(tempFileLocation, String.valueOf(dirCount));
    -  226  3
             if (!directory.mkdirs()) {
    -  227  0
                 throw new AnalysisException("Unable to create temp directory '" + directory.getAbsolutePath() + "'.");
    -  228   -
             }
    -  229  3
             return directory;
    -  230  
         }
    -  231   +  136   +
         //</editor-fold>
    +  137  
     
    -  232   +  138  
         /**
    -  233   -
          * Extracts the contents of an archive into the specified directory.
    -  234   +  139   +
          * The initialize method does nothing for this Analyzer.
    +  140  
          *
    -  235   -
          * @param archive an archive file such as a WAR or EAR
    -  236   -
          * @param extractTo a directory to extract the contents to
    -  237   -
          * @param engine the scanning engine
    -  238   -
          * @throws AnalysisException thrown if the archive is not found
    -  239   +  141   +
          * @throws Exception is thrown if there is an exception deleting or creating
    +  142   +
          * temporary files
    +  143  
          */
    -  240   -
         private void extractFiles(File archive, File extractTo, Engine engine) throws AnalysisException {
    -  241  3
             if (archive == null || extractTo == null) {
    -  242  0
                 return;
    -  243   +  144   +
         @Override
    +  145   +
         public void initialize() throws Exception {
    +  146  3
             final File baseDir = Settings.getTempDirectory();
    +  147  3
             if (!baseDir.exists()) {
    +  148  0
                 baseDir.mkdirs();
    +  149  
             }
    +  150  3
             tempFileLocation = File.createTempFile("check", "tmp", baseDir);
    +  151  3
             if (!tempFileLocation.delete()) {
    +  152  0
                 throw new AnalysisException("Unable to delete temporary file '" + tempFileLocation.getAbsolutePath() + "'.");
    +  153   +
             }
    +  154  3
             if (!tempFileLocation.mkdirs()) {
    +  155  0
                 throw new AnalysisException("Unable to create directory '" + tempFileLocation.getAbsolutePath() + "'.");
    +  156   +
             }
    +  157  3
         }
    +  158   +
     
    +  159   +
         /**
    +  160   +
          * The close method does nothing for this Analyzer.
    +  161   +
          *
    +  162   +
          * @throws Exception thrown if there is an exception deleting temporary
    +  163   +
          * files
    +  164   +
          */
    +  165   +
         @Override
    +  166   +
         public void close() throws Exception {
    +  167  3
             if (tempFileLocation != null && tempFileLocation.exists()) {
    +  168  3
                 FileUtils.deleteRecursive(tempFileLocation.getAbsolutePath(), true);
    +  169   +
             }
    +  170  3
         }
    +  171   +
     
    +  172   +
         /**
    +  173   +
          * Analyzes a given dependency. If the dependency is an archive, such as a
    +  174   +
          * WAR or EAR, the contents are extracted, scanned, and added to the list of
    +  175   +
          * dependencies within the engine.
    +  176   +
          *
    +  177   +
          * @param dependency the dependency to analyze
    +  178   +
          * @param engine the engine scanning
    +  179   +
          * @throws AnalysisException thrown if there is an analysis exception
    +  180   +
          */
    +  181   +
         @Override
    +  182   +
         public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
    +  183  3
             final File f = new File(dependency.getActualFilePath());
    +  184  3
             final File tmpDir = getNextTempDirectory();
    +  185  3
             extractFiles(f, tmpDir, engine);
    +  186   +
     
    +  187   +
             //make a copy
    +  188  3
             final List<Dependency> dependencies = new ArrayList<Dependency>(engine.getDependencies());
    +  189  3
             engine.scan(tmpDir);
    +  190  3
             final List<Dependency> newDependencies = engine.getDependencies();
    +  191  3
             if (dependencies.size() != newDependencies.size()) {
    +  192   +
                 //get the new dependencies
    +  193  1
                 final Set<Dependency> dependencySet = new HashSet<Dependency>();
    +  194  1
                 dependencySet.addAll(newDependencies);
    +  195  1
                 dependencySet.removeAll(dependencies);
    +  196   +
     
    +  197  1
                 for (Dependency d : dependencySet) {
    +  198   +
                     //fix the dependency's display name and path
    +  199  5
                     final String displayPath = String.format("%s%s",
    +  200   +
                             dependency.getFilePath(),
    +  201   +
                             d.getActualFilePath().substring(tmpDir.getAbsolutePath().length()));
    +  202  5
                     final String displayName = String.format("%s%s%s",
    +  203   +
                             dependency.getFileName(),
    +  204   +
                             File.separator,
    +  205   +
                             d.getFileName());
    +  206  5
                     d.setFilePath(displayPath);
    +  207  5
                     d.setFileName(displayName);
    +  208   +
     
    +  209   +
                     //TODO - can we get more evidence from the parent? EAR contains module name, etc.
    +  210   +
     
    +  211   +
                     //analyze the dependency (i.e. extract files) if it is a supported type.
    +  212  5
                     if (this.supportsExtension(d.getFileExtension()) && scanDepth < MAX_SCAN_DEPTH) {
    +  213  1
                         scanDepth += 1;
    +  214  1
                         analyze(d, engine);
    +  215  1
                         scanDepth -= 1;
    +  216   +
                     }
    +  217  5
                 }
    +  218   +
             }
    +  219  3
             Collections.sort(engine.getDependencies());
    +  220  3
         }
    +  221   +
     
    +  222   +
         /**
    +  223   +
          * Retrieves the next temporary directory to extract an archive too.
    +  224   +
          *
    +  225   +
          * @return a directory
    +  226   +
          * @throws AnalysisException thrown if unable to create temporary directory
    +  227   +
          */
    +  228   +
         private File getNextTempDirectory() throws AnalysisException {
    +  229  3
             dirCount += 1;
    +  230  3
             final File directory = new File(tempFileLocation, String.valueOf(dirCount));
    +  231  3
             if (!directory.mkdirs()) {
    +  232  0
                 throw new AnalysisException("Unable to create temp directory '" + directory.getAbsolutePath() + "'.");
    +  233   +
             }
    +  234  3
             return directory;
    +  235   +
         }
    +  236   +
     
    +  237   +
         /**
    +  238   +
          * Extracts the contents of an archive into the specified directory.
    +  239   +
          *
    +  240   +
          * @param archive an archive file such as a WAR or EAR
    +  241   +
          * @param extractTo a directory to extract the contents to
    +  242   +
          * @param engine the scanning engine
    +  243   +
          * @throws AnalysisException thrown if the archive is not found
     244   -
     
    -  245  3
             FileInputStream fis = null;
    -  246  3
             ZipInputStream zis = null;
    -  247   -
     
    +
          */
    +  245   +
         private void extractFiles(File archive, File extractTo, Engine engine) throws AnalysisException {
    +  246  3
             if (archive == null || extractTo == null) {
    +  247  0
                 return;
     248   +
             }
    +  249   +
     
    +  250  3
             FileInputStream fis = null;
    +  251   +
             //ZipInputStream zis = null;
    +  252  3
             ZipArchiveInputStream zis = null;
    +  253   +
     
    +  254  
             try {
    -  249  3
                 fis = new FileInputStream(archive);
    -  250  0
             } catch (FileNotFoundException ex) {
    -  251  0
                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.INFO, null, ex);
    -  252  0
                 throw new AnalysisException("Archive file was not found.", ex);
    -  253  3
             }
    -  254  3
             zis = new ZipInputStream(new BufferedInputStream(fis));
    -  255   -
             ZipEntry entry;
    -  256   -
             try {
    -  257  18567
                 while ((entry = zis.getNextEntry()) != null) {
    -  258  18564
                     if (entry.isDirectory()) {
    -  259  873
                         final File d = new File(extractTo, entry.getName());
    -  260  873
                         if (!d.mkdirs()) {
    -  261  0
                             throw new AnalysisException("Unable to create '" + d.getAbsolutePath() + "'.");
    +  255  3
                 fis = new FileInputStream(archive);
    +  256  0
             } catch (FileNotFoundException ex) {
    +  257  0
                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.INFO, null, ex);
    +  258  0
                 throw new AnalysisException("Archive file was not found.", ex);
    +  259  3
             }
    +  260  3
             zis = new ZipArchiveInputStream(new BufferedInputStream(fis));
    +  261   +
             ZipArchiveEntry entry;
     262   -
                         }
    -  263  873
                     } else {
    -  264  17691
                         final File file = new File(extractTo, entry.getName());
    -  265  17691
                         final String ext = org.owasp.dependencycheck.utils.FileUtils.getFileExtension(file.getName());
    -  266  17691
                         if (engine.supportsExtension(ext)) {
    -  267  177
                             BufferedOutputStream bos = null;
    -  268   -
                             FileOutputStream fos;
    +
     
    +  263   +
             try {
    +  264  166
                 while ((entry = zis.getNextZipEntry()) != null) {
    +  265  163
                     if (entry.isDirectory()) {
    +  266  25
                         final File d = new File(extractTo, entry.getName());
    +  267  25
                         if (!d.mkdirs()) {
    +  268  0
                             throw new AnalysisException("Unable to create '" + d.getAbsolutePath() + "'.");
     269   -
                             try {
    -  270  177
                                 fos = new FileOutputStream(file);
    -  271  177
                                 bos = new BufferedOutputStream(fos, BUFFER_SIZE);
    -  272   -
                                 int count;
    -  273  177
                                 final byte data[] = new byte[BUFFER_SIZE];
    -  274  354765
                                 while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) {
    -  275  354588
                                     bos.write(data, 0, count);
    -  276   -
                                 }
    -  277  177
                                 bos.flush();
    -  278  0
                             } catch (FileNotFoundException ex) {
    -  279  0
                                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
    -  280  0
                                 throw new AnalysisException("Unable to find file '" + file.getName() + "'.", ex);
    -  281  0
                             } catch (IOException ex) {
    -  282  0
                                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
    -  283  0
                                 throw new AnalysisException("IO Exception while parsing file '" + file.getName() + "'.", ex);
    -  284   -
                             } finally {
    -  285  177
                                 if (bos != null) {
    -  286   -
                                     try {
    -  287  177
                                         bos.close();
    -  288  0
                                     } catch (IOException ex) {
    -  289  0
                                         Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
    -  290  177
                                     }
    -  291   -
                                 }
    -  292   -
                             }
    -  293  
                         }
    -  294  17691
                     }
    -  295   -
                 }
    -  296  0
             } catch (IOException ex) {
    -  297  0
                 final String msg = String.format("Exception reading archive '%s'.", archive.getName());
    -  298  0
                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, msg, ex);
    -  299  0
                 throw new AnalysisException(msg, ex);
    +  270  25
                     } else {
    +  271  138
                         final File file = new File(extractTo, entry.getName());
    +  272  138
                         final String ext = org.owasp.dependencycheck.utils.FileUtils.getFileExtension(file.getName());
    +  273  138
                         if (engine.supportsExtension(ext)) {
    +  274  5
                             BufferedOutputStream bos = null;
    +  275   +
                             FileOutputStream fos;
    +  276   +
                             try {
    +  277  5
                                 fos = new FileOutputStream(file);
    +  278  5
                                 bos = new BufferedOutputStream(fos, BUFFER_SIZE);
    +  279   +
                                 int count;
    +  280  5
                                 final byte data[] = new byte[BUFFER_SIZE];
    +  281  1307
                                 while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) {
    +  282  1302
                                     bos.write(data, 0, count);
    +  283   +
                                 }
    +  284  5
                                 bos.flush();
    +  285  0
                             } catch (FileNotFoundException ex) {
    +  286  0
                                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
    +  287  0
                                 throw new AnalysisException("Unable to find file '" + file.getName() + "'.", ex);
    +  288  0
                             } catch (IOException ex) {
    +  289  0
                                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
    +  290  0
                                 throw new AnalysisException("IO Exception while parsing file '" + file.getName() + "'.", ex);
    +  291   +
                             } finally {
    +  292  5
                                 if (bos != null) {
    +  293   +
                                     try {
    +  294  5
                                         bos.close();
    +  295  0
                                     } catch (IOException ex) {
    +  296  0
                                         Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
    +  297  5
                                     }
    +  298   +
                                 }
    +  299   +
                             }
     300   +
                         }
    +  301  138
                     }
    +  302   +
                 }
    +  303  0
             } catch (IOException ex) {
    +  304  0
                 final String msg = String.format("Exception reading archive '%s'.", archive.getName());
    +  305  0
                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, msg);
    +  306  0
                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex);
    +  307  0
                 throw new AnalysisException(msg, ex);
    +  308  0
             } catch (Throwable ex) {
    +  309  0
                 final String msg = String.format("Exception reading archive '%s'.", archive.getName());
    +  310  0
                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, msg);
    +  311  0
                 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, null, ex);
    +  312  0
                 throw new AnalysisException(msg, ex);
    +  313  
             } finally {
    -  301  0
                 try {
    -  302  3
                     zis.close();
    -  303  0
                 } catch (IOException ex) {
    -  304  0
                     Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
    -  305  3
                 }
    -  306  0
             }
    -  307  3
         }
    -  308   +  314  0
                 try {
    +  315  3
                     zis.close();
    +  316  0
                 } catch (IOException ex) {
    +  317  0
                     Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
    +  318  3
                 }
    +  319  0
             }
    +  320  3
         }
    +  321  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.CPEAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.CPEAnalyzer.html new file mode 100644 index 000000000..48219cf43 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.CPEAnalyzer.html @@ -0,0 +1,1391 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.analyzer.CPEAnalyzer
    +
     
    + + + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    CPEAnalyzer
    87%
    169/194
    82%
    104/126
    4
    CPEAnalyzer$IdentifierConfidence
    100%
    3/3
    N/A
    4
    CPEAnalyzer$IdentifierMatch
    38%
    15/39
    16%
    4/24
    4
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.analyzer;
     20  
     
     21  
     import java.io.IOException;
     22  
     import java.io.UnsupportedEncodingException;
     23  
     import java.net.URLEncoder;
     24  
     import java.sql.SQLException;
     25  
     import java.util.ArrayList;
     26  
     import java.util.Collections;
     27  
     import java.util.List;
     28  
     import java.util.Set;
     29  
     import java.util.StringTokenizer;
     30  
     import java.util.logging.Level;
     31  
     import java.util.logging.Logger;
     32  
     import org.apache.lucene.document.Document;
     33  
     import org.apache.lucene.index.CorruptIndexException;
     34  
     import org.apache.lucene.queryparser.classic.ParseException;
     35  
     import org.apache.lucene.search.ScoreDoc;
     36  
     import org.apache.lucene.search.TopDocs;
     37  
     import org.owasp.dependencycheck.Engine;
     38  
     import org.owasp.dependencycheck.data.lucene.LuceneUtils;
     39  
     import org.owasp.dependencycheck.dependency.Dependency;
     40  
     import org.owasp.dependencycheck.dependency.Evidence;
     41  
     import org.owasp.dependencycheck.dependency.Evidence.Confidence;
     42  
     import org.owasp.dependencycheck.dependency.EvidenceCollection;
     43  
     import org.owasp.dependencycheck.data.cpe.CpeIndexReader;
     44  
     import org.owasp.dependencycheck.data.cpe.Fields;
     45  
     import org.owasp.dependencycheck.data.cpe.IndexEntry;
     46  
     import org.owasp.dependencycheck.data.nvdcve.CveDB;
     47  
     import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
     48  
     import org.owasp.dependencycheck.dependency.Identifier;
     49  
     import org.owasp.dependencycheck.dependency.VulnerableSoftware;
     50  
     import org.owasp.dependencycheck.utils.DependencyVersion;
     51  
     import org.owasp.dependencycheck.utils.DependencyVersionUtil;
     52  
     
     53  
     /**
     54  
      * CPEAnalyzer is a utility class that takes a project dependency and attempts
     55  
      * to discern if there is an associated CPE. It uses the evidence contained
     56  
      * within the dependency to search the Lucene index.
     57  
      *
     58  
      * @author Jeremy Long (jeremy.long@owasp.org)
     59  
      */
     60  11
     public class CPEAnalyzer implements Analyzer {
     61  
     
     62  
         /**
     63  
          * The maximum number of query results to return.
     64  
          */
     65  
         static final int MAX_QUERY_RESULTS = 25;
     66  
         /**
     67  
          * The weighting boost to give terms when constructing the Lucene query.
     68  
          */
     69  
         static final String WEIGHTING_BOOST = "^5";
     70  
         /**
     71  
          * A string representation of a regular expression defining characters
     72  
          * utilized within the CPE Names.
     73  
          */
     74  
         static final String CLEANSE_CHARACTER_RX = "[^A-Za-z0-9 ._-]";
     75  
         /**
     76  
          * A string representation of a regular expression used to remove all but
     77  
          * alpha characters.
     78  
          */
     79  
         static final String CLEANSE_NONALPHA_RX = "[^A-Za-z]*";
     80  
         /**
     81  
          * The additional size to add to a new StringBuilder to account for extra
     82  
          * data that will be written into the string.
     83  
          */
     84  
         static final int STRING_BUILDER_BUFFER = 20;
     85  
         /**
     86  
          * The CPE Index Reader.
     87  
          */
     88  
         private CpeIndexReader cpe;
     89  
         /**
     90  
          * The CVE Database.
     91  
          */
     92  
         private CveDB cve;
     93  
     
     94  
         /**
     95  
          * Opens the data source.
     96  
          *
     97  
          * @throws IOException when the Lucene directory to be queried does not
     98  
          * exist or is corrupt.
     99  
          * @throws DatabaseException when the database throws an exception. This
     100  
          * usually occurs when the database is in use by another process.
     101  
          */
     102  
         public void open() throws IOException, DatabaseException {
     103  9
             cpe = new CpeIndexReader();
     104  9
             cpe.open();
     105  9
             cve = new CveDB();
     106  
             try {
     107  9
                 cve.open();
     108  0
             } catch (SQLException ex) {
     109  0
                 Logger.getLogger(CPEAnalyzer.class.getName()).log(Level.FINE, null, ex);
     110  0
                 throw new DatabaseException("Unable to open the cve db", ex);
     111  0
             } catch (ClassNotFoundException ex) {
     112  0
                 Logger.getLogger(CPEAnalyzer.class.getName()).log(Level.FINE, null, ex);
     113  0
                 throw new DatabaseException("Unable to open the cve db", ex);
     114  9
             }
     115  9
         }
     116  
     
     117  
         /**
     118  
          * Closes the data source.
     119  
          */
     120  
         @Override
     121  
         public void close() {
     122  9
             if (cpe != null) {
     123  9
                 cpe.close();
     124  
             }
     125  9
             if (cve != null) {
     126  9
                 cve.close();
     127  
             }
     128  9
         }
     129  
     
     130  
         /**
     131  
          * Returns the status of the data source - is the index open.
     132  
          *
     133  
          * @return true or false.
     134  
          */
     135  
         public boolean isOpen() {
     136  8
             return (cpe != null) && cpe.isOpen();
     137  
         }
     138  
     
     139  
         /**
     140  
          * Ensures that the Lucene index is closed.
     141  
          *
     142  
          * @throws Throwable when a throwable is thrown.
     143  
          */
     144  
         @Override
     145  
         protected void finalize() throws Throwable {
     146  5
             super.finalize();
     147  5
             if (isOpen()) {
     148  0
                 close();
     149  
             }
     150  5
         }
     151  
     
     152  
         /**
     153  
          * Searches the data store of CPE entries, trying to identify the CPE for
     154  
          * the given dependency based on the evidence contained within. The
     155  
          * dependency passed in is updated with any identified CPE values.
     156  
          *
     157  
          * @param dependency the dependency to search for CPE entries on.
     158  
          * @throws CorruptIndexException is thrown when the Lucene index is corrupt.
     159  
          * @throws IOException is thrown when an IOException occurs.
     160  
          * @throws ParseException is thrown when the Lucene query cannot be parsed.
     161  
          */
     162  
         protected void determineCPE(Dependency dependency) throws CorruptIndexException, IOException, ParseException {
     163  10
             Confidence vendorConf = Confidence.HIGHEST;
     164  10
             Confidence productConf = Confidence.HIGHEST;
     165  
     
     166  10
             String vendors = addEvidenceWithoutDuplicateTerms("", dependency.getVendorEvidence(), vendorConf);
     167  10
             String products = addEvidenceWithoutDuplicateTerms("", dependency.getProductEvidence(), productConf);
     168  
     
     169  10
             int ctr = 0;
     170  
             do {
     171  40
                 if (!vendors.isEmpty() && !products.isEmpty()) {
     172  40
                     final List<IndexEntry> entries = searchCPE(vendors, products, dependency.getProductEvidence().getWeighting(),
     173  
                             dependency.getVendorEvidence().getWeighting());
     174  
     
     175  40
                     for (IndexEntry e : entries) {
     176  397
                         if (verifyEntry(e, dependency)) {
     177  27
                             final String vendor = e.getVendor();
     178  27
                             final String product = e.getProduct();
     179  27
                             determineIdentifiers(dependency, vendor, product);
     180  397
                         }
     181  
                     }
     182  
                 }
     183  40
                 vendorConf = reduceConfidence(vendorConf);
     184  40
                 if (dependency.getVendorEvidence().contains(vendorConf)) {
     185  38
                     vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), vendorConf);
     186  
                 }
     187  40
                 productConf = reduceConfidence(productConf);
     188  40
                 if (dependency.getProductEvidence().contains(productConf)) {
     189  40
                     products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), productConf);
     190  
                 }
     191  40
             } while ((++ctr) < 4);
     192  10
         }
     193  
     
     194  
         /**
     195  
          * Returns the text created by concatenating the text and the values from
     196  
          * the EvidenceCollection (filtered for a specific confidence). This
     197  
          * attempts to prevent duplicate terms from being added.<br/<br/> Note, if
     198  
          * the evidence is longer then 200 characters it will be truncated.
     199  
          *
     200  
          * @param text the base text.
     201  
          * @param ec an EvidenceCollection
     202  
          * @param confidenceFilter a Confidence level to filter the evidence by.
     203  
          * @return the new evidence text
     204  
          */
     205  
         private String addEvidenceWithoutDuplicateTerms(final String text, final EvidenceCollection ec, Confidence confidenceFilter) {
     206  98
             final String txt = (text == null) ? "" : text;
     207  98
             final StringBuilder sb = new StringBuilder(txt.length() + (20 * ec.size()));
     208  98
             sb.append(' ').append(txt).append(' ');
     209  98
             for (Evidence e : ec.iterator(confidenceFilter)) {
     210  247
                 String value = e.getValue();
     211  
     
     212  
                 //hack to get around the fact that lucene does a really good job of recognizing domains and not
     213  
                 // splitting them. TODO - put together a better lucene analyzer specific to the domain.
     214  247
                 if (value.startsWith("http://")) {
     215  20
                     value = value.substring(7).replaceAll("\\.", " ");
     216  
                 }
     217  247
                 if (value.startsWith("https://")) {
     218  0
                     value = value.substring(8).replaceAll("\\.", " ");
     219  
                 }
     220  247
                 if (sb.indexOf(" " + value + " ") < 0) {
     221  153
                     sb.append(value).append(' ');
     222  
                 }
     223  247
             }
     224  98
             return sb.toString().trim();
     225  
         }
     226  
     
     227  
         /**
     228  
          * Reduces the given confidence by one level. This returns LOW if the
     229  
          * confidence passed in is not HIGH.
     230  
          *
     231  
          * @param c the confidence to reduce.
     232  
          * @return One less then the confidence passed in.
     233  
          */
     234  
         private Confidence reduceConfidence(final Confidence c) {
     235  80
             if (c == Confidence.HIGHEST) {
     236  20
                 return Confidence.HIGH;
     237  60
             } else if (c == Confidence.HIGH) {
     238  20
                 return Confidence.MEDIUM;
     239  
             } else {
     240  40
                 return Confidence.LOW;
     241  
             }
     242  
         }
     243  
     
     244  
         /**
     245  
          * <p>Searches the Lucene CPE index to identify possible CPE entries
     246  
          * associated with the supplied vendor, product, and version.</p>
     247  
          *
     248  
          * <p>If either the vendorWeightings or productWeightings lists have been
     249  
          * populated this data is used to add weighting factors to the search.</p>
     250  
          *
     251  
          * @param vendor the text used to search the vendor field
     252  
          * @param product the text used to search the product field
     253  
          * @param vendorWeightings a list of strings to use to add weighting factors
     254  
          * to the vendor field
     255  
          * @param productWeightings Adds a list of strings that will be used to add
     256  
          * weighting factors to the product search
     257  
          * @return a list of possible CPE values
     258  
          * @throws CorruptIndexException when the Lucene index is corrupt
     259  
          * @throws IOException when the Lucene index is not found
     260  
          * @throws ParseException when the generated query is not valid
     261  
          */
     262  
         protected List<IndexEntry> searchCPE(String vendor, String product,
     263  
                 Set<String> vendorWeightings, Set<String> productWeightings)
     264  
                 throws CorruptIndexException, IOException, ParseException {
     265  41
             final ArrayList<IndexEntry> ret = new ArrayList<IndexEntry>(MAX_QUERY_RESULTS);
     266  
     
     267  41
             final String searchString = buildSearch(vendor, product, vendorWeightings, productWeightings);
     268  41
             if (searchString == null) {
     269  0
                 return ret;
     270  
             }
     271  
     
     272  41
             final TopDocs docs = cpe.search(searchString, MAX_QUERY_RESULTS);
     273  834
             for (ScoreDoc d : docs.scoreDocs) {
     274  793
                 if (d.score >= 0.08) {
     275  417
                     final Document doc = cpe.getDocument(d.doc);
     276  417
                     final IndexEntry entry = new IndexEntry();
     277  417
                     entry.setVendor(doc.get(Fields.VENDOR));
     278  417
                     entry.setProduct(doc.get(Fields.PRODUCT));
     279  
     //                if (d.score < 0.08) {
     280  
     //                    System.out.print(entry.getVendor());
     281  
     //                    System.out.print(":");
     282  
     //                    System.out.print(entry.getProduct());
     283  
     //                    System.out.print(":");
     284  
     //                    System.out.println(d.score);
     285  
     //                }
     286  417
                     entry.setSearchScore(d.score);
     287  417
                     if (!ret.contains(entry)) {
     288  417
                         ret.add(entry);
     289  
                     }
     290  
                 }
     291  
             }
     292  41
             return ret;
     293  
         }
     294  
     
     295  
         /**
     296  
          * <p>Builds a Lucene search string by properly escaping data and
     297  
          * constructing a valid search query.</p>
     298  
          *
     299  
          * <p>If either the possibleVendor or possibleProducts lists have been
     300  
          * populated this data is used to add weighting factors to the search string
     301  
          * generated.</p>
     302  
          *
     303  
          * @param vendor text to search the vendor field
     304  
          * @param product text to search the product field
     305  
          * @param vendorWeighting a list of strings to apply to the vendor to boost
     306  
          * the terms weight
     307  
          * @param productWeightings a list of strings to apply to the product to
     308  
          * boost the terms weight
     309  
          * @return the Lucene query
     310  
          */
     311  
         protected String buildSearch(String vendor, String product,
     312  
                 Set<String> vendorWeighting, Set<String> productWeightings) {
     313  45
             final String v = vendor; //.replaceAll("[^\\w\\d]", " ");
     314  45
             final String p = product; //.replaceAll("[^\\w\\d]", " ");
     315  45
             final StringBuilder sb = new StringBuilder(v.length() + p.length()
     316  
                     + Fields.PRODUCT.length() + Fields.VENDOR.length() + STRING_BUILDER_BUFFER);
     317  
     
     318  45
             if (!appendWeightedSearch(sb, Fields.PRODUCT, p, productWeightings)) {
     319  0
                 return null;
     320  
             }
     321  45
             sb.append(" AND ");
     322  45
             if (!appendWeightedSearch(sb, Fields.VENDOR, v, vendorWeighting)) {
     323  0
                 return null;
     324  
             }
     325  45
             return sb.toString();
     326  
         }
     327  
     
     328  
         /**
     329  
          * This method constructs a Lucene query for a given field. The searchText
     330  
          * is split into separate words and if the word is within the list of
     331  
          * weighted words then an additional weighting is applied to the term as it
     332  
          * is appended into the query.
     333  
          *
     334  
          * @param sb a StringBuilder that the query text will be appended to.
     335  
          * @param field the field within the Lucene index that the query is
     336  
          * searching.
     337  
          * @param searchText text used to construct the query.
     338  
          * @param weightedText a list of terms that will be considered higher
     339  
          * importance when searching.
     340  
          * @return if the append was successful.
     341  
          */
     342  
         private boolean appendWeightedSearch(StringBuilder sb, String field, String searchText, Set<String> weightedText) {
     343  90
             sb.append(" ").append(field).append(":( ");
     344  
     
     345  90
             final String cleanText = cleanseText(searchText);
     346  
     
     347  90
             if ("".equals(cleanText)) {
     348  0
                 return false;
     349  
             }
     350  
     
     351  90
             if (weightedText == null || weightedText.isEmpty()) {
     352  12
                 LuceneUtils.appendEscapedLuceneQuery(sb, cleanText);
     353  
             } else {
     354  78
                 final StringTokenizer tokens = new StringTokenizer(cleanText);
     355  920
                 while (tokens.hasMoreElements()) {
     356  842
                     final String word = tokens.nextToken();
     357  842
                     String temp = null;
     358  842
                     for (String weighted : weightedText) {
     359  1709
                         final String weightedStr = cleanseText(weighted);
     360  1709
                         if (equalsIgnoreCaseAndNonAlpha(word, weightedStr)) {
     361  173
                             temp = LuceneUtils.escapeLuceneQuery(word) + WEIGHTING_BOOST;
     362  173
                             if (!word.equalsIgnoreCase(weightedStr)) {
     363  12
                                 temp += " " + LuceneUtils.escapeLuceneQuery(weightedStr) + WEIGHTING_BOOST;
     364  
                             }
     365  
                         }
     366  1709
                     }
     367  842
                     if (temp == null) {
     368  669
                         temp = LuceneUtils.escapeLuceneQuery(word);
     369  
                     }
     370  842
                     sb.append(" ").append(temp);
     371  842
                 }
     372  
             }
     373  90
             sb.append(" ) ");
     374  90
             return true;
     375  
         }
     376  
     
     377  
         /**
     378  
          * Removes characters from the input text that are not used within the CPE
     379  
          * index.
     380  
          *
     381  
          * @param text is the text to remove the characters from.
     382  
          * @return the text having removed some characters.
     383  
          */
     384  
         private String cleanseText(String text) {
     385  1799
             return text.replaceAll(CLEANSE_CHARACTER_RX, " ");
     386  
         }
     387  
     
     388  
         /**
     389  
          * Compares two strings after lower casing them and removing the non-alpha
     390  
          * characters.
     391  
          *
     392  
          * @param l string one to compare.
     393  
          * @param r string two to compare.
     394  
          * @return whether or not the two strings are similar.
     395  
          */
     396  
         private boolean equalsIgnoreCaseAndNonAlpha(String l, String r) {
     397  1709
             if (l == null || r == null) {
     398  0
                 return false;
     399  
             }
     400  
     
     401  1709
             final String left = l.replaceAll(CLEANSE_NONALPHA_RX, "");
     402  1709
             final String right = r.replaceAll(CLEANSE_NONALPHA_RX, "");
     403  1709
             return left.equalsIgnoreCase(right);
     404  
         }
     405  
     
     406  
         /**
     407  
          * Ensures that the CPE Identified matches the dependency. This validates
     408  
          * that the product, vendor, and version information for the CPE are
     409  
          * contained within the dependencies evidence.
     410  
          *
     411  
          * @param entry a CPE entry.
     412  
          * @param dependency the dependency that the CPE entries could be for.
     413  
          * @return whether or not the entry is valid.
     414  
          */
     415  
         private boolean verifyEntry(final IndexEntry entry, final Dependency dependency) {
     416  397
             boolean isValid = false;
     417  
     
     418  397
             if (collectionContainsString(dependency.getProductEvidence(), entry.getProduct())
     419  
                     && collectionContainsString(dependency.getVendorEvidence(), entry.getVendor())) {
     420  
                 //&& collectionContainsVersion(dependency.getVersionEvidence(), entry.getVersion())
     421  27
                 isValid = true;
     422  
             }
     423  397
             return isValid;
     424  
         }
     425  
     
     426  
         /**
     427  
          * Used to determine if the EvidenceCollection contains a specific string.
     428  
          *
     429  
          * @param ec an EvidenceCollection
     430  
          * @param text the text to search for
     431  
          * @return whether or not the EvidenceCollection contains the string
     432  
          */
     433  
         private boolean collectionContainsString(EvidenceCollection ec, String text) {
     434  
     
     435  
             //<editor-fold defaultstate="collapsed" desc="This code fold contains an old version of the code, delete once more testing is done">
     436  
             //        String[] splitText = text.split("[\\s_-]");
     437  
             //
     438  
             //        for (String search : splitText) {
     439  
             //            //final String search = text.replaceAll("[\\s_-]", "").toLowerCase();
     440  
             //            if (ec.containsUsedString(search)) {
     441  
             //                return true;
     442  
             //            }
     443  
             //        }
     444  
             //</editor-fold>
     445  
     
     446  
             //TODO - likely need to change the split... not sure if this will work for CPE with special chars
     447  428
             final String[] words = text.split("[\\s_-]");
     448  428
             final List<String> list = new ArrayList<String>();
     449  428
             String tempWord = null;
     450  1195
             for (String word : words) {
     451  
                 //single letter words should be concatonated with the next word.
     452  
                 // so { "m", "core", "sample" } -> { "mcore", "sample" }
     453  767
                 if (tempWord != null) {
     454  17
                     list.add(tempWord + word);
     455  17
                     tempWord = null;
     456  750
                 } else if (word.length() <= 2) {
     457  28
                     tempWord = word;
     458  
                 } else {
     459  722
                     list.add(word);
     460  
                 }
     461  
             }
     462  428
             if (tempWord != null && !list.isEmpty()) {
     463  9
                 String tmp = list.get(list.size() - 1) + tempWord;
     464  9
                 list.add(tmp);
     465  
             }
     466  428
             boolean contains = true;
     467  428
             for (String word : list) {
     468  748
                 contains &= ec.containsUsedString(word);
     469  
             }
     470  428
             return contains;
     471  
         }
     472  
     
     473  
         /**
     474  
          * Analyzes a dependency and attempts to determine if there are any CPE
     475  
          * identifiers for this dependency.
     476  
          *
     477  
          * @param dependency The Dependency to analyze.
     478  
          * @param engine The analysis engine
     479  
          * @throws AnalysisException is thrown if there is an issue analyzing the
     480  
          * dependency.
     481  
          */
     482  
         @Override
     483  
         public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
     484  
             try {
     485  6
                 determineCPE(dependency);
     486  0
             } catch (CorruptIndexException ex) {
     487  0
                 throw new AnalysisException("CPE Index is corrupt.", ex);
     488  0
             } catch (IOException ex) {
     489  0
                 throw new AnalysisException("Failure opening the CPE Index.", ex);
     490  0
             } catch (ParseException ex) {
     491  0
                 throw new AnalysisException("Unable to parse the generated Lucene query for this dependency.", ex);
     492  6
             }
     493  6
         }
     494  
     
     495  
         /**
     496  
          * Returns true because this analyzer supports all dependency types.
     497  
          *
     498  
          * @return true.
     499  
          */
     500  
         @Override
     501  
         public Set<String> getSupportedExtensions() {
     502  128
             return null;
     503  
         }
     504  
     
     505  
         /**
     506  
          * Returns the name of this analyzer.
     507  
          *
     508  
          * @return the name of this analyzer.
     509  
          */
     510  
         @Override
     511  
         public String getName() {
     512  0
             return "CPE Analyzer";
     513  
         }
     514  
     
     515  
         /**
     516  
          * Returns true because this analyzer supports all dependency types.
     517  
          *
     518  
          * @param extension the file extension of the dependency being analyzed.
     519  
          * @return true.
     520  
          */
     521  
         @Override
     522  
         public boolean supportsExtension(String extension) {
     523  0
             return true;
     524  
         }
     525  
     
     526  
         /**
     527  
          * Returns the analysis phase that this analyzer should run in.
     528  
          *
     529  
          * @return the analysis phase that this analyzer should run in.
     530  
          */
     531  
         @Override
     532  
         public AnalysisPhase getAnalysisPhase() {
     533  2
             return AnalysisPhase.IDENTIFIER_ANALYSIS;
     534  
         }
     535  
     
     536  
         /**
     537  
          * Opens the CPE Lucene Index.
     538  
          *
     539  
          * @throws Exception is thrown if there is an issue opening the index.
     540  
          */
     541  
         @Override
     542  
         public void initialize() throws Exception {
     543  0
             this.open();
     544  0
         }
     545  
     
     546  
         /**
     547  
          * Retrieves a list of CPE values from the CveDB based on the vendor and
     548  
          * product passed in. The list is then validated to find only CPEs that are
     549  
          * valid for the given dependency. It is possible that the CPE identified is
     550  
          * a best effort "guess" based on the vendor, product, and version
     551  
          * information.
     552  
          *
     553  
          * @param dependency the Dependency being analyzed
     554  
          * @param vendor the vendor for the CPE being analyzed
     555  
          * @param product the product for the CPE being analyzed
     556  
          * @throws UnsupportedEncodingException is thrown if UTF-8 is not supported
     557  
          */
     558  
         private void determineIdentifiers(Dependency dependency, String vendor, String product) throws UnsupportedEncodingException {
     559  27
             final Set<VulnerableSoftware> cpes = cve.getCPEs(vendor, product);
     560  27
             DependencyVersion bestGuess = new DependencyVersion("-");
     561  27
             Confidence bestGuessConf = null;
     562  27
             final List<IdentifierMatch> collected = new ArrayList<IdentifierMatch>();
     563  135
             for (Confidence conf : Confidence.values()) {
     564  108
                 for (Evidence evidence : dependency.getVersionEvidence().iterator(conf)) {
     565  84
                     final DependencyVersion evVer = DependencyVersionUtil.parseVersion(evidence.getValue());
     566  84
                     if (evVer == null) {
     567  0
                         continue;
     568  
                     }
     569  84
                     for (VulnerableSoftware vs : cpes) {
     570  
                         DependencyVersion dbVer;
     571  4216
                         if (vs.getRevision() != null && !vs.getRevision().isEmpty()) {
     572  1419
                             dbVer = DependencyVersionUtil.parseVersion(vs.getVersion() + "." + vs.getRevision());
     573  
                         } else {
     574  2797
                             dbVer = DependencyVersionUtil.parseVersion(vs.getVersion());
     575  
                         }
     576  4216
                         if (dbVer == null //special case, no version specified - everything is vulnerable
     577  
                                 || evVer.equals(dbVer)) { //woot exect match
     578  77
                             final String url = String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(vs.getName(), "UTF-8"));
     579  77
                             final IdentifierMatch match = new IdentifierMatch("cpe", vs.getName(), url, IdentifierConfidence.EXACT_MATCH, conf);
     580  77
                             collected.add(match);
     581  77
                         } else {
     582  
                             //TODO the following isn't quite right is it? need to think about this guessing game a bit more.
     583  4139
                             if (evVer.getVersionParts().size() <= dbVer.getVersionParts().size()
     584  
                                     && evVer.matchesAtLeastThreeLevels(dbVer)) {
     585  232
                                 if (bestGuessConf == null || bestGuessConf.compareTo(conf) > 0) {
     586  6
                                     if (bestGuess.getVersionParts().size() < dbVer.getVersionParts().size()) {
     587  6
                                         bestGuess = dbVer;
     588  6
                                         bestGuessConf = conf;
     589  
                                     }
     590  
                                 }
     591  
                             }
     592  
                         }
     593  4216
                     }
     594  84
                     if (bestGuessConf == null || bestGuessConf.compareTo(conf) > 0) {
     595  21
                         if (bestGuess.getVersionParts().size() < evVer.getVersionParts().size()) {
     596  21
                             bestGuess = evVer;
     597  21
                             bestGuessConf = conf;
     598  
                         }
     599  
                     }
     600  84
                 }
     601  
             }
     602  27
             final String cpeName = String.format("cpe:/a:%s:%s:%s", vendor, product, bestGuess.toString());
     603  27
             final String url = null; //String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(cpeName, "UTF-8"));
     604  27
             if (bestGuessConf == null) {
     605  0
                 bestGuessConf = Confidence.LOW;
     606  
             }
     607  27
             final IdentifierMatch match = new IdentifierMatch("cpe", cpeName, url, IdentifierConfidence.BEST_GUESS, bestGuessConf);
     608  27
             collected.add(match);
     609  
     
     610  27
             Collections.sort(collected);
     611  27
             final IdentifierConfidence bestIdentifierQuality = collected.get(0).getConfidence();
     612  27
             final Confidence bestEvidenceQuality = collected.get(0).getEvidenceConfidence();
     613  27
             for (IdentifierMatch m : collected) {
     614  104
                 if (bestIdentifierQuality.equals(m.getConfidence())
     615  
                         && bestEvidenceQuality.equals(m.getEvidenceConfidence())) {
     616  32
                     dependency.addIdentifier(m.getIdentifier());
     617  
                 }
     618  
             }
     619  27
         }
     620  
     
     621  
         /**
     622  
          * The confidence whether the identifier is an exact match, or a best guess.
     623  
          */
     624  3
         private enum IdentifierConfidence {
     625  
     
     626  
             /**
     627  
              * An exact match for the CPE.
     628  
              */
     629  1
             EXACT_MATCH,
     630  
             /**
     631  
              * A best guess for the CPE.
     632  
              */
     633  1
             BEST_GUESS
     634  
         }
     635  
     
     636  
         /**
     637  
          * A simple object to hold an identifier and carry information about the
     638  
          * confidence in the identifier.
     639  
          */
     640  101
         private static class IdentifierMatch implements Comparable<IdentifierMatch> {
     641  
     
     642  
             /**
     643  
              * Constructs an IdentiferMatch.
     644  
              *
     645  
              * @param type the type of identifier (such as CPE)
     646  
              * @param value the value of the identifier
     647  
              * @param url the URL of the identifier
     648  
              * @param identifierConfidence the confidence in the identifier: best
     649  
              * guess or exact match
     650  
              * @param evidenceConfidence the confidence of the evidence used to find
     651  
              * the identifier
     652  
              */
     653  104
             IdentifierMatch(String type, String value, String url, IdentifierConfidence identifierConfidence, Confidence evidenceConfidence) {
     654  104
                 this.identifier = new Identifier(type, value, url);
     655  104
                 this.confidence = identifierConfidence;
     656  104
                 this.evidenceConfidence = evidenceConfidence;
     657  104
             }
     658  
             //<editor-fold defaultstate="collapsed" desc="Property implementations: evidenceConfidence, confidence, identifier">
     659  
             /**
     660  
              * The confidence in the evidence used to identify this match.
     661  
              */
     662  
             private Confidence evidenceConfidence;
     663  
     
     664  
             /**
     665  
              * Get the value of evidenceConfidence
     666  
              *
     667  
              * @return the value of evidenceConfidence
     668  
              */
     669  
             public Confidence getEvidenceConfidence() {
     670  111
                 return evidenceConfidence;
     671  
             }
     672  
     
     673  
             /**
     674  
              * Set the value of evidenceConfidence
     675  
              *
     676  
              * @param evidenceConfidence new value of evidenceConfidence
     677  
              */
     678  
             public void setEvidenceConfidence(Confidence evidenceConfidence) {
     679  0
                 this.evidenceConfidence = evidenceConfidence;
     680  0
             }
     681  
             /**
     682  
              * The confidence whether this is an exact match, or a best guess.
     683  
              */
     684  
             private IdentifierConfidence confidence;
     685  
     
     686  
             /**
     687  
              * Get the value of confidence.
     688  
              *
     689  
              * @return the value of confidence
     690  
              */
     691  
             public IdentifierConfidence getConfidence() {
     692  131
                 return confidence;
     693  
             }
     694  
     
     695  
             /**
     696  
              * Set the value of confidence.
     697  
              *
     698  
              * @param confidence new value of confidence
     699  
              */
     700  
             public void setConfidence(IdentifierConfidence confidence) {
     701  0
                 this.confidence = confidence;
     702  0
             }
     703  
             /**
     704  
              * The CPE identifier.
     705  
              */
     706  
             private Identifier identifier;
     707  
     
     708  
             /**
     709  
              * Get the value of identifier.
     710  
              *
     711  
              * @return the value of identifier
     712  
              */
     713  
             public Identifier getIdentifier() {
     714  32
                 return identifier;
     715  
             }
     716  
     
     717  
             /**
     718  
              * Set the value of identifier.
     719  
              *
     720  
              * @param identifier new value of identifier
     721  
              */
     722  
             public void setIdentifier(Identifier identifier) {
     723  0
                 this.identifier = identifier;
     724  0
             }
     725  
             //</editor-fold>
     726  
             //<editor-fold defaultstate="collapsed" desc="Standard implementations of toString, hashCode, and equals">
     727  
     
     728  
             /**
     729  
              * Standard toString() implementation.
     730  
              *
     731  
              * @return the string representation of the object
     732  
              */
     733  
             @Override
     734  
             public String toString() {
     735  0
                 return "IdentifierMatch{" + "evidenceConfidence=" + evidenceConfidence
     736  
                         + ", confidence=" + confidence + ", identifier=" + identifier + '}';
     737  
             }
     738  
     
     739  
             /**
     740  
              * Standard hashCode() implementation.
     741  
              *
     742  
              * @return the hashCode
     743  
              */
     744  
             @Override
     745  
             public int hashCode() {
     746  0
                 int hash = 5;
     747  0
                 hash = 97 * hash + (this.evidenceConfidence != null ? this.evidenceConfidence.hashCode() : 0);
     748  0
                 hash = 97 * hash + (this.confidence != null ? this.confidence.hashCode() : 0);
     749  0
                 hash = 97 * hash + (this.identifier != null ? this.identifier.hashCode() : 0);
     750  0
                 return hash;
     751  
             }
     752  
     
     753  
             /**
     754  
              * Standard equals implementation.
     755  
              *
     756  
              * @param obj the object to compare
     757  
              * @return true if the objects are equal, otherwise false
     758  
              */
     759  
             @Override
     760  
             public boolean equals(Object obj) {
     761  0
                 if (obj == null) {
     762  0
                     return false;
     763  
                 }
     764  0
                 if (getClass() != obj.getClass()) {
     765  0
                     return false;
     766  
                 }
     767  0
                 final IdentifierMatch other = (IdentifierMatch) obj;
     768  0
                 if (this.evidenceConfidence != other.evidenceConfidence) {
     769  0
                     return false;
     770  
                 }
     771  0
                 if (this.confidence != other.confidence) {
     772  0
                     return false;
     773  
                 }
     774  0
                 if (this.identifier != other.identifier && (this.identifier == null || !this.identifier.equals(other.identifier))) {
     775  0
                     return false;
     776  
                 }
     777  0
                 return true;
     778  
             }
     779  
             //</editor-fold>
     780  
     
     781  
             /**
     782  
              * Standard implementation of compareTo that compares identifier
     783  
              * confidence, evidence confidence, and then the identifier.
     784  
              *
     785  
              * @param o the IdentifierMatch to compare to
     786  
              * @return the natural ordering of IdentifierMatch
     787  
              */
     788  
             @Override
     789  
             public int compareTo(IdentifierMatch o) {
     790  101
                 int conf = this.confidence.compareTo(o.confidence);
     791  101
                 if (conf == 0) {
     792  81
                     conf = this.evidenceConfidence.compareTo(o.evidenceConfidence);
     793  81
                     if (conf == 0) {
     794  39
                         conf = identifier.compareTo(o.identifier);
     795  
                     }
     796  
                 }
     797  101
                 return conf;
     798  
             }
     799  
         }
     800  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer.html index ad5622c1d..fdf1116c3 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer.html @@ -103,7 +103,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     43  
      */
    -  44  3
     public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Analyzer {
    +  44  1
     public class DependencyBundlingAnalyzer extends AbstractAnalyzer implements Analyzer {
     45  
     
     46   @@ -114,14 +114,14 @@
          * A pattern for obtaining the first part of a filename.
     49  
          */
    -  50  3
         private static final Pattern STARTING_TEXT_PATTERN = Pattern.compile("^[a-zA-Z]*");
    +  50  1
         private static final Pattern STARTING_TEXT_PATTERN = Pattern.compile("^[a-zA-Z]*");
     51  
         /**
     52  
          * a flag indicating if this analyzer has run. This analyzer only runs once.
     53  
          */
    -  54  3
         private boolean analyzed = false;
    +  54  1
         private boolean analyzed = false;
     55  
         //</editor-fold>
     56   @@ -132,7 +132,7 @@
          * The set of file extensions supported by this analyzer.
     59  
          */
    -  60  3
         private static final Set<String> EXTENSIONS = null;
    +  60  1
         private static final Set<String> EXTENSIONS = null;
     61  
         /**
     62   @@ -147,7 +147,7 @@
          * The phase that this analyzer is intended to run in.
     67  
          */
    -  68  3
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_FINDING_ANALYSIS;
    +  68  1
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_FINDING_ANALYSIS;
     69  
     
     70   @@ -162,7 +162,7 @@
          */
     75  
         public Set<String> getSupportedExtensions() {
    -  76  17289
             return EXTENSIONS;
    +  76  128
             return EXTENSIONS;
     77  
         }
     78   @@ -217,7 +217,7 @@
          */
     104  
         public AnalysisPhase getAnalysisPhase() {
    -  105  3
             return ANALYSIS_PHASE;
    +  105  2
             return ANALYSIS_PHASE;
     106  
         }
     107   @@ -570,6 +570,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer.html index 7c30974fe..c55cb8056 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    FalsePositiveAnalyzer
    56%
    53/93
    34%
    26/76
    5.2
    FalsePositiveAnalyzer
    62%
    58/93
    38%
    29/76
    5.2
     
    @@ -103,7 +103,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     43  
      */
    -  44  18
     public class FalsePositiveAnalyzer extends AbstractAnalyzer {
    +  44  7
     public class FalsePositiveAnalyzer extends AbstractAnalyzer {
     45  
     
     46   @@ -114,7 +114,7 @@
          * The set of file extensions supported by this analyzer.
     49  
          */
    -  50  3
         private static final Set<String> EXTENSIONS = null;
    +  50  1
         private static final Set<String> EXTENSIONS = null;
     51  
         /**
     52   @@ -129,7 +129,7 @@
          * The phase that this analyzer is intended to run in.
     57  
          */
    -  58  3
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.POST_IDENTIFIER_ANALYSIS;
    +  58  1
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.POST_IDENTIFIER_ANALYSIS;
     59  
     
     60   @@ -144,7 +144,7 @@
          */
     65  
         public Set<String> getSupportedExtensions() {
    -  66  17289
             return EXTENSIONS;
    +  66  128
             return EXTENSIONS;
     67  
         }
     68   @@ -199,7 +199,7 @@
          */
     94  
         public AnalysisPhase getAnalysisPhase() {
    -  95  3
             return ANALYSIS_PHASE;
    +  95  2
             return ANALYSIS_PHASE;
     96  
         }
     97   @@ -228,11 +228,11 @@
         @Override
     109  
         public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
    -  110  15
             removeJreEntries(dependency);
    -  111  15
             removeBadMatches(dependency);
    -  112  15
             removeSpuriousCPE(dependency);
    -  113  15
             addFalseNegativeCPEs(dependency);
    -  114  15
         }
    +  110  6
             removeJreEntries(dependency);
    +  111  6
             removeBadMatches(dependency);
    +  112  6
             removeSpuriousCPE(dependency);
    +  113  6
             addFalseNegativeCPEs(dependency);
    +  114  6
         }
     115  
     
     116   @@ -269,28 +269,28 @@
          */
     132  
         private void removeSpuriousCPE(Dependency dependency) {
    -  133  15
             final List<Identifier> ids = new ArrayList<Identifier>();
    -  134  15
             ids.addAll(dependency.getIdentifiers());
    -  135  15
             Collections.sort(ids);
    -  136  15
             final ListIterator<Identifier> mainItr = ids.listIterator();
    -  137  24
             while (mainItr.hasNext()) {
    -  138  9
                 final Identifier currentId = mainItr.next();
    -  139  9
                 final VulnerableSoftware currentCpe = parseCpe(currentId.getType(), currentId.getValue());
    -  140  9
                 if (currentCpe == null) {
    +  133  6
             final List<Identifier> ids = new ArrayList<Identifier>();
    +  134  6
             ids.addAll(dependency.getIdentifiers());
    +  135  6
             Collections.sort(ids);
    +  136  6
             final ListIterator<Identifier> mainItr = ids.listIterator();
    +  137  13
             while (mainItr.hasNext()) {
    +  138  7
                 final Identifier currentId = mainItr.next();
    +  139  7
                 final VulnerableSoftware currentCpe = parseCpe(currentId.getType(), currentId.getValue());
    +  140  7
                 if (currentCpe == null) {
     141  0
                     continue;
     142  
                 }
    -  143  9
                 final ListIterator<Identifier> subItr = ids.listIterator(mainItr.nextIndex());
    -  144  9
                 while (subItr.hasNext()) {
    -  145  0
                     final Identifier nextId = subItr.next();
    -  146  0
                     final VulnerableSoftware nextCpe = parseCpe(nextId.getType(), nextId.getValue());
    -  147  0
                     if (nextCpe == null) {
    +  143  7
                 final ListIterator<Identifier> subItr = ids.listIterator(mainItr.nextIndex());
    +  144  12
                 while (subItr.hasNext()) {
    +  145  5
                     final Identifier nextId = subItr.next();
    +  146  5
                     final VulnerableSoftware nextCpe = parseCpe(nextId.getType(), nextId.getValue());
    +  147  5
                     if (nextCpe == null) {
     148  0
                         continue;
     149  
                     }
     150  
                     //TODO fix the version problem below
    -  151  0
                     if (currentCpe.getVendor().equals(nextCpe.getVendor())) {
    +  151  5
                     if (currentCpe.getVendor().equals(nextCpe.getVendor())) {
     152  0
                         if (currentCpe.getProduct().equals(nextCpe.getProduct())) {
     153  
                             // see if one is contained in the other.. remove the contained one from dependency.getIdentifier
    @@ -320,9 +320,9 @@
                         }
     172  
                     }
    -  173  0
                 }
    -  174  9
             }
    -  175  15
         }
    +  173  5
                 }
    +  174  7
             }
    +  175  6
         }
     176  
         /**
     177   @@ -331,7 +331,7 @@
          * misidentified ones.
     179  
          */
    -  180  3
         public static final Pattern CORE_JAVA = Pattern.compile("^cpe:/a:(sun|oracle|ibm):(j2[ems]e|"
    +  180  1
         public static final Pattern CORE_JAVA = Pattern.compile("^cpe:/a:(sun|oracle|ibm):(j2[ems]e|"
     181  
                 + "java(_platfrom_micro_edition|_runtime_environment|_se|virtual_machine|se_development_kit|fx)?|"
     182   @@ -342,7 +342,7 @@
          * Regex to identify core java library files. This is currently incomplete.
     185  
          */
    -  186  3
         public static final Pattern CORE_FILES = Pattern.compile("^((alt[-])?rt|jsf[-].*|jsse|jfxrt|jfr|jce|javaws|deploy|charsets)\\.jar$");
    +  186  1
         public static final Pattern CORE_FILES = Pattern.compile("^((alt[-])?rt|jsf[-].*|jsse|jfxrt|jfr|jce|javaws|deploy|charsets)\\.jar$");
     187  
     
     188   @@ -359,13 +359,13 @@
          */
     194  
         private void removeJreEntries(Dependency dependency) {
    -  195  15
             final Set<Identifier> identifiers = dependency.getIdentifiers();
    -  196  15
             final Iterator<Identifier> itr = identifiers.iterator();
    -  197  24
             while (itr.hasNext()) {
    -  198  9
                 final Identifier i = itr.next();
    -  199  9
                 final Matcher coreCPE = CORE_JAVA.matcher(i.getValue());
    -  200  9
                 final Matcher coreFiles = CORE_FILES.matcher(dependency.getFileName());
    -  201  9
                 if (coreCPE.matches() && !coreFiles.matches()) {
    +  195  6
             final Set<Identifier> identifiers = dependency.getIdentifiers();
    +  196  6
             final Iterator<Identifier> itr = identifiers.iterator();
    +  197  13
             while (itr.hasNext()) {
    +  198  7
                 final Identifier i = itr.next();
    +  199  7
                 final Matcher coreCPE = CORE_JAVA.matcher(i.getValue());
    +  200  7
                 final Matcher coreFiles = CORE_FILES.matcher(dependency.getFileName());
    +  201  7
                 if (coreCPE.matches() && !coreFiles.matches()) {
     202  0
                     itr.remove();
     203  
                 }
    @@ -411,8 +411,8 @@
                 //                itr.remove();
     224  
                 //            }
    -  225  9
             }
    -  226  15
         }
    +  225  7
             }
    +  226  6
         }
     227  
     
     228   @@ -431,19 +431,19 @@
          */
     235  
         private VulnerableSoftware parseCpe(String type, String value) {
    -  236  9
             if (!"cpe".equals(type)) {
    +  236  12
             if (!"cpe".equals(type)) {
     237  0
                 return null;
     238  
             }
    -  239  9
             final VulnerableSoftware cpe = new VulnerableSoftware();
    +  239  12
             final VulnerableSoftware cpe = new VulnerableSoftware();
     240  
             try {
    -  241  9
                 cpe.parseName(value);
    +  241  12
                 cpe.parseName(value);
     242  0
             } catch (UnsupportedEncodingException ex) {
     243  0
                 Logger.getLogger(FalsePositiveAnalyzer.class.getName()).log(Level.FINEST, null, ex);
     244  0
                 return null;
    -  245  9
             }
    -  246  9
             return cpe;
    +  245  12
             }
    +  246  12
             return cpe;
     247  
         }
     248   @@ -464,8 +464,8 @@
          */
     256  
         private void removeBadMatches(Dependency dependency) {
    -  257  15
             final Set<Identifier> identifiers = dependency.getIdentifiers();
    -  258  15
             final Iterator<Identifier> itr = identifiers.iterator();
    +  257  6
             final Set<Identifier> identifiers = dependency.getIdentifiers();
    +  258  6
             final Iterator<Identifier> itr = identifiers.iterator();
     259  
     
     260   @@ -486,12 +486,12 @@
             //Set<Evidence> artifactId = dependency.getVendorEvidence().getEvidence("pom", "artifactid");
     268  
     
    -  269  24
             while (itr.hasNext()) {
    -  270  9
                 final Identifier i = itr.next();
    +  269  13
             while (itr.hasNext()) {
    +  270  7
                 final Identifier i = itr.next();
     271  
                 //TODO move this startswith expression to a configuration file?
    -  272  9
                 if ("cpe".equals(i.getType())) {
    -  273  9
                     if ((i.getValue().matches(".*c\\+\\+.*")
    +  272  7
                 if ("cpe".equals(i.getType())) {
    +  273  7
                     if ((i.getValue().matches(".*c\\+\\+.*")
     274  
                             || i.getValue().startsWith("cpe:/a:jquery:jquery")
     275   @@ -501,7 +501,7 @@  277  
                             && dependency.getFileName().toLowerCase().endsWith(".jar")) {
     278  0
                         itr.remove();
    -  279  9
                     } else if (i.getValue().startsWith("cpe:/a:file:file")
    +  279  7
                     } else if (i.getValue().startsWith("cpe:/a:file:file")
     280  
                             || i.getValue().startsWith("cpe:/a:mozilla:mozilla")
     281   @@ -511,8 +511,8 @@
                     }
     284  
                 }
    -  285  9
             }
    -  286  15
         }
    +  285  7
             }
    +  286  6
         }
     287  
     
     288   @@ -533,10 +533,10 @@
          */
     296  
         private void addFalseNegativeCPEs(Dependency dependency) {
    -  297  15
             final Iterator<Identifier> itr = dependency.getIdentifiers().iterator();
    -  298  24
             while (itr.hasNext()) {
    -  299  9
                 final Identifier i = itr.next();
    -  300  9
                 if ("cpe".equals(i.getType()) && i.getValue() != null
    +  297  6
             final Iterator<Identifier> itr = dependency.getIdentifiers().iterator();
    +  298  13
             while (itr.hasNext()) {
    +  299  7
                 final Identifier i = itr.next();
    +  300  7
                 if ("cpe".equals(i.getType()) && i.getValue() != null
     301  
                         && (i.getValue().startsWith("cpe:/a:oracle:opensso:")
     302   @@ -578,12 +578,12 @@  325  0
                     }
     326  
                 }
    -  327  9
             }
    -  328  15
         }
    +  327  7
             }
    +  328  6
         }
     329  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FileNameAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FileNameAnalyzer.html index 81bc7b703..e6e92a0d3 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FileNameAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.FileNameAnalyzer.html @@ -85,7 +85,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     34  
      */
    -  35  42
     public class FileNameAnalyzer extends AbstractAnalyzer implements Analyzer {
    +  35  15
     public class FileNameAnalyzer extends AbstractAnalyzer implements Analyzer {
     36  
     
     37   @@ -104,14 +104,14 @@
          * The phase that this analyzer is intended to run in.
     44  
          */
    -  45  3
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
    +  45  1
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
     46  
         /**
     47  
          * The set of file extensions supported by this analyzer.
     48  
          */
    -  49  3
         private static final Set<String> EXTENSIONS = null;
    +  49  1
         private static final Set<String> EXTENSIONS = null;
     50  
     
     51   @@ -126,7 +126,7 @@
          */
     56  
         public Set<String> getSupportedExtensions() {
    -  57  17292
             return EXTENSIONS;
    +  57  129
             return EXTENSIONS;
     58  
         }
     59   @@ -143,7 +143,7 @@
          */
     65  
         public String getName() {
    -  66  3
             return ANALYZER_NAME;
    +  66  1
             return ANALYZER_NAME;
     67  
         }
     68   @@ -164,7 +164,7 @@
          */
     76  
         public boolean supportsExtension(String extension) {
    -  77  3
             return true;
    +  77  1
             return true;
     78  
         }
     79   @@ -181,7 +181,7 @@
          */
     85  
         public AnalysisPhase getAnalysisPhase() {
    -  86  6
             return ANALYSIS_PHASE;
    +  86  3
             return ANALYSIS_PHASE;
     87  
         }
     88   @@ -212,27 +212,27 @@
     
     101  
             //strip any path information that may get added by ArchiveAnalyzer, etc.
    -  102  24
             final File f = new File(dependency.getFileName());
    -  103  24
             String fileName = f.getName();
    +  102  9
             final File f = new File(dependency.getFileName());
    +  103  9
             String fileName = f.getName();
     104  
     
     105  
             //remove file extension
    -  106  24
             final int pos = fileName.lastIndexOf(".");
    -  107  24
             if (pos > 0) {
    -  108  24
                 fileName = fileName.substring(0, pos);
    +  106  9
             final int pos = fileName.lastIndexOf(".");
    +  107  9
             if (pos > 0) {
    +  108  9
                 fileName = fileName.substring(0, pos);
     109  
             }
     110  
     
     111  
             //add version evidence
    -  112  24
             final DependencyVersion version = DependencyVersionUtil.parseVersion(fileName);
    -  113  24
             if (version != null) {
    -  114  21
                 dependency.getVersionEvidence().addEvidence("file", "name",
    +  112  9
             final DependencyVersion version = DependencyVersionUtil.parseVersion(fileName);
    +  113  9
             if (version != null) {
    +  114  8
                 dependency.getVersionEvidence().addEvidence("file", "name",
     115  
                         version.toString(), Evidence.Confidence.HIGHEST);
    -  116  21
                 dependency.getVersionEvidence().addEvidence("file", "name",
    +  116  8
                 dependency.getVersionEvidence().addEvidence("file", "name",
     117  
                         fileName, Evidence.Confidence.MEDIUM);
     118   @@ -241,28 +241,28 @@
     
     120  
             //add as vendor and product evidence
    -  121  24
             if (fileName.contains("-")) {
    -  122  21
                 dependency.getProductEvidence().addEvidence("file", "name",
    +  121  9
             if (fileName.contains("-")) {
    +  122  8
                 dependency.getProductEvidence().addEvidence("file", "name",
     123  
                         fileName, Evidence.Confidence.HIGHEST);
    -  124  21
                 dependency.getVendorEvidence().addEvidence("file", "name",
    +  124  8
                 dependency.getVendorEvidence().addEvidence("file", "name",
     125  
                         fileName, Evidence.Confidence.HIGHEST);
     126  
             } else {
    -  127  3
                 dependency.getProductEvidence().addEvidence("file", "name",
    +  127  1
                 dependency.getProductEvidence().addEvidence("file", "name",
     128  
                         fileName, Evidence.Confidence.HIGH);
    -  129  3
                 dependency.getVendorEvidence().addEvidence("file", "name",
    +  129  1
                 dependency.getVendorEvidence().addEvidence("file", "name",
     130  
                         fileName, Evidence.Confidence.HIGH);
     131  
             }
    -  132  24
         }
    +  132  9
         }
     133  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.HintAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.HintAnalyzer.html index b64563170..14a63e883 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.HintAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.HintAnalyzer.html @@ -79,7 +79,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     31  
      */
    -  32  18
     public class HintAnalyzer extends AbstractAnalyzer implements Analyzer {
    +  32  7
     public class HintAnalyzer extends AbstractAnalyzer implements Analyzer {
     33  
     
     34   @@ -98,14 +98,14 @@
          * The phase that this analyzer is intended to run in.
     41  
          */
    -  42  3
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_IDENTIFIER_ANALYSIS;
    +  42  1
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.PRE_IDENTIFIER_ANALYSIS;
     43  
         /**
     44  
          * The set of file extensions supported by this analyzer.
     45  
          */
    -  46  3
         private static final Set<String> EXTENSIONS = null;
    +  46  1
         private static final Set<String> EXTENSIONS = null;
     47  
     
     48   @@ -120,7 +120,7 @@
          */
     53  
         public Set<String> getSupportedExtensions() {
    -  54  17289
             return EXTENSIONS;
    +  54  128
             return EXTENSIONS;
     55  
         }
     56   @@ -175,7 +175,7 @@
          */
     82  
         public AnalysisPhase getAnalysisPhase() {
    -  83  3
             return ANALYSIS_PHASE;
    +  83  2
             return ANALYSIS_PHASE;
     84  
         }
     85   @@ -204,7 +204,7 @@
         @Override
     97  
         public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
    -  98  15
             final Evidence springTest1 = new Evidence("Manifest",
    +  98  6
             final Evidence springTest1 = new Evidence("Manifest",
     99  
                     "Implementation-Title",
     100   @@ -213,7 +213,7 @@
                     Evidence.Confidence.HIGH);
     102  
     
    -  103  15
             final Evidence springTest2 = new Evidence("Manifest",
    +  103  6
             final Evidence springTest2 = new Evidence("Manifest",
     104  
                     "Implementation-Title",
     105   @@ -222,7 +222,7 @@
                     Evidence.Confidence.HIGH);
     107  
     
    -  108  15
             final Evidence springTest3 = new Evidence("Manifest",
    +  108  6
             final Evidence springTest3 = new Evidence("Manifest",
     109  
                     "Bundle-Vendor",
     110   @@ -233,47 +233,47 @@
     
     113  
     
    -  114  15
             Set<Evidence> evidence = dependency.getProductEvidence().getEvidence();
    -  115  15
             if (evidence.contains(springTest1) || evidence.contains(springTest2)) {
    -  116  6
                 dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Evidence.Confidence.HIGH);
    -  117  6
                 dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "SpringSource", Evidence.Confidence.HIGH);
    -  118  6
                 dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Evidence.Confidence.HIGH);
    +  114  6
             Set<Evidence> evidence = dependency.getProductEvidence().getEvidence();
    +  115  6
             if (evidence.contains(springTest1) || evidence.contains(springTest2)) {
    +  116  2
                 dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Evidence.Confidence.HIGH);
    +  117  2
                 dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "SpringSource", Evidence.Confidence.HIGH);
    +  118  2
                 dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Evidence.Confidence.HIGH);
     119  
             }
     120  
     
    -  121  15
             evidence = dependency.getVendorEvidence().getEvidence();
    -  122  15
             if (evidence.contains(springTest3)) {
    -  123  6
                 dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Evidence.Confidence.HIGH);
    -  124  6
                 dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Evidence.Confidence.HIGH);
    +  121  6
             evidence = dependency.getVendorEvidence().getEvidence();
    +  122  6
             if (evidence.contains(springTest3)) {
    +  123  2
                 dependency.getProductEvidence().addEvidence("hint analyzer", "product", "springsource_spring_framework", Evidence.Confidence.HIGH);
    +  124  2
                 dependency.getVendorEvidence().addEvidence("hint analyzer", "vendor", "vmware", Evidence.Confidence.HIGH);
     125  
             }
    -  126  15
             final Iterator<Evidence> itr = dependency.getVendorEvidence().iterator();
    -  127  15
             final ArrayList<Evidence> newEntries = new ArrayList<Evidence>();
    -  128  162
             while (itr.hasNext()) {
    -  129  147
                 final Evidence e = itr.next();
    -  130  147
                 if ("sun".equalsIgnoreCase(e.getValue(false))) {
    -  131  6
                     final Evidence newEvidence = new Evidence(e.getSource() + " (hint)", e.getName(), "oracle", e.getConfidence());
    -  132  6
                     newEntries.add(newEvidence);
    -  133  6
                 } else if ("oracle".equalsIgnoreCase(e.getValue(false))) {
    +  126  6
             final Iterator<Evidence> itr = dependency.getVendorEvidence().iterator();
    +  127  6
             final ArrayList<Evidence> newEntries = new ArrayList<Evidence>();
    +  128  65
             while (itr.hasNext()) {
    +  129  59
                 final Evidence e = itr.next();
    +  130  59
                 if ("sun".equalsIgnoreCase(e.getValue(false))) {
    +  131  2
                     final Evidence newEvidence = new Evidence(e.getSource() + " (hint)", e.getName(), "oracle", e.getConfidence());
    +  132  2
                     newEntries.add(newEvidence);
    +  133  2
                 } else if ("oracle".equalsIgnoreCase(e.getValue(false))) {
     134  0
                     final Evidence newEvidence = new Evidence(e.getSource() + " (hint)", e.getName(), "sun", e.getConfidence());
     135  0
                     newEntries.add(newEvidence);
     136  
                 }
    -  137  147
             }
    -  138  15
             for (Evidence e : newEntries) {
    -  139  6
                 dependency.getVendorEvidence().addEvidence(e);
    +  137  59
             }
    +  138  6
             for (Evidence e : newEntries) {
    +  139  2
                 dependency.getVendorEvidence().addEvidence(e);
     140  
             }
     141  
     
     142  
     
    -  143  15
         }
    +  143  6
         }
     144  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JarAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JarAnalyzer.html index 9f51af159..beffa3d0f 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JarAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JarAnalyzer.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    JarAnalyzer
    80%
    320/399
    65%
    163/248
    6.103
    JarAnalyzer
    80%
    320/399
    66%
    164/248
    6.103
    JarAnalyzer$ClassNameInformation
    80%
    17/21
    90%
    9/10
    6.103
    @@ -172,7 +172,7 @@
          * The system independent newline character.
     77  
          */
    -  78  3
         private static final String NEWLINE = System.getProperty("line.separator");
    +  78  1
         private static final String NEWLINE = System.getProperty("line.separator");
     79  
         /**
     80   @@ -181,7 +181,7 @@
          * positives.
     82  
          */
    -  83  3
         private static final Set<String> IGNORE_VALUES = newHashSet(
    +  83  1
         private static final Set<String> IGNORE_VALUES = newHashSet(
     84  
                 "Sun Java System Application Server");
     85   @@ -190,7 +190,7 @@
          * A list of elements in the manifest to ignore.
     87  
          */
    -  88  3
         private static final Set<String> IGNORE_KEYS = newHashSet(
    +  88  1
         private static final Set<String> IGNORE_KEYS = newHashSet(
     89  
                 "built-by",
     90   @@ -275,7 +275,7 @@
          * A pattern to detect HTML within text.
     130  
          */
    -  131  3
         private static final Pattern HTML_DETECTION_PATTERN = Pattern.compile("\\<[a-z]+.*/?\\>", Pattern.CASE_INSENSITIVE);
    +  131  1
         private static final Pattern HTML_DETECTION_PATTERN = Pattern.compile("\\<[a-z]+.*/?\\>", Pattern.CASE_INSENSITIVE);
     132  
         /**
     133   @@ -294,16 +294,16 @@
          * Constructs a new JarAnalyzer.
     140  
          */
    -  141  36
         public JarAnalyzer() {
    +  141  13
         public JarAnalyzer() {
     142  
             try {
    -  143  36
                 final JAXBContext jaxbContext = JAXBContext.newInstance("org.owasp.dependencycheck.jaxb.pom.generated");
    -  144  36
                 pomUnmarshaller = jaxbContext.createUnmarshaller();
    +  143  13
                 final JAXBContext jaxbContext = JAXBContext.newInstance("org.owasp.dependencycheck.jaxb.pom.generated");
    +  144  13
                 pomUnmarshaller = jaxbContext.createUnmarshaller();
     145  0
             } catch (JAXBException ex) { //guess we will just have a null pointer exception later...
     146  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.SEVERE, "Unable to load parser. See the log for more details.");
     147  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINE, null, ex);
    -  148  36
             }
    -  149  36
         }
    +  148  13
             }
    +  149  13
         }
     150  
         //<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer">
     151   @@ -320,14 +320,14 @@
          * The phase that this analyzer is intended to run in.
     157  
          */
    -  158  3
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
    +  158  1
         private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INFORMATION_COLLECTION;
     159  
         /**
     160  
          * The set of file extensions supported by this analyzer.
     161  
          */
    -  162  3
         private static final Set<String> EXTENSIONS = newHashSet("jar");
    +  162  1
         private static final Set<String> EXTENSIONS = newHashSet("jar", "war");
     163  
     
     164   @@ -342,7 +342,7 @@
          */
     169  
         public Set<String> getSupportedExtensions() {
    -  170  17472
             return EXTENSIONS;
    +  170  135
             return EXTENSIONS;
     171  
         }
     172   @@ -359,7 +359,7 @@
          */
     178  
         public String getName() {
    -  179  3
             return ANALYZER_NAME;
    +  179  1
             return ANALYZER_NAME;
     180  
         }
     181   @@ -380,7 +380,7 @@
          */
     189  
         public boolean supportsExtension(String extension) {
    -  190  17463
             return EXTENSIONS.contains(extension);
    +  190  130
             return EXTENSIONS.contains(extension);
     191  
         }
     192   @@ -397,7 +397,7 @@
          */
     198  
         public AnalysisPhase getAnalysisPhase() {
    -  199  3
             return ANALYSIS_PHASE;
    +  199  2
             return ANALYSIS_PHASE;
     200  
         }
     201   @@ -428,9 +428,9 @@
         public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
     214  
             try {
    -  215  36
                 final ArrayList<ClassNameInformation> classNames = collectClassNames(dependency);
    -  216  36
                 final String fileName = dependency.getFileName().toLowerCase();
    -  217  36
                 if (classNames.isEmpty()
    +  215  13
                 final ArrayList<ClassNameInformation> classNames = collectClassNames(dependency);
    +  216  13
                 final String fileName = dependency.getFileName().toLowerCase();
    +  217  13
                 if (classNames.isEmpty()
     218  
                         && (fileName.endsWith("-sources.jar")
     219   @@ -442,14 +442,14 @@  222  0
                     engine.getDependencies().remove(dependency);
     223  
                 }
    -  224  36
                 final boolean hasManifest = parseManifest(dependency, classNames);
    -  225  36
                 final boolean hasPOM = analyzePOM(dependency, classNames);
    -  226  36
                 final boolean addPackagesAsEvidence = !(hasManifest && hasPOM);
    -  227  36
                 analyzePackageNames(classNames, dependency, addPackagesAsEvidence);
    +  224  13
                 final boolean hasManifest = parseManifest(dependency, classNames);
    +  225  13
                 final boolean hasPOM = analyzePOM(dependency, classNames);
    +  226  13
                 final boolean addPackagesAsEvidence = !(hasManifest && hasPOM);
    +  227  13
                 analyzePackageNames(classNames, dependency, addPackagesAsEvidence);
     228  0
             } catch (IOException ex) {
     229  0
                 throw new AnalysisException("Exception occurred reading the JAR file.", ex);
    -  230  36
             }
    -  231  36
         }
    +  230  13
             }
    +  231  13
         }
     232  
     
     233   @@ -476,12 +476,12 @@
          */
     244  
         protected boolean analyzePOM(Dependency dependency, ArrayList<ClassNameInformation> classes) throws AnalysisException {
    -  245  36
             boolean foundSomething = false;
    +  245  13
             boolean foundSomething = false;
     246  
             final JarFile jar;
     247  
             try {
    -  248  36
                 jar = new JarFile(dependency.getActualFilePath());
    +  248  13
                 jar = new JarFile(dependency.getActualFilePath());
     249  0
             } catch (IOException ex) {
     250  0
                 final String msg = String.format("Unable to read JarFile '%s'.", dependency.getActualFilePath());
     251  0
                 final AnalysisException ax = new AnalysisException(msg, ex);
    @@ -489,12 +489,12 @@  253  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.WARNING, msg);
     254  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINE, null, ex);
     255  0
                 return false;
    -  256  36
             }
    +  256  13
             }
     257  
             List<String> pomEntries;
     258  
             try {
    -  259  36
                 pomEntries = retrievePomListing(jar);
    +  259  13
                 pomEntries = retrievePomListing(jar);
     260  0
             } catch (IOException ex) {
     261  0
                 final String msg = String.format("Unable to read Jar file entries in '%s'.", dependency.getActualFilePath());
     262  0
                 final AnalysisException ax = new AnalysisException(msg, ex);
    @@ -502,27 +502,27 @@  264  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.WARNING, msg);
     265  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.INFO, msg, ex);
     266  0
                 return false;
    -  267  36
             }
    -  268  36
             if (pomEntries.isEmpty()) {
    -  269  24
                 return false;
    +  267  13
             }
    +  268  13
             if (pomEntries.isEmpty()) {
    +  269  8
                 return false;
     270  
             }
    -  271  12
             if (pomEntries.size() > 1) { //need to sort out which pom we will use
    +  271  5
             if (pomEntries.size() > 1) { //need to sort out which pom we will use
     272  0
                 pomEntries = filterPomEntries(pomEntries, classes);
     273  
             }
    -  274  12
             for (String path : pomEntries) {
    -  275  12
                 Properties pomProperties = null;
    +  274  5
             for (String path : pomEntries) {
    +  275  5
                 Properties pomProperties = null;
     276  
                 try {
    -  277  12
                     pomProperties = retrievePomProperties(path, jar);
    +  277  5
                     pomProperties = retrievePomProperties(path, jar);
     278  0
                 } catch (IOException ex) {
     279  0
                     Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINEST, "ignore this, failed reading a non-existent pom.properties", ex);
    -  280  12
                 }
    -  281  12
                 Model pom = null;
    +  280  5
                 }
    +  281  5
                 Model pom = null;
     282  
                 try {
    -  283  12
                     pom = retrievePom(path, jar);
    +  283  5
                     pom = retrievePom(path, jar);
     284  0
                 } catch (JAXBException ex) {
     285  0
                     final String msg = String.format("Unable to parse POM '%s' in '%s'",
     286   @@ -535,10 +535,10 @@  292  
                             path, dependency.getFilePath());
     293  0
                     Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINE, msg, ex);
    -  294  12
                 }
    -  295  12
                 foundSomething = setPomEvidence(dependency, pom, pomProperties, classes) || foundSomething;
    -  296  12
             }
    -  297  12
             return foundSomething;
    +  294  5
                 }
    +  295  5
                 foundSomething = setPomEvidence(dependency, pom, pomProperties, classes) || foundSomething;
    +  296  5
             }
    +  297  5
             return foundSomething;
     298  
         }
     299   @@ -569,16 +569,16 @@
                 justification = "The reader is closed by closing the zipEntry")
     312  
         private Properties retrievePomProperties(String path, final JarFile jar) throws IOException {
    -  313  12
             Properties pomProperties = null;
    -  314  12
             final String propPath = path.substring(0, path.length() - 7) + "pom.properies";
    -  315  12
             final ZipEntry propEntry = jar.getEntry(propPath);
    -  316  12
             if (propEntry != null) {
    +  313  5
             Properties pomProperties = null;
    +  314  5
             final String propPath = path.substring(0, path.length() - 7) + "pom.properies";
    +  315  5
             final ZipEntry propEntry = jar.getEntry(propPath);
    +  316  5
             if (propEntry != null) {
     317  0
                 final Reader reader = new InputStreamReader(jar.getInputStream(propEntry), "UTF-8");
     318  0
                 pomProperties = new Properties();
     319  0
                 pomProperties.load(reader);
     320  
             }
    -  321  12
             return pomProperties;
    +  321  5
             return pomProperties;
     322  
         }
     323   @@ -601,17 +601,17 @@
          */
     332  
         private List<String> retrievePomListing(final JarFile jar) throws IOException {
    -  333  36
             final List<String> pomEntries = new ArrayList<String>();
    -  334  36
             final Enumeration<JarEntry> entries = jar.entries();
    -  335  12552
             while (entries.hasMoreElements()) {
    -  336  12516
                 final JarEntry entry = entries.nextElement();
    -  337  12516
                 final String entryName = (new File(entry.getName())).getName().toLowerCase();
    -  338  12516
                 if (!entry.isDirectory() && "pom.xml".equals(entryName)) {
    -  339  12
                     pomEntries.add(entry.getName());
    +  333  13
             final List<String> pomEntries = new ArrayList<String>();
    +  334  13
             final Enumeration<JarEntry> entries = jar.entries();
    +  335  5523
             while (entries.hasMoreElements()) {
    +  336  5510
                 final JarEntry entry = entries.nextElement();
    +  337  5510
                 final String entryName = (new File(entry.getName())).getName().toLowerCase();
    +  338  5510
                 if (!entry.isDirectory() && "pom.xml".equals(entryName)) {
    +  339  5
                     pomEntries.add(entry.getName());
     340  
                 }
    -  341  12516
             }
    -  342  36
             return pomEntries;
    +  341  5510
             }
    +  342  13
             return pomEntries;
     343  
         }
     344   @@ -638,30 +638,30 @@
          */
     355  
         private Model retrievePom(String path, JarFile jar) throws JAXBException, IOException {
    -  356  12
             final ZipEntry entry = jar.getEntry(path);
    -  357  12
             if (entry != null) { //should never be null
    -  358  12
                 Model m = null;
    +  356  5
             final ZipEntry entry = jar.getEntry(path);
    +  357  5
             if (entry != null) { //should never be null
    +  358  5
                 Model m = null;
     359  
                 try {
    -  360  12
                     final XMLFilter filter = new MavenNamespaceFilter();
    -  361  12
                     final SAXParserFactory spf = SAXParserFactory.newInstance();
    -  362  12
                     final SAXParser sp = spf.newSAXParser();
    -  363  12
                     final XMLReader xr = sp.getXMLReader();
    -  364  12
                     filter.setParent(xr);
    -  365  12
                     final NonClosingStream stream = new NonClosingStream(jar.getInputStream(entry));
    -  366  12
                     final InputStreamReader reader = new InputStreamReader(stream, "UTF-8");
    -  367  12
                     final InputSource xml = new InputSource(reader);
    -  368  12
                     final SAXSource source = new SAXSource(filter, xml);
    -  369  12
                     final JAXBElement<Model> el = pomUnmarshaller.unmarshal(source, Model.class);
    -  370  12
                     m = el.getValue();
    +  360  5
                     final XMLFilter filter = new MavenNamespaceFilter();
    +  361  5
                     final SAXParserFactory spf = SAXParserFactory.newInstance();
    +  362  5
                     final SAXParser sp = spf.newSAXParser();
    +  363  5
                     final XMLReader xr = sp.getXMLReader();
    +  364  5
                     filter.setParent(xr);
    +  365  5
                     final NonClosingStream stream = new NonClosingStream(jar.getInputStream(entry));
    +  366  5
                     final InputStreamReader reader = new InputStreamReader(stream, "UTF-8");
    +  367  5
                     final InputSource xml = new InputSource(reader);
    +  368  5
                     final SAXSource source = new SAXSource(filter, xml);
    +  369  5
                     final JAXBElement<Model> el = pomUnmarshaller.unmarshal(source, Model.class);
    +  370  5
                     m = el.getValue();
     371  0
                 } catch (ParserConfigurationException ex) {
     372  0
                     final String msg = String.format("Unable to parse pom '%s' in jar '%s'", path, jar.getName());
     373  0
                     Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINE, msg, ex);
     374  0
                 } catch (SAXException ex) {
     375  0
                     final String msg = String.format("Unable to parse pom '%s' in jar '%s'", path, jar.getName());
     376  0
                     Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINE, msg, ex);
    -  377  12
                 }
    -  378  12
                 return m;
    +  377  5
                 }
    +  378  5
                 return m;
     379  
             }
     380  0
             return null;
    @@ -693,49 +693,49 @@
          */
     394  
         private boolean setPomEvidence(Dependency dependency, Model pom, Properties pomProperties, ArrayList<ClassNameInformation> classes) {
    -  395  12
             boolean foundSomething = false;
    -  396  12
             if (pom == null) {
    +  395  5
             boolean foundSomething = false;
    +  396  5
             if (pom == null) {
     397  0
                 return foundSomething;
     398  
             }
    -  399  12
             String groupid = interpolateString(pom.getGroupId(), pomProperties);
    -  400  12
             if (groupid != null && !groupid.isEmpty()) {
    -  401  9
                 if (groupid.startsWith("org.") || groupid.startsWith("com.")) {
    -  402  6
                     groupid = groupid.substring(4);
    +  399  5
             String groupid = interpolateString(pom.getGroupId(), pomProperties);
    +  400  5
             if (groupid != null && !groupid.isEmpty()) {
    +  401  3
                 if (groupid.startsWith("org.") || groupid.startsWith("com.")) {
    +  402  2
                     groupid = groupid.substring(4);
     403  
                 }
    -  404  9
                 foundSomething = true;
    -  405  9
                 dependency.getVendorEvidence().addEvidence("pom", "groupid", groupid, Evidence.Confidence.HIGH);
    -  406  9
                 dependency.getProductEvidence().addEvidence("pom", "groupid", groupid, Evidence.Confidence.LOW);
    -  407  9
                 addMatchingValues(classes, groupid, dependency.getVendorEvidence());
    -  408  9
                 addMatchingValues(classes, groupid, dependency.getProductEvidence());
    +  404  3
                 foundSomething = true;
    +  405  3
                 dependency.getVendorEvidence().addEvidence("pom", "groupid", groupid, Evidence.Confidence.HIGH);
    +  406  3
                 dependency.getProductEvidence().addEvidence("pom", "groupid", groupid, Evidence.Confidence.LOW);
    +  407  3
                 addMatchingValues(classes, groupid, dependency.getVendorEvidence());
    +  408  3
                 addMatchingValues(classes, groupid, dependency.getProductEvidence());
     409  
             }
    -  410  12
             String artifactid = interpolateString(pom.getArtifactId(), pomProperties);
    -  411  12
             if (artifactid != null && !artifactid.isEmpty()) {
    -  412  12
                 if (artifactid.startsWith("org.") || artifactid.startsWith("com.")) {
    +  410  5
             String artifactid = interpolateString(pom.getArtifactId(), pomProperties);
    +  411  5
             if (artifactid != null && !artifactid.isEmpty()) {
    +  412  5
                 if (artifactid.startsWith("org.") || artifactid.startsWith("com.")) {
     413  0
                     artifactid = artifactid.substring(4);
     414  
                 }
    -  415  12
                 foundSomething = true;
    -  416  12
                 dependency.getProductEvidence().addEvidence("pom", "artifactid", artifactid, Evidence.Confidence.HIGH);
    -  417  12
                 dependency.getVendorEvidence().addEvidence("pom", "artifactid", artifactid, Evidence.Confidence.LOW);
    -  418  12
                 addMatchingValues(classes, artifactid, dependency.getVendorEvidence());
    -  419  12
                 addMatchingValues(classes, artifactid, dependency.getProductEvidence());
    +  415  5
                 foundSomething = true;
    +  416  5
                 dependency.getProductEvidence().addEvidence("pom", "artifactid", artifactid, Evidence.Confidence.HIGH);
    +  417  5
                 dependency.getVendorEvidence().addEvidence("pom", "artifactid", artifactid, Evidence.Confidence.LOW);
    +  418  5
                 addMatchingValues(classes, artifactid, dependency.getVendorEvidence());
    +  419  5
                 addMatchingValues(classes, artifactid, dependency.getProductEvidence());
     420  
             }
     421  
             //version
    -  422  12
             final String version = interpolateString(pom.getVersion(), pomProperties);
    -  423  12
             if (version != null && !version.isEmpty()) {
    -  424  6
                 foundSomething = true;
    -  425  6
                 dependency.getVersionEvidence().addEvidence("pom", "version", version, Evidence.Confidence.HIGHEST);
    +  422  5
             final String version = interpolateString(pom.getVersion(), pomProperties);
    +  423  5
             if (version != null && !version.isEmpty()) {
    +  424  2
                 foundSomething = true;
    +  425  2
                 dependency.getVersionEvidence().addEvidence("pom", "version", version, Evidence.Confidence.HIGHEST);
     426  
             }
     427  
             // org name
    -  428  12
             final Organization org = pom.getOrganization();
    -  429  12
             if (org != null && org.getName() != null) {
    +  428  5
             final Organization org = pom.getOrganization();
    +  429  5
             if (org != null && org.getName() != null) {
     430  0
                 foundSomething = true;
     431  0
                 final String orgName = interpolateString(org.getName(), pomProperties);
     432  0
                 if (orgName != null && !orgName.isEmpty()) {
    @@ -747,26 +747,26 @@
             }
     437  
             //pom name
    -  438  12
             final String pomName = interpolateString(pom.getName(), pomProperties);
    -  439  12
             if (pomName != null && !pomName.isEmpty()) {
    -  440  12
                 foundSomething = true;
    -  441  12
                 dependency.getProductEvidence().addEvidence("pom", "name", pomName, Evidence.Confidence.HIGH);
    -  442  12
                 dependency.getVendorEvidence().addEvidence("pom", "name", pomName, Evidence.Confidence.HIGH);
    -  443  12
                 addMatchingValues(classes, pomName, dependency.getVendorEvidence());
    -  444  12
                 addMatchingValues(classes, pomName, dependency.getProductEvidence());
    +  438  5
             final String pomName = interpolateString(pom.getName(), pomProperties);
    +  439  5
             if (pomName != null && !pomName.isEmpty()) {
    +  440  5
                 foundSomething = true;
    +  441  5
                 dependency.getProductEvidence().addEvidence("pom", "name", pomName, Evidence.Confidence.HIGH);
    +  442  5
                 dependency.getVendorEvidence().addEvidence("pom", "name", pomName, Evidence.Confidence.HIGH);
    +  443  5
                 addMatchingValues(classes, pomName, dependency.getVendorEvidence());
    +  444  5
                 addMatchingValues(classes, pomName, dependency.getProductEvidence());
     445  
             }
     446  
     
     447  
             //Description
    -  448  12
             if (pom.getDescription() != null) {
    -  449  6
                 foundSomething = true;
    -  450  6
                 final String description = interpolateString(pom.getDescription(), pomProperties);
    -  451  6
                 if (description != null && !description.isEmpty()) {
    -  452  6
                     addDescription(dependency, description, "pom", "description");
    -  453  6
                     addMatchingValues(classes, description, dependency.getVendorEvidence());
    -  454  6
                     addMatchingValues(classes, description, dependency.getProductEvidence());
    +  448  5
             if (pom.getDescription() != null) {
    +  449  2
                 foundSomething = true;
    +  450  2
                 final String description = interpolateString(pom.getDescription(), pomProperties);
    +  451  2
                 if (description != null && !description.isEmpty()) {
    +  452  2
                     addDescription(dependency, description, "pom", "description");
    +  453  2
                     addMatchingValues(classes, description, dependency.getVendorEvidence());
    +  454  2
                     addMatchingValues(classes, description, dependency.getProductEvidence());
     455  
                 }
     456   @@ -775,47 +775,47 @@
     
     458  
             //license
    -  459  12
             if (pom.getLicenses() != null) {
    -  460  3
                 String license = null;
    -  461  3
                 for (License lic : pom.getLicenses().getLicense()) {
    -  462  3
                     String tmp = null;
    -  463  3
                     if (lic.getName() != null) {
    -  464  3
                         tmp = interpolateString(lic.getName(), pomProperties);
    +  459  5
             if (pom.getLicenses() != null) {
    +  460  1
                 String license = null;
    +  461  1
                 for (License lic : pom.getLicenses().getLicense()) {
    +  462  1
                     String tmp = null;
    +  463  1
                     if (lic.getName() != null) {
    +  464  1
                         tmp = interpolateString(lic.getName(), pomProperties);
     465  
                     }
    -  466  3
                     if (lic.getUrl() != null) {
    -  467  3
                         if (tmp == null) {
    +  466  1
                     if (lic.getUrl() != null) {
    +  467  1
                         if (tmp == null) {
     468  0
                             tmp = interpolateString(lic.getUrl(), pomProperties);
     469  
                         } else {
    -  470  3
                             tmp += ": " + interpolateString(lic.getUrl(), pomProperties);
    +  470  1
                             tmp += ": " + interpolateString(lic.getUrl(), pomProperties);
     471  
                         }
     472  
                     }
    -  473  3
                     if (tmp == null) {
    +  473  1
                     if (tmp == null) {
     474  0
                         continue;
     475  
                     }
    -  476  3
                     if (HTML_DETECTION_PATTERN.matcher(tmp).find()) {
    +  476  1
                     if (HTML_DETECTION_PATTERN.matcher(tmp).find()) {
     477  0
                         tmp = Jsoup.parse(tmp).text();
     478  
                     }
    -  479  3
                     if (license == null) {
    -  480  3
                         license = tmp;
    +  479  1
                     if (license == null) {
    +  480  1
                         license = tmp;
     481  
                     } else {
     482  0
                         license += "\n" + tmp;
     483  
                     }
    -  484  3
                 }
    -  485  3
                 if (license != null) {
    -  486  3
                     dependency.setLicense(license);
    +  484  1
                 }
    +  485  1
                 if (license != null) {
    +  486  1
                     dependency.setLicense(license);
     487  
                 }
     488  
             }
    -  489  12
             return foundSomething;
    +  489  5
             return foundSomething;
     490  
         }
     491   @@ -846,41 +846,41 @@
         protected void analyzePackageNames(ArrayList<ClassNameInformation> classNames,
     504  
                 Dependency dependency, boolean addPackagesAsEvidence) {
    -  505  36
             final HashMap<String, Integer> vendorIdentifiers = new HashMap<String, Integer>();
    -  506  36
             final HashMap<String, Integer> productIdentifiers = new HashMap<String, Integer>();
    -  507  36
             analyzeFullyQualifiedClassNames(classNames, vendorIdentifiers, productIdentifiers);
    +  505  13
             final HashMap<String, Integer> vendorIdentifiers = new HashMap<String, Integer>();
    +  506  13
             final HashMap<String, Integer> productIdentifiers = new HashMap<String, Integer>();
    +  507  13
             analyzeFullyQualifiedClassNames(classNames, vendorIdentifiers, productIdentifiers);
     508  
     
    -  509  36
             final int classCount = classNames.size();
    -  510  36
             final EvidenceCollection vendor = dependency.getVendorEvidence();
    -  511  36
             final EvidenceCollection product = dependency.getProductEvidence();
    +  509  13
             final int classCount = classNames.size();
    +  510  13
             final EvidenceCollection vendor = dependency.getVendorEvidence();
    +  511  13
             final EvidenceCollection product = dependency.getProductEvidence();
     512  
     
    -  513  36
             for (Map.Entry<String, Integer> entry : vendorIdentifiers.entrySet()) {
    -  514  333
                 final float ratio = entry.getValue() / (float) classCount;
    -  515  333
                 if (ratio > 0.5) {
    +  513  13
             for (Map.Entry<String, Integer> entry : vendorIdentifiers.entrySet()) {
    +  514  134
                 final float ratio = entry.getValue() / (float) classCount;
    +  515  134
                 if (ratio > 0.5) {
     516  
                     //TODO remove weighting
    -  517  72
                     vendor.addWeighting(entry.getKey());
    -  518  72
                     if (addPackagesAsEvidence) {
    -  519  51
                         vendor.addEvidence("jar", "package", entry.getKey(), Evidence.Confidence.LOW);
    +  517  26
                     vendor.addWeighting(entry.getKey());
    +  518  26
                     if (addPackagesAsEvidence) {
    +  519  17
                         vendor.addEvidence("jar", "package", entry.getKey(), Evidence.Confidence.LOW);
     520  
                     }
     521  
                 }
    -  522  333
             }
    -  523  36
             for (Map.Entry<String, Integer> entry : productIdentifiers.entrySet()) {
    -  524  5133
                 final float ratio = entry.getValue() / (float) classCount;
    -  525  5133
                 if (ratio > 0.5) {
    -  526  42
                     product.addWeighting(entry.getKey());
    -  527  42
                     if (addPackagesAsEvidence) {
    -  528  27
                         product.addEvidence("jar", "package", entry.getKey(), Evidence.Confidence.LOW);
    +  522  134
             }
    +  523  13
             for (Map.Entry<String, Integer> entry : productIdentifiers.entrySet()) {
    +  524  2990
                 final float ratio = entry.getValue() / (float) classCount;
    +  525  2990
                 if (ratio > 0.5) {
    +  526  15
                     product.addWeighting(entry.getKey());
    +  527  15
                     if (addPackagesAsEvidence) {
    +  528  9
                         product.addEvidence("jar", "package", entry.getKey(), Evidence.Confidence.LOW);
     529  
                     }
     530  
                 }
    -  531  5133
             }
    -  532  36
         }
    +  531  2990
             }
    +  532  13
         }
     533  
     
     534   @@ -913,15 +913,15 @@
          */
     548  
         protected boolean parseManifest(Dependency dependency, ArrayList<ClassNameInformation> classInformation) throws IOException {
    -  549  36
             boolean foundSomething = false;
    -  550  36
             JarFile jar = null;
    +  549  13
             boolean foundSomething = false;
    +  550  13
             JarFile jar = null;
     551  
             try {
    -  552  36
                 jar = new JarFile(dependency.getActualFilePath());
    +  552  13
                 jar = new JarFile(dependency.getActualFilePath());
     553  
     
    -  554  36
                 final Manifest manifest = jar.getManifest();
    -  555  36
                 if (manifest == null) {
    +  554  13
                 final Manifest manifest = jar.getManifest();
    +  555  13
                 if (manifest == null) {
     556  
                     //don't log this for javadoc or sources jar files
     557  0
                     if (!dependency.getFileName().toLowerCase().endsWith("-sources.jar")
    @@ -941,60 +941,60 @@  565  0
                     return false;
     566  
                 }
    -  567  36
                 final Attributes atts = manifest.getMainAttributes();
    +  567  13
                 final Attributes atts = manifest.getMainAttributes();
     568  
     
    -  569  36
                 final EvidenceCollection vendorEvidence = dependency.getVendorEvidence();
    -  570  36
                 final EvidenceCollection productEvidence = dependency.getProductEvidence();
    -  571  36
                 final EvidenceCollection versionEvidence = dependency.getVersionEvidence();
    +  569  13
                 final EvidenceCollection vendorEvidence = dependency.getVendorEvidence();
    +  570  13
                 final EvidenceCollection productEvidence = dependency.getProductEvidence();
    +  571  13
                 final EvidenceCollection versionEvidence = dependency.getVersionEvidence();
     572  
     
    -  573  36
                 final String source = "Manifest";
    +  573  13
                 final String source = "Manifest";
     574  
     
    -  575  36
                 for (Entry<Object, Object> entry : atts.entrySet()) {
    -  576  504
                     String key = entry.getKey().toString();
    -  577  504
                     String value = atts.getValue(key);
    -  578  504
                     if (HTML_DETECTION_PATTERN.matcher(value).find()) {
    +  575  13
                 for (Entry<Object, Object> entry : atts.entrySet()) {
    +  576  194
                     String key = entry.getKey().toString();
    +  577  194
                     String value = atts.getValue(key);
    +  578  194
                     if (HTML_DETECTION_PATTERN.matcher(value).find()) {
     579  0
                         value = Jsoup.parse(value).text();
     580  
                     }
    -  581  504
                     if (IGNORE_VALUES.contains(value)) {
    +  581  194
                     if (IGNORE_VALUES.contains(value)) {
     582  0
                         continue;
    -  583  504
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_TITLE.toString())) {
    -  584  18
                         foundSomething = true;
    -  585  18
                         productEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    -  586  18
                         addMatchingValues(classInformation, value, productEvidence);
    -  587  486
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_VERSION.toString())) {
    -  588  24
                         foundSomething = true;
    -  589  24
                         versionEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    -  590  462
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_VENDOR.toString())) {
    -  591  12
                         foundSomething = true;
    -  592  12
                         vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    -  593  12
                         addMatchingValues(classInformation, value, vendorEvidence);
    -  594  450
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_VENDOR_ID.toString())) {
    -  595  6
                         foundSomething = true;
    -  596  6
                         vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  597  6
                         addMatchingValues(classInformation, value, vendorEvidence);
    -  598  444
                     } else if (key.equals(BUNDLE_DESCRIPTION)) {
    -  599  15
                         foundSomething = true;
    -  600  15
                         addDescription(dependency, value, "manifest", key);
    +  583  194
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_TITLE.toString())) {
    +  584  7
                         foundSomething = true;
    +  585  7
                         productEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    +  586  7
                         addMatchingValues(classInformation, value, productEvidence);
    +  587  187
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_VERSION.toString())) {
    +  588  9
                         foundSomething = true;
    +  589  9
                         versionEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    +  590  178
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_VENDOR.toString())) {
    +  591  5
                         foundSomething = true;
    +  592  5
                         vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    +  593  5
                         addMatchingValues(classInformation, value, vendorEvidence);
    +  594  173
                     } else if (key.equals(Attributes.Name.IMPLEMENTATION_VENDOR_ID.toString())) {
    +  595  3
                         foundSomething = true;
    +  596  3
                         vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    +  597  3
                         addMatchingValues(classInformation, value, vendorEvidence);
    +  598  170
                     } else if (key.equals(BUNDLE_DESCRIPTION)) {
    +  599  6
                         foundSomething = true;
    +  600  6
                         addDescription(dependency, value, "manifest", key);
     601  
                         //productEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  602  15
                         addMatchingValues(classInformation, value, productEvidence);
    -  603  429
                     } else if (key.equals(BUNDLE_NAME)) {
    -  604  21
                         foundSomething = true;
    -  605  21
                         productEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  606  21
                         addMatchingValues(classInformation, value, productEvidence);
    -  607  408
                     } else if (key.equals(BUNDLE_VENDOR)) {
    -  608  15
                         foundSomething = true;
    -  609  15
                         vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    -  610  15
                         addMatchingValues(classInformation, value, vendorEvidence);
    -  611  393
                     } else if (key.equals(BUNDLE_VERSION)) {
    -  612  21
                         foundSomething = true;
    -  613  21
                         versionEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    -  614  372
                     } else if (key.equals(Attributes.Name.MAIN_CLASS.toString())) {
    -  615  9
                         continue;
    +  602  6
                         addMatchingValues(classInformation, value, productEvidence);
    +  603  164
                     } else if (key.equals(BUNDLE_NAME)) {
    +  604  8
                         foundSomething = true;
    +  605  8
                         productEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    +  606  8
                         addMatchingValues(classInformation, value, productEvidence);
    +  607  156
                     } else if (key.equals(BUNDLE_VENDOR)) {
    +  608  6
                         foundSomething = true;
    +  609  6
                         vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    +  610  6
                         addMatchingValues(classInformation, value, vendorEvidence);
    +  611  150
                     } else if (key.equals(BUNDLE_VERSION)) {
    +  612  8
                         foundSomething = true;
    +  613  8
                         versionEvidence.addEvidence(source, key, value, Evidence.Confidence.HIGH);
    +  614  142
                     } else if (key.equals(Attributes.Name.MAIN_CLASS.toString())) {
    +  615  4
                         continue;
     616  
                         //skipping main class as if this has important information to add
     617   @@ -1013,10 +1013,10 @@
     //                    addMatchingValues(classInformation, value, productEvidence);
     624  
                     } else {
    -  625  363
                         key = key.toLowerCase();
    +  625  138
                         key = key.toLowerCase();
     626  
     
    -  627  363
                         if (!IGNORE_KEYS.contains(key)
    +  627  138
                         if (!IGNORE_KEYS.contains(key)
     628  
                                 && !key.endsWith("jdk")
     629   @@ -1037,41 +1037,41 @@
                                 && !isPackage(key, value)) {
     637  
     
    -  638  108
                             foundSomething = true;
    -  639  108
                             if (key.contains("version")) {
    -  640  18
                                 versionEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  641  90
                             } else if (key.contains("title")) {
    -  642  12
                                 productEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  643  12
                                 addMatchingValues(classInformation, value, productEvidence);
    -  644  78
                             } else if (key.contains("vendor")) {
    -  645  6
                                 vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  646  6
                                 addMatchingValues(classInformation, value, vendorEvidence);
    -  647  72
                             } else if (key.contains("name")) {
    -  648  24
                                 productEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  649  24
                                 vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    -  650  24
                                 addMatchingValues(classInformation, value, vendorEvidence);
    -  651  24
                                 addMatchingValues(classInformation, value, productEvidence);
    -  652  48
                             } else if (key.contains("license")) {
    -  653  9
                                 addLicense(dependency, value);
    +  638  42
                             foundSomething = true;
    +  639  42
                             if (key.contains("version")) {
    +  640  7
                                 versionEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    +  641  35
                             } else if (key.contains("title")) {
    +  642  5
                                 productEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    +  643  5
                                 addMatchingValues(classInformation, value, productEvidence);
    +  644  30
                             } else if (key.contains("vendor")) {
    +  645  3
                                 vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    +  646  3
                                 addMatchingValues(classInformation, value, vendorEvidence);
    +  647  27
                             } else if (key.contains("name")) {
    +  648  9
                                 productEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    +  649  9
                                 vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.MEDIUM);
    +  650  9
                                 addMatchingValues(classInformation, value, vendorEvidence);
    +  651  9
                                 addMatchingValues(classInformation, value, productEvidence);
    +  652  18
                             } else if (key.contains("license")) {
    +  653  4
                                 addLicense(dependency, value);
     654  
                             } else {
    -  655  39
                                 if (key.contains("description")) {
    +  655  14
                                 if (key.contains("description")) {
     656  0
                                     addDescription(dependency, value, "manifest", key);
     657  
                                 } else {
    -  658  39
                                     productEvidence.addEvidence(source, key, value, Evidence.Confidence.LOW);
    -  659  39
                                     vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.LOW);
    -  660  39
                                     addMatchingValues(classInformation, value, vendorEvidence);
    -  661  39
                                     addMatchingValues(classInformation, value, productEvidence);
    -  662  39
                                     if (value.matches(".*\\d.*")) {
    -  663  18
                                         final StringTokenizer tokenizer = new StringTokenizer(value, " ");
    -  664  90
                                         while (tokenizer.hasMoreElements()) {
    -  665  72
                                             final String s = tokenizer.nextToken();
    -  666  72
                                             if (s.matches("^[0-9.]+$")) {
    +  658  14
                                     productEvidence.addEvidence(source, key, value, Evidence.Confidence.LOW);
    +  659  14
                                     vendorEvidence.addEvidence(source, key, value, Evidence.Confidence.LOW);
    +  660  14
                                     addMatchingValues(classInformation, value, vendorEvidence);
    +  661  14
                                     addMatchingValues(classInformation, value, productEvidence);
    +  662  14
                                     if (value.matches(".*\\d.*")) {
    +  663  6
                                         final StringTokenizer tokenizer = new StringTokenizer(value, " ");
    +  664  30
                                         while (tokenizer.hasMoreElements()) {
    +  665  24
                                             final String s = tokenizer.nextToken();
    +  666  24
                                             if (s.matches("^[0-9.]+$")) {
     667  0
                                                 versionEvidence.addEvidence(source, key, s, Evidence.Confidence.LOW);
     668  
                                             }
    -  669  72
                                         }
    +  669  24
                                         }
     670  
                                     }
     671   @@ -1082,16 +1082,16 @@
                         }
     674  
                     }
    -  675  495
                 }
    +  675  190
                 }
     676  
             } finally {
    -  677  36
                 if (jar != null) {
    -  678  36
                     jar.close();
    +  677  13
                 if (jar != null) {
    +  678  13
                     jar.close();
     679  
                 }
     680  
             }
    -  681  36
             return foundSomething;
    +  681  13
             return foundSomething;
     682  
         }
     683   @@ -1114,48 +1114,48 @@
          */
     692  
         private void addDescription(Dependency dependency, String description, String source, String key) {
    -  693  21
             if (dependency.getDescription() == null) {
    -  694  18
                 dependency.setDescription(description);
    +  693  8
             if (dependency.getDescription() == null) {
    +  694  7
                 dependency.setDescription(description);
     695  
             }
     696  
             String desc;
    -  697  21
             if (HTML_DETECTION_PATTERN.matcher(description).find()) {
    +  697  8
             if (HTML_DETECTION_PATTERN.matcher(description).find()) {
     698  0
                 desc = Jsoup.parse(description).text();
     699  
             } else {
    -  700  21
                 desc = description;
    +  700  8
                 desc = description;
     701  
             }
    -  702  21
             dependency.setDescription(desc);
    -  703  21
             if (desc.length() > 100) {
    -  704  6
                 final int posSuchAs = desc.toLowerCase().indexOf("such as ", 100);
    -  705  6
                 final int posLike = desc.toLowerCase().indexOf("like ", 100);
    -  706  6
                 int pos = -1;
    -  707  6
                 if (posLike > 0 && posSuchAs > 0) {
    +  702  8
             dependency.setDescription(desc);
    +  703  8
             if (desc.length() > 100) {
    +  704  2
                 final int posSuchAs = desc.toLowerCase().indexOf("such as ", 100);
    +  705  2
                 final int posLike = desc.toLowerCase().indexOf("like ", 100);
    +  706  2
                 int pos = -1;
    +  707  2
                 if (posLike > 0 && posSuchAs > 0) {
     708  0
                     pos = posLike > posSuchAs ? posLike : posSuchAs;
    -  709  6
                 } else if (posLike > 0) {
    -  710  6
                     pos = posLike;
    +  709  2
                 } else if (posLike > 0) {
    +  710  2
                     pos = posLike;
     711  0
                 } else if (posSuchAs > 0) {
     712  0
                     pos = posSuchAs;
     713  
                 }
    -  714  6
                 String descToUse = desc;
    -  715  6
                 if (pos > 0) {
    -  716  6
                     final StringBuilder sb = new StringBuilder(pos + 3);
    -  717  6
                     sb.append(desc.substring(0, pos));
    -  718  6
                     sb.append("...");
    -  719  6
                     descToUse = sb.toString();
    +  714  2
                 String descToUse = desc;
    +  715  2
                 if (pos > 0) {
    +  716  2
                     final StringBuilder sb = new StringBuilder(pos + 3);
    +  717  2
                     sb.append(desc.substring(0, pos));
    +  718  2
                     sb.append("...");
    +  719  2
                     descToUse = sb.toString();
     720  
                 }
    -  721  6
                 dependency.getProductEvidence().addEvidence(source, key, descToUse, Evidence.Confidence.LOW);
    -  722  6
                 dependency.getVendorEvidence().addEvidence(source, key, descToUse, Evidence.Confidence.LOW);
    -  723  6
             } else {
    -  724  15
                 dependency.getProductEvidence().addEvidence(source, key, desc, Evidence.Confidence.MEDIUM);
    -  725  15
                 dependency.getVendorEvidence().addEvidence(source, key, desc, Evidence.Confidence.MEDIUM);
    +  721  2
                 dependency.getProductEvidence().addEvidence(source, key, descToUse, Evidence.Confidence.LOW);
    +  722  2
                 dependency.getVendorEvidence().addEvidence(source, key, descToUse, Evidence.Confidence.LOW);
    +  723  2
             } else {
    +  724  6
                 dependency.getProductEvidence().addEvidence(source, key, desc, Evidence.Confidence.MEDIUM);
    +  725  6
                 dependency.getVendorEvidence().addEvidence(source, key, desc, Evidence.Confidence.MEDIUM);
     726  
             }
    -  727  21
         }
    +  727  8
         }
     728  
     
     729   @@ -1172,13 +1172,13 @@
          */
     735  
         private void addLicense(Dependency d, String license) {
    -  736  9
             if (d.getLicense() == null) {
    -  737  9
                 d.setLicense(license);
    +  736  4
             if (d.getLicense() == null) {
    +  737  4
                 d.setLicense(license);
     738  0
             } else if (!d.getLicense().contains(license)) {
     739  0
                 d.setLicense(d.getLicense() + NEWLINE + license);
     740  
             }
    -  741  9
         }
    +  741  4
         }
     742  
     
     743   @@ -1261,40 +1261,40 @@
          */
     783  
         protected String interpolateString(String text, Properties properties) {
    -  784  81
             Properties props = properties;
    -  785  81
             if (text == null) {
    -  786  9
                 return text;
    +  784  31
             Properties props = properties;
    +  785  31
             if (text == null) {
    +  786  5
                 return text;
     787  
             }
    -  788  72
             if (props == null) {
    -  789  51
                 props = new Properties();
    +  788  26
             if (props == null) {
    +  789  19
                 props = new Properties();
     790  
             }
     791  
     
    -  792  72
             final int pos = text.indexOf("${");
    -  793  72
             if (pos < 0) {
    -  794  63
                 return text;
    +  792  26
             final int pos = text.indexOf("${");
    +  793  26
             if (pos < 0) {
    +  794  23
                 return text;
     795  
             }
    -  796  9
             final int end = text.indexOf("}");
    -  797  9
             if (end < pos) {
    +  796  3
             final int end = text.indexOf("}");
    +  797  3
             if (end < pos) {
     798  0
                 return text;
     799  
             }
     800  
     
    -  801  9
             final String propName = text.substring(pos + 2, end);
    -  802  9
             String propValue = interpolateString(props.getProperty(propName), props);
    -  803  9
             if (propValue == null) {
    +  801  3
             final String propName = text.substring(pos + 2, end);
    +  802  3
             String propValue = interpolateString(props.getProperty(propName), props);
    +  803  3
             if (propValue == null) {
     804  0
                 propValue = "";
     805  
             }
    -  806  9
             final StringBuilder sb = new StringBuilder(propValue.length() + text.length());
    -  807  9
             sb.append(text.subSequence(0, pos));
    -  808  9
             sb.append(propValue);
    -  809  9
             sb.append(text.substring(end + 1));
    -  810  9
             return interpolateString(sb.toString(), props); //yes yes, this should be a loop...
    +  806  3
             final StringBuilder sb = new StringBuilder(propValue.length() + text.length());
    +  807  3
             sb.append(text.subSequence(0, pos));
    +  808  3
             sb.append(propValue);
    +  809  3
             sb.append(text.substring(end + 1));
    +  810  3
             return interpolateString(sb.toString(), props); //yes yes, this should be a loop...
     811  
         }
     812   @@ -1319,12 +1319,12 @@
          */
     822  
         private boolean isImportPackage(String key, String value) {
    -  823  114
             final Pattern packageRx = Pattern.compile("^((([a-zA-Z_#\\$0-9]\\.)+)\\s*\\;\\s*)+$");
    -  824  114
             if (packageRx.matcher(value).matches()) {
    +  823  44
             final Pattern packageRx = Pattern.compile("^((([a-zA-Z_#\\$0-9]\\.)+)\\s*\\;\\s*)+$");
    +  824  44
             if (packageRx.matcher(value).matches()) {
     825  0
                 return (key.contains("import") || key.contains("include"));
     826  
             }
    -  827  114
             return false;
    +  827  44
             return false;
     828  
         }
     829   @@ -1347,41 +1347,41 @@
          */
     838  
         private ArrayList<ClassNameInformation> collectClassNames(Dependency dependency) {
    -  839  36
             final ArrayList<ClassNameInformation> classNames = new ArrayList<ClassNameInformation>();
    -  840  36
             JarFile jar = null;
    +  839  13
             final ArrayList<ClassNameInformation> classNames = new ArrayList<ClassNameInformation>();
    +  840  13
             JarFile jar = null;
     841  
             try {
    -  842  36
                 jar = new JarFile(dependency.getActualFilePath());
    -  843  36
                 final Enumeration entries = jar.entries();
    -  844  12552
                 while (entries.hasMoreElements()) {
    -  845  12516
                     final JarEntry entry = (JarEntry) entries.nextElement();
    -  846  12516
                     final String name = entry.getName().toLowerCase();
    +  842  13
                 jar = new JarFile(dependency.getActualFilePath());
    +  843  13
                 final Enumeration entries = jar.entries();
    +  844  5523
                 while (entries.hasMoreElements()) {
    +  845  5510
                     final JarEntry entry = (JarEntry) entries.nextElement();
    +  846  5510
                     final String name = entry.getName().toLowerCase();
     847  
                     //no longer stripping "|com\\.sun" - there are some com.sun jar files with CVEs.
    -  848  12516
                     if (name.endsWith(".class") && !name.matches("^javax?\\..*$")) {
    -  849  10350
                         final ClassNameInformation className = new ClassNameInformation(name.substring(0, name.length() - 6));
    -  850  10350
                         classNames.add(className);
    +  848  5510
                     if (name.endsWith(".class") && !name.matches("^javax?\\..*$")) {
    +  849  4741
                         final ClassNameInformation className = new ClassNameInformation(name.substring(0, name.length() - 6));
    +  850  4741
                         classNames.add(className);
     851  
                     }
    -  852  12516
                 }
    +  852  5510
                 }
     853  0
             } catch (IOException ex) {
     854  0
                 final String msg = String.format("Unable to open jar file '%s'.", dependency.getFileName());
     855  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.WARNING, msg);
     856  0
                 Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINE, null, ex);
     857  
             } finally {
    -  858  36
                 if (jar != null) {
    +  858  13
                 if (jar != null) {
     859  
                     try {
    -  860  36
                         jar.close();
    +  860  13
                         jar.close();
     861  0
                     } catch (IOException ex) {
     862  0
                         Logger.getLogger(JarAnalyzer.class.getName()).log(Level.FINEST, null, ex);
    -  863  36
                     }
    +  863  13
                     }
     864  
                 }
     865  
             }
    -  866  36
             return classNames;
    +  866  13
             return classNames;
     867  
         }
     868   @@ -1414,31 +1414,31 @@
         private void analyzeFullyQualifiedClassNames(ArrayList<ClassNameInformation> classNames,
     882  
                 HashMap<String, Integer> vendor, HashMap<String, Integer> product) {
    -  883  36
             for (ClassNameInformation entry : classNames) {
    -  884  10350
                 final ArrayList<String> list = entry.getPackageStructure();
    -  885  10350
                 addEntry(vendor, list.get(0));
    +  883  13
             for (ClassNameInformation entry : classNames) {
    +  884  4741
                 final ArrayList<String> list = entry.getPackageStructure();
    +  885  4741
                 addEntry(vendor, list.get(0));
     886  
     
    -  887  10350
                 if (list.size() == 2) {
    +  887  4741
                 if (list.size() == 2) {
     888  0
                     addEntry(product, list.get(1));
     889  
                 }
    -  890  10350
                 if (list.size() == 3) {
    -  891  2226
                     addEntry(vendor, list.get(1));
    -  892  2226
                     addEntry(product, list.get(1));
    -  893  2226
                     addEntry(product, list.get(2));
    +  890  4741
                 if (list.size() == 3) {
    +  891  1777
                     addEntry(vendor, list.get(1));
    +  892  1777
                     addEntry(product, list.get(1));
    +  893  1777
                     addEntry(product, list.get(2));
     894  
                 }
    -  895  10350
                 if (list.size() >= 4) {
    -  896  8124
                     addEntry(vendor, list.get(1));
    -  897  8124
                     addEntry(vendor, list.get(2));
    -  898  8124
                     addEntry(product, list.get(1));
    -  899  8124
                     addEntry(product, list.get(2));
    -  900  8124
                     addEntry(product, list.get(3));
    +  895  4741
                 if (list.size() >= 4) {
    +  896  2964
                     addEntry(vendor, list.get(1));
    +  897  2964
                     addEntry(vendor, list.get(2));
    +  898  2964
                     addEntry(product, list.get(1));
    +  899  2964
                     addEntry(product, list.get(2));
    +  900  2964
                     addEntry(product, list.get(3));
     901  
                 }
    -  902  10350
             }
    -  903  36
         }
    +  902  4741
             }
    +  903  13
         }
     904  
     
     905   @@ -1459,14 +1459,14 @@
          */
     913  
         private void addEntry(HashMap<String, Integer> collection, String key) {
    -  914  57648
             if (collection.containsKey(key)) {
    -  915  52182
                 collection.put(key, collection.get(key) + 1);
    +  914  24892
             if (collection.containsKey(key)) {
    +  915  21768
                 collection.put(key, collection.get(key) + 1);
     916  
             } else {
    -  917  5466
                 collection.put(key, 1);
    +  917  3124
                 collection.put(key, 1);
     918  
             }
    -  919  57648
         }
    +  919  24892
         }
     920  
     
     921   @@ -1491,22 +1491,22 @@
          */
     931  
         private void addMatchingValues(ArrayList<ClassNameInformation> classes, String value, EvidenceCollection evidence) {
    -  932  309
             if (value == null || value.isEmpty()) {
    +  932  119
             if (value == null || value.isEmpty()) {
     933  0
                 return;
     934  
             }
    -  935  309
             final String text = value.toLowerCase();
    -  936  309
             for (ClassNameInformation cni : classes) {
    -  937  91014
                 for (String key : cni.getPackageStructure()) {
    -  938  350844
                     if (text.contains(key)) { //note, package structure elements are already lowercase.
    -  939  109401
                         evidence.addEvidence("jar", "package name", key, Evidence.Confidence.HIGHEST);
    +  935  119
             final String text = value.toLowerCase();
    +  936  119
             for (ClassNameInformation cni : classes) {
    +  937  50994
                 for (String key : cni.getPackageStructure()) {
    +  938  183012
                     if (text.contains(key)) { //note, package structure elements are already lowercase.
    +  939  57140
                         evidence.addEvidence("jar", "package name", key, Evidence.Confidence.HIGHEST);
     940  
                     }
     941  
                 }
     942  
             }
    -  943  309
         }
    +  943  119
         }
     944  
     
     945   @@ -1674,7 +1674,7 @@
         private boolean isPackage(String key, String value) {
     1027  
     
    -  1028  114
             return !key.matches(".*(version|title|vendor|name|license|description).*")
    +  1028  44
             return !key.matches(".*(version|title|vendor|name|license|description).*")
     1029  
                     && value.matches("^([a-zA-Z_][a-zA-Z0-9_\\$]*(\\.[a-zA-Z_][a-zA-Z0-9_\\$]*)*)?$");
     1030   @@ -1727,30 +1727,30 @@
              * @param className a fully qualified class name
     1054  
              */
    -  1055  10350
             ClassNameInformation(String className) {
    -  1056  10350
                 name = className;
    -  1057  10350
                 if (name.contains("/")) {
    -  1058  10350
                     final String[] tmp = className.toLowerCase().split("/");
    -  1059  10350
                     int start = 0;
    -  1060  10350
                     int end = 3;
    -  1061  10350
                     if ("com".equals(tmp[0]) || "org".equals(tmp[0])) {
    -  1062  9069
                         start = 1;
    -  1063  9069
                         end = 4;
    +  1055  4741
             ClassNameInformation(String className) {
    +  1056  4741
                 name = className;
    +  1057  4741
                 if (name.contains("/")) {
    +  1058  4741
                     final String[] tmp = className.toLowerCase().split("/");
    +  1059  4741
                     int start = 0;
    +  1060  4741
                     int end = 3;
    +  1061  4741
                     if ("com".equals(tmp[0]) || "org".equals(tmp[0])) {
    +  1062  4314
                         start = 1;
    +  1063  4314
                         end = 4;
     1064  
                     }
    -  1065  10350
                     if (tmp.length <= end) {
    -  1066  2226
                         end = tmp.length - 1;
    +  1065  4741
                     if (tmp.length <= end) {
    +  1066  1777
                         end = tmp.length - 1;
     1067  
                     }
    -  1068  49524
                     for (int i = start; i <= end; i++) {
    -  1069  39174
                         packageStructure.add(tmp[i]);
    +  1068  21928
                     for (int i = start; i <= end; i++) {
    +  1069  17187
                         packageStructure.add(tmp[i]);
     1070  
                     }
    -  1071  10350
                 } else {
    +  1071  4741
                 } else {
     1072  0
                     packageStructure.add(name);
     1073  
                 }
    -  1074  10350
             }
    +  1074  4741
             }
     1075  
             /**
     1076   @@ -1800,7 +1800,7 @@
              * leading "org" or "com".
     1100  
              */
    -  1101  10350
             private ArrayList<String> packageStructure = new ArrayList<String>();
    +  1101  4741
             private ArrayList<String> packageStructure = new ArrayList<String>();
     1102  
     
     1103   @@ -1815,7 +1815,7 @@
              */
     1108  
             public ArrayList<String> getPackageStructure() {
    -  1109  101364
                 return packageStructure;
    +  1109  55735
                 return packageStructure;
     1110  
             }
     1111   @@ -1824,6 +1824,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer.html index 7a481b9b8..c1027326a 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer.html @@ -252,6 +252,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.NvdCveAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.NvdCveAnalyzer.html new file mode 100644 index 000000000..07866aec7 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.analyzer.NvdCveAnalyzer.html @@ -0,0 +1,441 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.analyzer.NvdCveAnalyzer
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    NvdCveAnalyzer
    11%
    3/27
    0%
    0/8
    1.5
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.analyzer;
     20  
     
     21  
     import java.io.IOException;
     22  
     import java.sql.SQLException;
     23  
     import java.util.List;
     24  
     import java.util.Set;
     25  
     import org.owasp.dependencycheck.Engine;
     26  
     import org.owasp.dependencycheck.dependency.Dependency;
     27  
     import org.owasp.dependencycheck.dependency.Vulnerability;
     28  
     import org.owasp.dependencycheck.dependency.Identifier;
     29  
     import org.owasp.dependencycheck.data.nvdcve.CveDB;
     30  
     import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
     31  
     
     32  
     /**
     33  
      * NvdCveAnalyzer is a utility class that takes a project dependency and
     34  
      * attempts to discern if there is an associated CVEs. It uses the the
     35  
      * identifiers found by other analyzers to lookup the CVE data.
     36  
      *
     37  
      * @author Jeremy Long (jeremy.long@owasp.org)
     38  
      */
     39  1
     public class NvdCveAnalyzer implements Analyzer {
     40  
     
     41  
         /**
     42  
          * The maximum number of query results to return.
     43  
          */
     44  
         static final int MAX_QUERY_RESULTS = 100;
     45  
         /**
     46  
          * The CVE Index.
     47  
          */
     48  
         private CveDB cveDB;
     49  
     
     50  
         /**
     51  
          * Opens the data source.
     52  
          *
     53  
          * @throws SQLException thrown when there is a SQL Exception
     54  
          * @throws IOException thrown when there is an IO Exception
     55  
          * @throws DatabaseException thrown when there is a database exceptions
     56  
          * @throws ClassNotFoundException thrown if the h2 database driver cannot be
     57  
          * loaded
     58  
          */
     59  
         public void open() throws SQLException, IOException, DatabaseException, ClassNotFoundException {
     60  0
             cveDB = new CveDB();
     61  0
             cveDB.open();
     62  0
         }
     63  
     
     64  
         /**
     65  
          * Closes the data source.
     66  
          */
     67  
         public void close() {
     68  0
             cveDB.close();
     69  0
             cveDB = null;
     70  0
         }
     71  
     
     72  
         /**
     73  
          * Returns the status of the data source - is the database open.
     74  
          *
     75  
          * @return true or false.
     76  
          */
     77  
         public boolean isOpen() {
     78  0
             return (cveDB != null);
     79  
         }
     80  
     
     81  
         /**
     82  
          * Ensures that the CVE Database is closed.
     83  
          *
     84  
          * @throws Throwable when a throwable is thrown.
     85  
          */
     86  
         @Override
     87  
         protected void finalize() throws Throwable {
     88  0
             super.finalize();
     89  0
             if (isOpen()) {
     90  0
                 close();
     91  
             }
     92  0
         }
     93  
     
     94  
         /**
     95  
          * Analyzes a dependency and attempts to determine if there are any CPE
     96  
          * identifiers for this dependency.
     97  
          *
     98  
          * @param dependency The Dependency to analyze
     99  
          * @param engine The analysis engine
     100  
          * @throws AnalysisException is thrown if there is an issue analyzing the
     101  
          * dependency
     102  
          */
     103  
         public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
     104  0
             for (Identifier id : dependency.getIdentifiers()) {
     105  0
                 if ("cpe".equals(id.getType())) {
     106  
                     try {
     107  0
                         final String value = id.getValue();
     108  0
                         final List<Vulnerability> vulns = cveDB.getVulnerabilities(value);
     109  0
                         dependency.getVulnerabilities().addAll(vulns);
     110  
     //TODO - remove this comment block after additional testing is completed
     111  
     //note - valid match functionality has been moved into the CveDB class.
     112  
     ////                    for (Vulnerability v : vulns) {
     113  
     ////                        if (isValidMatch(dependency, v)) {
     114  
     ////                            dependency.addVulnerability(v);
     115  
     ////                        }
     116  
     ////                    }
     117  0
                     } catch (DatabaseException ex) {
     118  0
                         throw new AnalysisException(ex);
     119  0
                     }
     120  
                 }
     121  
             }
     122  0
         }
     123  
     
     124  
         /**
     125  
          * Returns true because this analyzer supports all dependency types.
     126  
          *
     127  
          * @return true.
     128  
          */
     129  
         public Set<String> getSupportedExtensions() {
     130  128
             return null;
     131  
         }
     132  
     
     133  
         /**
     134  
          * Returns the name of this analyzer.
     135  
          *
     136  
          * @return the name of this analyzer.
     137  
          */
     138  
         public String getName() {
     139  0
             return "NVD CVE Analyzer";
     140  
         }
     141  
     
     142  
         /**
     143  
          * Returns true because this analyzer supports all dependency types.
     144  
          *
     145  
          * @param extension the file extension of the dependency being analyzed.
     146  
          * @return true.
     147  
          */
     148  
         public boolean supportsExtension(String extension) {
     149  0
             return true;
     150  
         }
     151  
     
     152  
         /**
     153  
          * Returns the analysis phase that this analyzer should run in.
     154  
          *
     155  
          * @return the analysis phase that this analyzer should run in.
     156  
          */
     157  
         public AnalysisPhase getAnalysisPhase() {
     158  2
             return AnalysisPhase.FINDING_ANALYSIS;
     159  
         }
     160  
     
     161  
         /**
     162  
          * Opens the NVD CVE Lucene Index.
     163  
          *
     164  
          * @throws Exception is thrown if there is an issue opening the index.
     165  
          */
     166  
         public void initialize() throws Exception {
     167  0
             this.open();
     168  0
         }
     169  
     //TODO - remove this comment block after additional testing is completed
     170  
     // The following check has been moved into the CveDB class.
     171  
     ////    /**
     172  
     ////     * <p>Determines if this is a valid vulnerability match for the given
     173  
     ////     * dependency. Specifically, this is concerned with ensuring the version
     174  
     ////     * numbers are correct.</p>
     175  
     ////     * <p>Currently, this is focused on the issues with the versions for Struts
     176  
     ////     * 1 and Struts 2. In the future this will due better matching on more
     177  
     ////     * version numbers.</p>
     178  
     ////     *
     179  
     ////     * @param dependency the dependency
     180  
     ////     * @param v the vulnerability
     181  
     ////     * @return returns true if the vulnerability is for the given dependency
     182  
     ////     */
     183  
     ////    private boolean isValidMatch(final Dependency dependency, final Vulnerability v) {
     184  
     ////        //right now I only know of the issue with Struts1/2
     185  
     ////        // start with fixing this problem.
     186  
     ////
     187  
     ////        //TODO extend this solution to do better version matching for the vulnerable software.
     188  
     ////        boolean struts1 = false;
     189  
     ////        boolean struts2 = false;
     190  
     ////        for (Identifier i : dependency.getIdentifiers()) {
     191  
     ////            if (i.getValue().startsWith("cpe:/a:apache:struts:")) {
     192  
     ////                final char version = i.getValue().charAt(21);
     193  
     ////                if (version == '1') {
     194  
     ////                    struts1 = true;
     195  
     ////                }
     196  
     ////                if (version == '2') {
     197  
     ////                    struts2 = true;
     198  
     ////                }
     199  
     ////            }
     200  
     ////        }
     201  
     ////        if (!struts1 && !struts2) {
     202  
     ////            return true; //we are not looking at struts, so return true.
     203  
     ////        }
     204  
     ////        if (struts1 && struts2) {
     205  
     ////            return true; //there is a mismatch here, but we can't solve it here so we return valid.
     206  
     ////        }
     207  
     ////        if (struts1) {
     208  
     ////            boolean hasStruts1Vuln = false;
     209  
     ////            boolean hasStruts2PreviousVersion = false;
     210  
     ////            for (VulnerableSoftware vs : v.getVulnerableSoftware()) {
     211  
     ////                //TODO FIX THIS
     212  
     ////                //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2';
     213  
     ////                //hasStruts1Vuln |= vs.getName().charAt(21) == '1';
     214  
     ////            }
     215  
     ////            if (!hasStruts1Vuln && hasStruts2PreviousVersion) {
     216  
     ////                return false;
     217  
     ////            }
     218  
     ////        }
     219  
     ////
     220  
     ////        return true;
     221  
     ////    }
     222  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.DirectoryLockException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.DirectoryLockException.html new file mode 100644 index 000000000..4a99ab3fa --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.DirectoryLockException.html @@ -0,0 +1,150 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.concurrency.DirectoryLockException
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    DirectoryLockException
    25%
    2/8
    N/A
    1
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.concurrency;
     20  
     
     21  
     /**
     22  
      * If thrown, indicates that a problem occurred when locking a directory.
     23  
      *
     24  
      * @author Jeremy Long (jeremy.long@owasp.org)
     25  
      */
     26  
     public class DirectoryLockException extends Exception {
     27  
     
     28  
         /**
     29  
          * Default serial version UID.
     30  
          */
     31  
         private static final long serialVersionUID = 1L;
     32  
     
     33  
         /**
     34  
          * Constructs a new Directory Lock Exception.
     35  
          */
     36  
         public DirectoryLockException() {
     37  0
             super();
     38  0
         }
     39  
     
     40  
         /**
     41  
          * Constructs a new Directory Lock Exception.
     42  
          *
     43  
          * @param msg the message describing the exception
     44  
          */
     45  
         public DirectoryLockException(String msg) {
     46  0
             super(msg);
     47  0
         }
     48  
     
     49  
         /**
     50  
          * Constructs a new Directory Lock Exception.
     51  
          *
     52  
          * @param ex the cause of the exception
     53  
          */
     54  
         public DirectoryLockException(Throwable ex) {
     55  0
             super(ex);
     56  0
         }
     57  
     
     58  
         /**
     59  
          * Constructs a new Directory Lock Exception.
     60  
          *
     61  
          * @param msg the message describing the exception
     62  
          * @param ex the cause of the exception
     63  
          */
     64  
         public DirectoryLockException(String msg, Throwable ex) {
     65  1
             super(msg, ex);
     66  1
         }
     67  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.DirectorySpinLock.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.DirectorySpinLock.html new file mode 100644 index 000000000..52ba35056 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.DirectorySpinLock.html @@ -0,0 +1,480 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.concurrency.DirectorySpinLock
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    DirectorySpinLock
    65%
    51/78
    66%
    16/24
    3.9
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.concurrency;
     20  
     
     21  
     import java.io.Closeable;
     22  
     import java.io.File;
     23  
     import java.io.FileNotFoundException;
     24  
     import java.io.IOException;
     25  
     import java.io.RandomAccessFile;
     26  
     import java.nio.channels.AsynchronousCloseException;
     27  
     import java.nio.channels.ClosedChannelException;
     28  
     import java.nio.channels.FileChannel;
     29  
     import java.nio.channels.FileLock;
     30  
     import java.nio.channels.FileLockInterruptionException;
     31  
     import java.nio.channels.NonWritableChannelException;
     32  
     import java.nio.channels.OverlappingFileLockException;
     33  
     import java.util.logging.Level;
     34  
     import java.util.logging.Logger;
     35  
     
     36  
     /**
     37  
      * Implements a spin lock on a given directory. If the lock cannot be obtained,
     38  
      * the process will "spin" waiting for an opportunity to obtain the lock
     39  
      * requested.
     40  
      *
     41  
      * @author Jeremy Long (jeremy.long@owasp.org)
     42  
      */
     43  
     public class DirectorySpinLock implements Closeable /*, AutoCloseable*/ {
     44  
     
     45  
         /**
     46  
          * The name of the lock file.
     47  
          */
     48  
         public static final String LOCK_NAME = "data.lock";
     49  
         /**
     50  
          * The maximum wait period used when attempting to obtain a lock.
     51  
          */
     52  
         public static final int MAX_SPIN = 100;
     53  
         /**
     54  
          * The file channel used to perform the lock.
     55  
          */
     56  6
         private FileChannel channel = null;
     57  
         /**
     58  
          * The file used to perform the lock.
     59  
          */
     60  6
         private File lockFile = null;
     61  
         /**
     62  
          * The lock object.
     63  
          */
     64  6
         private FileLock lock = null;
     65  
         /**
     66  
          * The maximum number of seconds that the spin lock will wait while trying
     67  
          * to obtain a lock.
     68  
          */
     69  6
         private long maxWait = MAX_SPIN;
     70  
     
     71  
         /**
     72  
          * Get the maximum wait time, in seconds, that the spin lock will wait while
     73  
          * trying to obtain a lock.
     74  
          *
     75  
          * @return the number of seconds the spin lock will wait
     76  
          */
     77  
         public long getMaxWait() {
     78  0
             return maxWait / 2; //sleep is for 500, so / 2
     79  
         }
     80  
     
     81  
         /**
     82  
          * Set the maximum wait time, in seconds, that the spin lock will wait while
     83  
          * trying to obtain a lock.
     84  
          *
     85  
          * @param maxWait the number of seconds the spin lock will wait
     86  
          */
     87  
         public void setMaxWait(long maxWait) {
     88  3
             this.maxWait = maxWait * 2; //sleep is for 500, so * 2
     89  3
         }
     90  
     
     91  
         /**
     92  
          * Constructs a new spin lock on the given directory.
     93  
          *
     94  
          * @param directory the directory to monitor/lock
     95  
          * @throws InvalidDirectoryException thrown if there is an issue with the
     96  
          * directory provided
     97  
          * @throws DirectoryLockException thrown there is an issue obtaining a
     98  
          * handle to the lock file
     99  
          */
     100  6
         public DirectorySpinLock(File directory) throws InvalidDirectoryException, DirectoryLockException {
     101  6
             checkDirectory(directory);
     102  6
             lockFile = new File(directory, LOCK_NAME);
     103  6
             RandomAccessFile file = null;
     104  
             try {
     105  6
                 file = new RandomAccessFile(lockFile, "rw");
     106  0
             } catch (FileNotFoundException ex) {
     107  0
                 throw new DirectoryLockException("Lock file not found", ex);
     108  6
             }
     109  6
             channel = file.getChannel();
     110  6
         }
     111  
     
     112  
         /**
     113  
          * Attempts to obtain an exclusive lock; an exception is thrown if the lock
     114  
          * could not be obtained. This method may block for a few seconds if a lock
     115  
          * cannot be obtained.
     116  
          *
     117  
          * @throws DirectoryLockException thrown if there is an exception obtaining
     118  
          * the lock
     119  
          */
     120  
         public void obtainSharedLock() throws DirectoryLockException {
     121  2
             obtainLock(true);
     122  2
         }
     123  
     
     124  
         /**
     125  
          * Attempts to obtain an exclusive lock; an exception is thrown if the lock
     126  
          * could not be obtained. This method may block for a few seconds if a lock
     127  
          * cannot be obtained.
     128  
          *
     129  
          * @throws DirectoryLockException thrown if there is an exception obtaining
     130  
          * the lock
     131  
          */
     132  
         public void obtainExclusiveLock() throws DirectoryLockException {
     133  1
             obtainLock(false);
     134  1
         }
     135  
     
     136  
         /**
     137  
          * Attempts to obtain a lock; an exception is thrown if the lock could not
     138  
          * be obtained. This method may block for a few seconds if a lock cannot be
     139  
          * obtained.
     140  
          *
     141  
          * @param shared true if the lock is shared, otherwise false
     142  
          * @param maxWait the maximum time to wait, in seconds, while trying to
     143  
          * obtain the lock
     144  
          * @throws DirectoryLockException thrown if there is an exception obtaining
     145  
          * the lock
     146  
          */
     147  
         protected void obtainLock(boolean shared, long maxWait) throws DirectoryLockException {
     148  3
             setMaxWait(maxWait);
     149  3
             obtainLock(shared);
     150  2
         }
     151  
     
     152  
         /**
     153  
          * Attempts to obtain a lock; an exception is thrown if the lock could not
     154  
          * be obtained. This method may block for a few seconds if a lock cannot be
     155  
          * obtained.
     156  
          *
     157  
          * @param shared true if the lock is shared, otherwise false
     158  
          * @throws DirectoryLockException thrown if there is an exception obtaining
     159  
          * the lock
     160  
          */
     161  
         protected void obtainLock(boolean shared) throws DirectoryLockException {
     162  6
             if (lock != null) {
     163  0
                 release();
     164  
             }
     165  6
             if (channel == null) {
     166  0
                 throw new DirectoryLockException("Unable to create lock, no file channel exists");
     167  
             }
     168  6
             int count = 0;
     169  6
             Exception lastException = null;
     170  13
             while (lock == null && count++ < maxWait) {
     171  
                 try {
     172  7
                     lock = channel.lock(0, Long.MAX_VALUE, shared);
     173  0
                 } catch (AsynchronousCloseException ex) {
     174  0
                     lastException = ex;
     175  0
                 } catch (ClosedChannelException ex) {
     176  0
                     lastException = ex;
     177  0
                 } catch (FileLockInterruptionException ex) {
     178  0
                     lastException = ex;
     179  2
                 } catch (OverlappingFileLockException ex) {
     180  2
                     lastException = ex;
     181  0
                 } catch (NonWritableChannelException ex) {
     182  0
                     lastException = ex;
     183  0
                 } catch (IOException ex) {
     184  0
                     lastException = ex;
     185  7
                 }
     186  
                 try {
     187  7
                     Thread.sleep(500);
     188  0
                 } catch (InterruptedException ex) {
     189  0
                     Thread.currentThread().interrupt();
     190  7
                 }
     191  
             }
     192  6
             if (lock == null) {
     193  1
                 if (lastException == null) {
     194  0
                     throw new DirectoryLockException("Unable to obtain lock");
     195  
                 } else {
     196  1
                     throw new DirectoryLockException("Unable to obtain lock", lastException);
     197  
                 }
     198  
             }
     199  5
         }
     200  
     
     201  
         /**
     202  
          * Performs a few simple rudimentary checks on the specified directory.
     203  
          * Specifically, does the file exist and is it a directory.
     204  
          *
     205  
          * @param directory the File object to inspect
     206  
          * @throws InvalidDirectoryException thrown if the directory is null or is
     207  
          * not a directory
     208  
          */
     209  
         private void checkDirectory(File directory) throws InvalidDirectoryException {
     210  6
             if (directory == null) {
     211  0
                 throw new InvalidDirectoryException("Unable to obtain lock on a null File");
     212  
             }
     213  6
             if (!directory.isDirectory()) {
     214  0
                 final String msg = String.format("File, '%s', does not exist or is not a directory", directory.getAbsolutePath());
     215  0
                 throw new InvalidDirectoryException(msg);
     216  
             }
     217  6
         }
     218  
     
     219  
         /**
     220  
          * Releases any locks and closes the underlying channel.
     221  
          *
     222  
          * @throws IOException if an IO Exception occurs
     223  
          */
     224  
         @Override
     225  
         public void close() throws IOException {
     226  6
             release();
     227  
     // TODO uncomment this once support for 1.6 is dropped.
     228  
     //        if (lock != null) {
     229  
     //            try {
     230  
     //                lock.close();
     231  
     //            } catch (IOException ex) {
     232  
     //                Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to close file lock due to IO Exception", ex);
     233  
     //            }
     234  
     //        }
     235  6
             if (channel != null) {
     236  
                 try {
     237  6
                     channel.close();
     238  0
                 } catch (IOException ex) {
     239  0
                     Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to close the channel for the file lock", ex);
     240  6
                 }
     241  
             }
     242  6
             if (lockFile != null) {
     243  6
                 if (lockFile.exists()) {
     244  
                     /* yes, this delete could fail which is totally fine. The other
     245  
                      * thread holding the lock while delete it.
     246  
                      */
     247  6
                     lockFile.delete();
     248  
                 }
     249  
             }
     250  6
         }
     251  
     
     252  
         /**
     253  
          * Releases the lock. Any exceptions that are thrown by the underlying lock
     254  
          * during the release are ignored.
     255  
          */
     256  
         public void release() {
     257  6
             if (lock != null) {
     258  
                 try {
     259  5
                     lock.release();
     260  0
                 } catch (ClosedChannelException ex) {
     261  0
                     Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Uable to release file lock", ex);
     262  0
                 } catch (IOException ex) {
     263  0
                     Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to release file lock due to IO Exception", ex);
     264  5
                 }
     265  
             }
     266  6
         }
     267  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.InvalidDirectoryException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.InvalidDirectoryException.html new file mode 100644 index 000000000..703cd20ac --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.concurrency.InvalidDirectoryException.html @@ -0,0 +1,150 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.concurrency.InvalidDirectoryException
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    InvalidDirectoryException
    0%
    0/8
    N/A
    1
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.concurrency;
     20  
     
     21  
     /**
     22  
      * If thrown, indicates that there is a problem with a directory.
     23  
      *
     24  
      * @author Jeremy Long (jeremy.long@owasp.org)
     25  
      */
     26  
     public class InvalidDirectoryException extends Exception {
     27  
     
     28  
         /**
     29  
          * Default serial version UID.
     30  
          */
     31  
         private static final long serialVersionUID = 1L;
     32  
     
     33  
         /**
     34  
          * Constructs a new Invalid Directory Exception.
     35  
          */
     36  
         public InvalidDirectoryException() {
     37  0
             super();
     38  0
         }
     39  
     
     40  
         /**
     41  
          * Constructs a new Invalid Directory Exception.
     42  
          *
     43  
          * @param msg the message describing the exception
     44  
          */
     45  
         public InvalidDirectoryException(String msg) {
     46  0
             super(msg);
     47  0
         }
     48  
     
     49  
         /**
     50  
          * Constructs a new Invalid Directory Exception.
     51  
          *
     52  
          * @param ex the cause of the exception
     53  
          */
     54  
         public InvalidDirectoryException(Throwable ex) {
     55  0
             super(ex);
     56  0
         }
     57  
     
     58  
         /**
     59  
          * Constructs a new Invalid Directory Exception.
     60  
          *
     61  
          * @param msg the message describing the exception
     62  
          * @param ex the cause of the exception
     63  
          */
     64  
         public InvalidDirectoryException(String msg, Throwable ex) {
     65  0
             super(msg, ex);
     66  0
         }
     67  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.CachedWebDataSource.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.CachedWebDataSource.html index d9e22f32a..247687cd1 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.CachedWebDataSource.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.CachedWebDataSource.html @@ -95,6 +95,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateException.html index 2f2b02aaf..f6ef44286 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateException.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateException.html @@ -149,6 +149,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateService.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateService.html index 788bd639f..061a55186 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateService.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.UpdateService.html @@ -146,6 +146,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.BaseIndex.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.BaseIndex.html new file mode 100644 index 000000000..484e41de8 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.BaseIndex.html @@ -0,0 +1,235 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.cpe.BaseIndex
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    BaseIndex
    73%
    17/23
    25%
    1/4
    1.667
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.cpe;
     20  
     
     21  
     import java.io.File;
     22  
     import java.io.IOException;
     23  
     import java.util.logging.Level;
     24  
     import java.util.logging.Logger;
     25  
     import org.apache.lucene.store.Directory;
     26  
     import org.apache.lucene.store.FSDirectory;
     27  
     import org.owasp.dependencycheck.utils.Settings;
     28  
     
     29  
     /**
     30  
      * The Base Index class used to access the CPE Index.
     31  
      *
     32  
      * @author Jeremy Long (jeremy.long@owasp.org)
     33  
      */
     34  11
     public abstract class BaseIndex {
     35  
     
     36  
         /**
     37  
          * The Lucene directory containing the index.
     38  
          */
     39  
         private Directory directory;
     40  
         /**
     41  
          * Indicates whether or not the Lucene Index is open.
     42  
          */
     43  11
         private boolean indexOpen = false;
     44  
     
     45  
         /**
     46  
          * Gets the directory.
     47  
          *
     48  
          * @return the directory
     49  
          */
     50  
         public Directory getDirectory() {
     51  11
             return directory;
     52  
         }
     53  
     
     54  
         /**
     55  
          * Opens the CPE Index.
     56  
          *
     57  
          * @throws IOException is thrown if an IOException occurs opening the index.
     58  
          */
     59  
         public void open() throws IOException {
     60  11
             directory = this.openDirectory();
     61  11
             indexOpen = true;
     62  11
         }
     63  
     
     64  
         /**
     65  
          * Closes the CPE Index.
     66  
          */
     67  
         public void close() {
     68  
             try {
     69  11
                 directory.close();
     70  0
             } catch (IOException ex) {
     71  0
                 final String msg = "Unable to update database due to an IO error.";
     72  0
                 Logger.getLogger(BaseIndex.class.getName()).log(Level.SEVERE, msg);
     73  0
                 Logger.getLogger(BaseIndex.class.getName()).log(Level.FINE, null, ex);
     74  
             } finally {
     75  11
                 directory = null;
     76  11
             }
     77  11
             indexOpen = false;
     78  
     
     79  11
         }
     80  
     
     81  
         /**
     82  
          * Returns the status of the data source - is the index open.
     83  
          *
     84  
          * @return true or false.
     85  
          */
     86  
         public boolean isOpen() {
     87  6
             return indexOpen;
     88  
         }
     89  
     
     90  
         /**
     91  
          * Returns the Lucene directory object for the CPE Index.
     92  
          *
     93  
          * @return the Lucene Directory object for the CPE Index.
     94  
          * @throws IOException is thrown if an IOException occurs.
     95  
          */
     96  
         protected Directory openDirectory() throws IOException {
     97  11
             final File path = getDataDirectory();
     98  11
             return FSDirectory.open(path);
     99  
         }
     100  
     
     101  
         /**
     102  
          * Retrieves the directory that the JAR file exists in so that we can ensure
     103  
          * we always use a common data directory.
     104  
          *
     105  
          * @return the data directory for this index.
     106  
          * @throws IOException is thrown if an IOException occurs of course...
     107  
          */
     108  
         public static File getDataDirectory() throws IOException {
     109  12
             final File path = Settings.getFile(Settings.KEYS.CPE_DATA_DIRECTORY);
     110  12
             if (!path.exists()) {
     111  0
                 if (!path.mkdirs()) {
     112  0
                     throw new IOException("Unable to create CPE Data directory");
     113  
                 }
     114  
             }
     115  12
             return path;
     116  
         }
     117  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.CpeIndexReader.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.CpeIndexReader.html new file mode 100644 index 000000000..79e9d1207 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.CpeIndexReader.html @@ -0,0 +1,345 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.cpe.CpeIndexReader
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    CpeIndexReader
    75%
    28/37
    25%
    2/8
    1.714
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.cpe;
     20  
     
     21  
     import java.io.IOException;
     22  
     import java.util.HashMap;
     23  
     import java.util.Map;
     24  
     import java.util.logging.Level;
     25  
     import java.util.logging.Logger;
     26  
     import org.apache.lucene.analysis.Analyzer;
     27  
     import org.apache.lucene.analysis.core.KeywordAnalyzer;
     28  
     import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
     29  
     import org.apache.lucene.document.Document;
     30  
     import org.apache.lucene.index.CorruptIndexException;
     31  
     import org.apache.lucene.index.DirectoryReader;
     32  
     import org.apache.lucene.index.IndexReader;
     33  
     import org.apache.lucene.queryparser.classic.ParseException;
     34  
     import org.apache.lucene.queryparser.classic.QueryParser;
     35  
     import org.apache.lucene.search.IndexSearcher;
     36  
     import org.apache.lucene.search.Query;
     37  
     import org.apache.lucene.search.TopDocs;
     38  
     import org.apache.lucene.util.Version;
     39  
     import org.owasp.dependencycheck.data.lucene.FieldAnalyzer;
     40  
     import org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer;
     41  
     
     42  
     /**
     43  
      *
     44  
      * @author Jeremy Long (jeremy.long@owasp.org)
     45  
      */
     46  9
     public class CpeIndexReader extends BaseIndex {
     47  
     
     48  
         /**
     49  
          * The Lucene IndexReader.
     50  
          */
     51  
         private IndexReader indexReader;
     52  
         /**
     53  
          * The Lucene IndexSearcher.
     54  
          */
     55  
         private IndexSearcher indexSearcher;
     56  
         /**
     57  
          * The Lucene Analyzer used for Searching.
     58  
          */
     59  
         private Analyzer searchingAnalyzer;
     60  
         /**
     61  
          * The Lucene QueryParser used for Searching.
     62  
          */
     63  
         private QueryParser queryParser;
     64  
         /**
     65  
          * The search field analyzer for the product field.
     66  
          */
     67  
         private SearchFieldAnalyzer productSearchFieldAnalyzer;
     68  
         /**
     69  
          * The search field analyzer for the vendor field.
     70  
          */
     71  
         private SearchFieldAnalyzer vendorSearchFieldAnalyzer;
     72  
     
     73  
         /**
     74  
          * Opens the CPE Index.
     75  
          *
     76  
          * @throws IOException is thrown if an IOException occurs opening the index.
     77  
          */
     78  
         @Override
     79  
         public void open() throws IOException {
     80  
             //TODO add spinlock (shared)
     81  9
             super.open();
     82  9
             indexReader = DirectoryReader.open(getDirectory());
     83  9
             indexSearcher = new IndexSearcher(indexReader);
     84  9
             searchingAnalyzer = createSearchingAnalyzer();
     85  9
             queryParser = new QueryParser(Version.LUCENE_43, Fields.DOCUMENT_KEY, searchingAnalyzer);
     86  9
         }
     87  
     
     88  
         /**
     89  
          * Closes the CPE Index.
     90  
          */
     91  
         @Override
     92  
         public void close() {
     93  
             //TODO remove spinlock (shared)
     94  9
             if (searchingAnalyzer != null) {
     95  9
                 searchingAnalyzer.close();
     96  9
                 searchingAnalyzer = null;
     97  
             }
     98  9
             if (indexReader != null) {
     99  
                 try {
     100  9
                     indexReader.close();
     101  0
                 } catch (IOException ex) {
     102  0
                     Logger.getLogger(CpeIndexReader.class.getName()).log(Level.FINEST, null, ex);
     103  9
                 }
     104  9
                 indexReader = null;
     105  
             }
     106  9
             queryParser = null;
     107  9
             indexSearcher = null;
     108  9
             super.close();
     109  9
         }
     110  
     
     111  
         /**
     112  
          * Searches the index using the given search string.
     113  
          *
     114  
          * @param searchString the query text
     115  
          * @param maxQueryResults the maximum number of documents to return
     116  
          * @return the TopDocs found by the search
     117  
          * @throws ParseException thrown when the searchString is invalid
     118  
          * @throws IOException is thrown if there is an issue with the underlying
     119  
          * Index
     120  
          */
     121  
         public TopDocs search(String searchString, int maxQueryResults) throws ParseException, IOException {
     122  41
             final Query query = queryParser.parse(searchString);
     123  41
             return indexSearcher.search(query, maxQueryResults);
     124  
         }
     125  
     
     126  
         /**
     127  
          * Searches the index using the given query.
     128  
          *
     129  
          * @param query the query used to search the index
     130  
          * @param maxQueryResults the max number of results to return
     131  
          * @return the TopDocs found be the query
     132  
          * @throws CorruptIndexException thrown if the Index is corrupt
     133  
          * @throws IOException thrown if there is an IOException
     134  
          */
     135  
         public TopDocs search(Query query, int maxQueryResults) throws CorruptIndexException, IOException {
     136  0
             resetSearchingAnalyzer();
     137  0
             return indexSearcher.search(query, maxQueryResults);
     138  
         }
     139  
     
     140  
         /**
     141  
          * Retrieves a document from the Index.
     142  
          *
     143  
          * @param documentId the id of the document to retrieve
     144  
          * @return the Document
     145  
          * @throws IOException thrown if there is an IOException
     146  
          */
     147  
         public Document getDocument(int documentId) throws IOException {
     148  417
             return indexSearcher.doc(documentId);
     149  
         }
     150  
     
     151  
         /**
     152  
          * Creates an Analyzer for searching the CPE Index.
     153  
          *
     154  
          * @return the CPE Analyzer.
     155  
          */
     156  
         @SuppressWarnings("unchecked")
     157  
         private Analyzer createSearchingAnalyzer() {
     158  9
             final Map fieldAnalyzers = new HashMap();
     159  9
             fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
     160  9
             productSearchFieldAnalyzer = new SearchFieldAnalyzer(Version.LUCENE_43);
     161  9
             vendorSearchFieldAnalyzer = new SearchFieldAnalyzer(Version.LUCENE_43);
     162  9
             fieldAnalyzers.put(Fields.PRODUCT, productSearchFieldAnalyzer);
     163  9
             fieldAnalyzers.put(Fields.VENDOR, vendorSearchFieldAnalyzer);
     164  
     
     165  9
             return new PerFieldAnalyzerWrapper(new FieldAnalyzer(Version.LUCENE_43), fieldAnalyzers);
     166  
         }
     167  
     
     168  
         /**
     169  
          * Resets the searching analyzers
     170  
          */
     171  
         private void resetSearchingAnalyzer() {
     172  0
             if (productSearchFieldAnalyzer != null) {
     173  0
                 productSearchFieldAnalyzer.clear();
     174  
             }
     175  0
             if (vendorSearchFieldAnalyzer != null) {
     176  0
                 vendorSearchFieldAnalyzer.clear();
     177  
             }
     178  0
         }
     179  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.CpeIndexWriter.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.CpeIndexWriter.html new file mode 100644 index 000000000..190b2cd05 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.CpeIndexWriter.html @@ -0,0 +1,272 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.cpe.CpeIndexWriter
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    CpeIndexWriter
    48%
    24/50
    50%
    3/6
    2.4
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.cpe;
     20  
     
     21  
     import java.io.IOException;
     22  
     import java.util.HashMap;
     23  
     import java.util.Map;
     24  
     import java.util.logging.Level;
     25  
     import java.util.logging.Logger;
     26  
     import org.apache.lucene.analysis.Analyzer;
     27  
     import org.apache.lucene.analysis.core.KeywordAnalyzer;
     28  
     import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
     29  
     import org.apache.lucene.document.Document;
     30  
     import org.apache.lucene.document.Field;
     31  
     import org.apache.lucene.document.StringField;
     32  
     import org.apache.lucene.document.TextField;
     33  
     import org.apache.lucene.index.CorruptIndexException;
     34  
     import org.apache.lucene.index.IndexWriter;
     35  
     import org.apache.lucene.index.IndexWriterConfig;
     36  
     import org.apache.lucene.index.Term;
     37  
     import org.apache.lucene.util.Version;
     38  
     import org.owasp.dependencycheck.data.lucene.FieldAnalyzer;
     39  
     
     40  
     /**
     41  
      *
     42  
      * @author Jeremy Long (jeremy.long@owasp.org)
     43  
      */
     44  2
     public class CpeIndexWriter extends BaseIndex {
     45  
     
     46  
         /**
     47  
          * The IndexWriter for the Lucene index.
     48  
          */
     49  
         private IndexWriter indexWriter;
     50  
         /**
     51  
          * The Lucene Analyzer used for Indexing.
     52  
          */
     53  
         private Analyzer indexingAnalyzer;
     54  
     
     55  
         /**
     56  
          * Opens the CPE Index.
     57  
          *
     58  
          * @throws IOException is thrown if an IOException occurs opening the index.
     59  
          */
     60  
         @Override
     61  
         public void open() throws IOException {
     62  
             //TODO add spinlock
     63  2
             super.open();
     64  2
             indexingAnalyzer = createIndexingAnalyzer();
     65  2
             final IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_43, indexingAnalyzer);
     66  2
             indexWriter = new IndexWriter(getDirectory(), conf);
     67  2
         }
     68  
     
     69  
         /**
     70  
          * Closes the CPE Index.
     71  
          */
     72  
         @Override
     73  
         public void close() {
     74  
             //TODO remove spinlock
     75  2
             if (indexWriter != null) {
     76  2
                 commit();
     77  
                 try {
     78  2
                     indexWriter.close(true);
     79  0
                 } catch (CorruptIndexException ex) {
     80  0
                     final String msg = "Unable to update database, there is a corrupt index.";
     81  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
     82  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
     83  0
                 } catch (IOException ex) {
     84  0
                     final String msg = "Unable to update database due to an IO error.";
     85  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
     86  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
     87  
                 } finally {
     88  2
                     indexWriter = null;
     89  2
                 }
     90  
             }
     91  2
             if (indexingAnalyzer != null) {
     92  2
                 indexingAnalyzer.close();
     93  2
                 indexingAnalyzer = null;
     94  
             }
     95  2
             super.close();
     96  2
         }
     97  
     
     98  
         /**
     99  
          * Commits any pending changes.
     100  
          */
     101  
         public void commit() {
     102  2
             if (indexWriter != null) {
     103  
                 try {
     104  2
                     indexWriter.forceMerge(1);
     105  2
                     indexWriter.commit();
     106  0
                 } catch (CorruptIndexException ex) {
     107  0
                     final String msg = "Unable to update database, there is a corrupt index.";
     108  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
     109  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
     110  0
                 } catch (IOException ex) {
     111  0
                     final String msg = "Unable to update database due to an IO error.";
     112  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
     113  0
                     Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
     114  2
                 }
     115  
             }
     116  2
         }
     117  
     
     118  
         /**
     119  
          * Creates the indexing analyzer for the CPE Index.
     120  
          *
     121  
          * @return the CPE Analyzer.
     122  
          */
     123  
         @SuppressWarnings("unchecked")
     124  
         private Analyzer createIndexingAnalyzer() {
     125  2
             final Map fieldAnalyzers = new HashMap();
     126  2
             fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
     127  2
             return new PerFieldAnalyzerWrapper(new FieldAnalyzer(Version.LUCENE_43), fieldAnalyzers);
     128  
         }
     129  
     
     130  
         /**
     131  
          * Saves a CPE IndexEntry into the Lucene index.
     132  
          *
     133  
          * @param entry a CPE entry.
     134  
          * @throws CorruptIndexException is thrown if the index is corrupt.
     135  
          * @throws IOException is thrown if an IOException occurs.
     136  
          */
     137  
         public void saveEntry(IndexEntry entry) throws CorruptIndexException, IOException {
     138  0
             final Document doc = new Document();
     139  0
             final Field documentKey = new StringField(Fields.DOCUMENT_KEY, entry.getDocumentId(), Field.Store.NO);
     140  0
             final Field vendor = new TextField(Fields.VENDOR, entry.getVendor(), Field.Store.YES);
     141  0
             final Field product = new TextField(Fields.PRODUCT, entry.getProduct(), Field.Store.YES);
     142  0
             doc.add(documentKey);
     143  0
             doc.add(vendor);
     144  0
             doc.add(product);
     145  
     
     146  0
             final Term term = new Term(Fields.DOCUMENT_KEY, entry.getDocumentId());
     147  0
             indexWriter.updateDocument(term, doc);
     148  0
         }
     149  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.Fields.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.Fields.html index e40a4c456..0b0101c68 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.Fields.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.Fields.html @@ -106,6 +106,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.IndexEntry.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.IndexEntry.html index 6119ab9ff..f45c509aa 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.IndexEntry.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cpe.IndexEntry.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    IndexEntry
    66%
    24/36
    37%
    12/32
    2.5
    IndexEntry
    63%
    23/36
    34%
    11/32
    2.5
     
    @@ -75,7 +75,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     29  
      */
    -  30  8602
     public class IndexEntry implements Serializable {
    +  30  3902
     public class IndexEntry implements Serializable {
     31  
     
     32   @@ -153,7 +153,7 @@
          */
     71  
         public String getVendor() {
    -  72  1235
             return vendor;
    +  72  452
             return vendor;
     73  
         }
     74   @@ -170,8 +170,8 @@
          */
     80  
         public void setVendor(String vendor) {
    -  81  8599
             this.vendor = vendor;
    -  82  8599
         }
    +  81  3901
             this.vendor = vendor;
    +  82  3901
         }
     83  
         /**
     84   @@ -194,7 +194,7 @@
          */
     93  
         public String getProduct() {
    -  94  1658
             return product;
    +  94  808
             return product;
     95  
         }
     96   @@ -211,8 +211,8 @@
          */
     102  
         public void setProduct(String product) {
    -  103  8599
             this.product = product;
    -  104  8599
         }
    +  103  3901
             this.product = product;
    +  104  3901
         }
     105  
         /**
     106   @@ -252,8 +252,8 @@
          */
     124  
         public void setSearchScore(float searchScore) {
    -  125  2709
             this.searchScore = searchScore;
    -  126  2709
         }
    +  125  417
             this.searchScore = searchScore;
    +  126  417
         }
     127  
     
     128   @@ -288,19 +288,19 @@
          */
     143  
         public void parseName(String cpeName) throws UnsupportedEncodingException {
    -  144  3
             if (cpeName != null && cpeName.length() > 7) {
    -  145  3
                 final String[] data = cpeName.substring(7).split(":");
    -  146  3
                 if (data.length >= 1) {
    -  147  3
                     vendor = URLDecoder.decode(data[0].replace("+", "%2B"), "UTF-8");
    -  148  3
                     if (data.length >= 2) {
    -  149  3
                         product = URLDecoder.decode(data[1].replace("+", "%2B"), "UTF-8");
    +  144  1
             if (cpeName != null && cpeName.length() > 7) {
    +  145  1
                 final String[] data = cpeName.substring(7).split(":");
    +  146  1
                 if (data.length >= 1) {
    +  147  1
                     vendor = URLDecoder.decode(data[0].replace("+", "%2B"), "UTF-8");
    +  148  1
                     if (data.length >= 2) {
    +  149  1
                         product = URLDecoder.decode(data[1].replace("+", "%2B"), "UTF-8");
     150  
                     }
     151  
                 }
     152  
             }
    -  153  3
         }
    +  153  1
         }
     154  
     
     155   @@ -318,24 +318,24 @@
         @Override
     163  
         public boolean equals(Object obj) {
    -  164  7140
             if (obj == null) {
    +  164  3586
             if (obj == null) {
     165  0
                 return false;
     166  
             }
    -  167  7140
             if (getClass() != obj.getClass()) {
    +  167  3586
             if (getClass() != obj.getClass()) {
     168  0
                 return false;
     169  
             }
    -  170  7140
             final IndexEntry other = (IndexEntry) obj;
    -  171  7140
             if ((this.vendor == null) ? (other.vendor != null) : !this.vendor.equals(other.vendor)) {
    -  172  3828
                 return false;
    +  170  3586
             final IndexEntry other = (IndexEntry) obj;
    +  171  3586
             if ((this.vendor == null) ? (other.vendor != null) : !this.vendor.equals(other.vendor)) {
    +  172  2633
                 return false;
     173  
             }
    -  174  3312
             if ((this.product == null) ? (other.product != null) : !this.product.equals(other.product)) {
    -  175  1077
                 return false;
    +  174  953
             if ((this.product == null) ? (other.product != null) : !this.product.equals(other.product)) {
    +  175  953
                 return false;
     176  
             }
    -  177  2235
             return true;
    +  177  0
             return true;
     178  
         }
     179   @@ -361,6 +361,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweDB.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweDB.html index 83c42240d..cda3372d8 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweDB.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweDB.html @@ -99,7 +99,7 @@
          * A HashMap of the CWE data.
     42  
          */
    -  43  3
         private static final HashMap<String, String> CWE = loadData();
    +  43  1
         private static final HashMap<String, String> CWE = loadData();
     44  
     
     45   @@ -114,13 +114,13 @@
          */
     50  
         private static HashMap<String, String> loadData() {
    -  51  3
             ObjectInputStream oin = null;
    +  51  1
             ObjectInputStream oin = null;
     52  
             try {
    -  53  3
                 final String filePath = "data/cwe.hashmap.serialized";
    -  54  3
                 final InputStream input = CweDB.class.getClassLoader().getResourceAsStream(filePath);
    -  55  3
                 oin = new ObjectInputStream(input);
    -  56  3
                 return (HashMap<String, String>) oin.readObject();
    +  53  1
                 final String filePath = "data/cwe.hashmap.serialized";
    +  54  1
                 final InputStream input = CweDB.class.getClassLoader().getResourceAsStream(filePath);
    +  55  1
                 oin = new ObjectInputStream(input);
    +  56  1
                 return (HashMap<String, String>) oin.readObject();
     57  0
             } catch (ClassNotFoundException ex) {
     58  0
                 Logger.getLogger(CweDB.class.getName()).log(Level.WARNING, "Unable to load CWE data. This should not be an issue.");
     59  0
                 Logger.getLogger(CweDB.class.getName()).log(Level.FINE, null, ex);
    @@ -129,13 +129,13 @@  62  0
                 Logger.getLogger(CweDB.class.getName()).log(Level.FINE, null, ex);
     63  
             } finally {
    -  64  3
                 if (oin != null) {
    +  64  1
                 if (oin != null) {
     65  
                     try {
    -  66  3
                         oin.close();
    +  66  1
                         oin.close();
     67  0
                     } catch (IOException ex) {
     68  0
                         Logger.getLogger(CweDB.class.getName()).log(Level.FINEST, null, ex);
    -  69  6
                     }
    +  69  2
                     }
     70  
                 }
     71   @@ -159,8 +159,8 @@
          */
     81  
         public static String getCweName(String cweId) {
    -  82  54
             if (cweId != null) {
    -  83  54
                 return CWE.get(cweId);
    +  82  18
             if (cweId != null) {
    +  83  18
                 return CWE.get(cweId);
     84  
             }
     85  0
             return null;
    @@ -170,6 +170,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweHandler.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweHandler.html index d45d913ae..3bfeda1ac 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweHandler.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.cwe.CweHandler.html @@ -123,6 +123,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AbstractTokenizingFilter.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AbstractTokenizingFilter.html index 54b786da2..95107d377 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AbstractTokenizingFilter.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AbstractTokenizingFilter.html @@ -89,7 +89,7 @@
          * The char term attribute.
     36  
          */
    -  37  66
         private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
    +  37  24
         private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     38  
     
     39   @@ -104,7 +104,7 @@
          */
     44  
         protected CharTermAttribute getTermAtt() {
    -  45  91474
             return termAtt;
    +  45  30745
             return termAtt;
     46  
         }
     47   @@ -129,7 +129,7 @@
          */
     57  
         protected LinkedList<String> getTokens() {
    -  58  91474
             return tokens;
    +  58  30745
             return tokens;
     59  
         }
     60   @@ -146,9 +146,9 @@
          */
     66  
         public AbstractTokenizingFilter(TokenStream stream) {
    -  67  66
             super(stream);
    -  68  66
             tokens = new LinkedList<String>();
    -  69  66
         }
    +  67  24
             super(stream);
    +  68  24
             tokens = new LinkedList<String>();
    +  69  24
         }
     70  
     
     71   @@ -163,20 +163,20 @@
          */
     76  
         protected boolean addTerm() {
    -  77  91215
             final boolean termAdded = tokens.size() > 0;
    -  78  91215
             if (termAdded) {
    -  79  55932
                 final String term = tokens.pop();
    -  80  55932
                 clearAttributes();
    -  81  55932
                 termAtt.append(term);
    +  77  30677
             final boolean termAdded = tokens.size() > 0;
    +  78  30677
             if (termAdded) {
    +  79  18698
                 final String term = tokens.pop();
    +  80  18698
                 clearAttributes();
    +  81  18698
                 termAtt.append(term);
     82  
             }
    -  83  91215
             return termAdded;
    +  83  30677
             return termAdded;
     84  
         }
     85  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AlphaNumericTokenizer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AlphaNumericTokenizer.html index 4f3899ccb..1fc258f7b 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AlphaNumericTokenizer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.AlphaNumericTokenizer.html @@ -95,8 +95,8 @@
          */
     39  
         public AlphaNumericTokenizer(Version matchVersion, Reader in) {
    -  40  51
             super(matchVersion, in);
    -  41  51
         }
    +  40  19
             super(matchVersion, in);
    +  41  19
         }
     42  
     
     43   @@ -135,13 +135,13 @@
         @Override
     61  
         protected boolean isTokenChar(int c) {
    -  62  22278
             return Character.isLetter(c) || Character.isDigit(c);
    +  62  7775
             return Character.isLetter(c) || Character.isDigit(c);
     63  
         }
     64  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.DependencySimilarity.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.DependencySimilarity.html index 9058e658b..8a0a4b0c5 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.DependencySimilarity.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.DependencySimilarity.html @@ -117,6 +117,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.FieldAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.FieldAnalyzer.html index d75ea0597..47eb48415 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.FieldAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.FieldAnalyzer.html @@ -115,9 +115,9 @@
          * @param version the Lucene version
     49  
          */
    -  50  57
         public FieldAnalyzer(Version version) {
    -  51  57
             this.version = version;
    -  52  57
         }
    +  50  12
         public FieldAnalyzer(Version version) {
    +  51  12
             this.version = version;
    +  52  12
         }
     53  
     
     54   @@ -138,13 +138,13 @@
         @Override
     62  
         protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    -  63  3
             final Tokenizer source = new AlphaNumericTokenizer(version, reader);
    +  63  1
             final Tokenizer source = new AlphaNumericTokenizer(version, reader);
     64  
     
    -  65  3
             TokenStream stream = source;
    +  65  1
             TokenStream stream = source;
     66  
     
    -  67  3
             stream = new WordDelimiterFilter(stream,
    +  67  1
             stream = new WordDelimiterFilter(stream,
     68  
                     WordDelimiterFilter.CATENATE_WORDS
     69   @@ -161,17 +161,17 @@
                     | WordDelimiterFilter.STEM_ENGLISH_POSSESSIVE, null);
     75  
     
    -  76  3
             stream = new LowerCaseFilter(version, stream);
    -  77  3
             stream = new StopFilter(version, stream, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
    +  76  1
             stream = new LowerCaseFilter(version, stream);
    +  77  1
             stream = new StopFilter(version, stream, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
     78  
     
    -  79  3
             return new TokenStreamComponents(source, stream);
    +  79  1
             return new TokenStreamComponents(source, stream);
     80  
         }
     81  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.LuceneUtils.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.LuceneUtils.html index 2e1ae1d79..c9ed2f340 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.LuceneUtils.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.LuceneUtils.html @@ -111,15 +111,15 @@
                 final CharSequence text) {
     48  
     
    -  49  2487
             if (text == null || buf == null) {
    -  50  3
                 return;
    +  49  869
             if (text == null || buf == null) {
    +  50  1
                 return;
     51  
             }
     52  
     
    -  53  25440
             for (int i = 0; i < text.length(); i++) {
    -  54  22956
                 final char c = text.charAt(i);
    -  55  22956
                 switch (c) {
    +  53  8869
             for (int i = 0; i < text.length(); i++) {
    +  54  8001
                 final char c = text.charAt(i);
    +  55  8001
                 switch (c) {
     56  
                     case '+':
     57   @@ -156,17 +156,17 @@
                     case ':':
     73  
                     case '\\': //it is supposed to fall through here
    -  74  504
                         buf.append('\\');
    +  74  176
                         buf.append('\\');
     75  
                     default:
    -  76  22956
                         buf.append(c);
    +  76  8001
                         buf.append(c);
     77  
                         break;
     78  
                 }
     79  
             }
    -  80  2484
         }
    +  80  868
         }
     81  
     
     82   @@ -187,27 +187,27 @@
         public static String escapeLuceneQuery(final CharSequence text) {
     90  
     
    -  91  2448
             if (text == null) {
    -  92  3
                 return null;
    +  91  856
             if (text == null) {
    +  92  1
                 return null;
     93  
             }
     94  
     
    -  95  2445
             int size = text.length();
    -  96  2445
             size = size >> 1;
    -  97  2445
             final StringBuilder buf = new StringBuilder(size);
    +  95  855
             int size = text.length();
    +  96  855
             size = size >> 1;
    +  97  855
             final StringBuilder buf = new StringBuilder(size);
     98  
     
    -  99  2445
             appendEscapedLuceneQuery(buf, text);
    +  99  855
             appendEscapedLuceneQuery(buf, text);
     100  
     
    -  101  2445
             return buf.toString();
    +  101  855
             return buf.toString();
     102  
         }
     103  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer.html index 688556bf4..01dc62a94 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer.html @@ -121,9 +121,9 @@
          * @param version the Lucene version
     52  
          */
    -  53  60
         public SearchFieldAnalyzer(Version version) {
    -  54  60
             this.version = version;
    -  55  60
         }
    +  53  20
         public SearchFieldAnalyzer(Version version) {
    +  54  20
             this.version = version;
    +  55  20
         }
     56  
     
     57   @@ -144,13 +144,13 @@
         @Override
     65  
         protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    -  66  48
             final Tokenizer source = new AlphaNumericTokenizer(version, reader);
    +  66  18
             final Tokenizer source = new AlphaNumericTokenizer(version, reader);
     67  
     
    -  68  48
             TokenStream stream = source;
    +  68  18
             TokenStream stream = source;
     69  
     
    -  70  48
             stream = new WordDelimiterFilter(stream,
    +  70  18
             stream = new WordDelimiterFilter(stream,
     71  
                     WordDelimiterFilter.GENERATE_WORD_PARTS
     72   @@ -165,14 +165,14 @@
                     | WordDelimiterFilter.STEM_ENGLISH_POSSESSIVE, null);
     77  
     
    -  78  48
             stream = new LowerCaseFilter(version, stream);
    -  79  48
             stream = new UrlTokenizingFilter(stream);
    -  80  48
             concatenatingFilter = new TokenPairConcatenatingFilter(stream);
    -  81  48
             stream = concatenatingFilter;
    -  82  48
             stream = new StopFilter(version, stream, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
    +  78  18
             stream = new LowerCaseFilter(version, stream);
    +  79  18
             stream = new UrlTokenizingFilter(stream);
    +  80  18
             concatenatingFilter = new TokenPairConcatenatingFilter(stream);
    +  81  18
             stream = concatenatingFilter;
    +  82  18
             stream = new StopFilter(version, stream, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
     83  
     
    -  84  48
             return new TokenStreamComponents(source, stream);
    +  84  18
             return new TokenStreamComponents(source, stream);
     85  
         }
     86   @@ -191,15 +191,15 @@
          */
     93  
         public void clear() {
    -  94  228
             if (concatenatingFilter != null) {
    -  95  228
                 concatenatingFilter.clear();
    +  94  2
             if (concatenatingFilter != null) {
    +  95  2
                 concatenatingFilter.clear();
     96  
             }
    -  97  228
         }
    +  97  2
         }
     98  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchVersionAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchVersionAnalyzer.html index 6cb3eb3a1..c0bf0a7b5 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchVersionAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.SearchVersionAnalyzer.html @@ -159,6 +159,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.TokenPairConcatenatingFilter.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.TokenPairConcatenatingFilter.html index 76193fc47..f8461a672 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.TokenPairConcatenatingFilter.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.TokenPairConcatenatingFilter.html @@ -95,7 +95,7 @@
          * The char term attribute.
     39  
          */
    -  40  48
         private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
    +  40  18
         private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     41  
         /**
     42   @@ -126,9 +126,9 @@
          */
     55  
         public TokenPairConcatenatingFilter(TokenStream stream) {
    -  56  48
             super(stream);
    -  57  48
             words = new LinkedList<String>();
    -  58  48
         }
    +  56  18
             super(stream);
    +  57  18
             words = new LinkedList<String>();
    +  58  18
         }
     59  
     
     60   @@ -155,35 +155,35 @@
     
     71  
             //collect all the terms into the words collection
    -  72  15744
             while (input.incrementToken()) {
    -  73  4470
                 final String word = new String(termAtt.buffer(), 0, termAtt.length());
    -  74  4470
                 words.add(word);
    -  75  4470
             }
    +  72  5526
             while (input.incrementToken()) {
    +  73  1550
                 final String word = new String(termAtt.buffer(), 0, termAtt.length());
    +  74  1550
                 words.add(word);
    +  75  1550
             }
     76  
     
     77  
             //if we have a previousTerm - write it out as its own token concatenated
     78  
             // with the current word (if one is available).
    -  79  11274
             if (previousWord != null && words.size() > 0) {
    -  80  4236
                 final String word = words.getFirst();
    -  81  4236
                 clearAttributes();
    -  82  4236
                 termAtt.append(previousWord).append(word);
    -  83  4236
                 previousWord = null;
    -  84  4236
                 return true;
    +  79  3976
             if (previousWord != null && words.size() > 0) {
    +  80  1530
                 final String word = words.getFirst();
    +  81  1530
                 clearAttributes();
    +  82  1530
                 termAtt.append(previousWord).append(word);
    +  83  1530
                 previousWord = null;
    +  84  1530
                 return true;
     85  
             }
     86  
             //if we have words, write it out as a single token
    -  87  7038
             if (words.size() > 0) {
    -  88  4470
                 final String word = words.removeFirst();
    -  89  4470
                 clearAttributes();
    -  90  4470
                 termAtt.append(word);
    -  91  4470
                 previousWord = word;
    -  92  4470
                 return true;
    +  87  2446
             if (words.size() > 0) {
    +  88  1550
                 final String word = words.removeFirst();
    +  89  1550
                 clearAttributes();
    +  90  1550
                 termAtt.append(word);
    +  91  1550
                 previousWord = word;
    +  92  1550
                 return true;
     93  
             }
    -  94  2568
             return false;
    +  94  896
             return false;
     95  
         }
     96   @@ -202,13 +202,13 @@
          */
     103  
         public void clear() {
    -  104  228
             previousWord = null;
    -  105  228
             words.clear();
    -  106  228
         }
    +  104  2
             previousWord = null;
    +  105  2
             words.clear();
    +  106  2
         }
     107  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.UrlTokenizingFilter.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.UrlTokenizingFilter.html index 35983c715..c92d8ed3a 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.UrlTokenizingFilter.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.UrlTokenizingFilter.html @@ -109,8 +109,8 @@
          */
     46  
         public UrlTokenizingFilter(TokenStream stream) {
    -  47  66
             super(stream);
    -  48  66
         }
    +  47  24
             super(stream);
    +  48  24
         }
     49  
     
     50   @@ -133,22 +133,22 @@
         @Override
     59  
         public boolean incrementToken() throws IOException {
    -  60  91474
             final LinkedList<String> tokens = getTokens();
    -  61  91474
             final CharTermAttribute termAtt = getTermAtt();
    -  62  91474
             if (tokens.size() == 0 && input.incrementToken()) {
    -  63  55929
                 final String text = new String(termAtt.buffer(), 0, termAtt.length());
    -  64  55929
                 if (UrlStringUtils.containsUrl(text)) {
    -  65  6
                     final String[] parts = text.split("\\s");
    -  66  12
                     for (String part : parts) {
    -  67  6
                         if (UrlStringUtils.isUrl(part)) {
    +  60  30745
             final LinkedList<String> tokens = getTokens();
    +  61  30745
             final CharTermAttribute termAtt = getTermAtt();
    +  62  30745
             if (tokens.size() == 0 && input.incrementToken()) {
    +  63  18697
                 final String text = new String(termAtt.buffer(), 0, termAtt.length());
    +  64  18697
                 if (UrlStringUtils.containsUrl(text)) {
    +  65  2
                     final String[] parts = text.split("\\s");
    +  66  4
                     for (String part : parts) {
    +  67  2
                         if (UrlStringUtils.isUrl(part)) {
     68  
                             try {
    -  69  6
                                 final List<String> data = UrlStringUtils.extractImportantUrlData(part);
    -  70  6
                                 tokens.addAll(data);
    +  69  2
                                 final List<String> data = UrlStringUtils.extractImportantUrlData(part);
    +  70  2
                                 tokens.addAll(data);
     71  0
                             } catch (MalformedURLException ex) {
     72  0
                                 Logger.getLogger(UrlTokenizingFilter.class.getName()).log(Level.INFO, "error parsing " + part, ex);
     73  0
                                 tokens.add(part);
    -  74  6
                             }
    +  74  2
                             }
     75  
                         } else {
     76  0
                             tokens.add(part);
    @@ -156,19 +156,19 @@
                         }
     78  
                     }
    -  79  6
                 } else {
    -  80  55923
                     tokens.add(text);
    +  79  2
                 } else {
    +  80  18695
                     tokens.add(text);
     81  
                 }
     82  
             }
    -  83  91215
             return addTerm();
    +  83  30677
             return addTerm();
     84  
         }
     85  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionAnalyzer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionAnalyzer.html index d2a36cbc9..282c7bd5c 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionAnalyzer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionAnalyzer.html @@ -156,6 +156,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionTokenizingFilter.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionTokenizingFilter.html index 4a6596348..f2e6a4694 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionTokenizingFilter.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.lucene.VersionTokenizingFilter.html @@ -197,6 +197,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CorruptDatabaseException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CorruptDatabaseException.html index 558ca9e2e..9676555b3 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CorruptDatabaseException.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CorruptDatabaseException.html @@ -119,6 +119,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CveDB.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CveDB.html index 71b144a9e..8ab0f8695 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CveDB.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.CveDB.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    CveDB
    46%
    147/319
    51%
    48/94
    5
    CveDB
    46%
    148/319
    53%
    50/94
    5
     
    @@ -119,7 +119,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     51  
      */
    -  52  33
     public class CveDB {
    +  52  14
     public class CveDB {
     53  
     
     54   @@ -137,7 +137,7 @@  60  
          */
     61   -
         public static final String DB_SCHEMA_VERSION = "2.5";
    +
         public static final String DB_SCHEMA_VERSION = "2.6";
     62  
         /**
     63   @@ -344,824 +344,802 @@
                 justification = "Yes, I know... Blank password.")
     164  
         public void open() throws IOException, SQLException, DatabaseException, ClassNotFoundException {
    -  165   -
             /*
    -  166   -
              * TODO - make it so we can exteralize the database (lucene index is a problem), could I store it as a blob
    -  167   -
              *        and just download it when needed?
    -  168   -
              */
    -  169   -
     //        String dbDriver = Settings.getString(Settings.KEYS.DB_DRIVER);
    -  170   -
     //        String dbConnStr = Settings.getString(Settings.KEYS.DB_CONNECTION_STRING);
    -  171   -
     //        if (dbDriver != null && dbConnStr != null) {
    -  172   -
     //            Class.forName(dbDriver);
    -  173   -
     //            conn = DriverManager.getConnection(dbConnStr);
    +  165  14
             final String fileName = CveDB.getDataDirectory().getCanonicalPath();
    +  166  14
             final File f = new File(fileName, "cve." + DB_SCHEMA_VERSION);
    +  167  14
             final File check = new File(f.getAbsolutePath() + ".h2.db");
    +  168  14
             final boolean createTables = !check.exists();
    +  169  14
             final String connStr = String.format("jdbc:h2:file:%s;AUTO_SERVER=TRUE", f.getAbsolutePath());
    +  170  14
             Class.forName("org.h2.Driver");
    +  171  14
             conn = DriverManager.getConnection(connStr, "sa", "");
    +  172  14
             if (createTables) {
    +  173  0
                 createTables();
     174   -
     //        } else { //use the embeded version
    -  175  33
             final String fileName = CveDB.getDataDirectory().getCanonicalPath();
    -  176  33
             final File f = new File(fileName, "cve." + DB_SCHEMA_VERSION);
    -  177  33
             final File check = new File(f.getAbsolutePath() + ".h2.db");
    -  178  33
             final boolean createTables = !check.exists();
    -  179  33
             final String connStr = "jdbc:h2:file:" + f.getAbsolutePath();
    -  180  33
             Class.forName("org.h2.Driver");
    -  181  33
             conn = DriverManager.getConnection(connStr, "sa", "");
    -  182  33
             if (createTables) {
    -  183  0
                 createTables();
    -  184  
             }
    +  175  14
         }
    +  176   +
     
    +  177   +
         /**
    +  178   +
          * Commits all completed transactions.
    +  179   +
          *
    +  180   +
          * @throws SQLException thrown if a SQL Exception occurs
    +  181   +
          */
    +  182   +
         public void commit() throws SQLException {
    +  183  1
             if (conn != null) {
    +  184  1
                 conn.commit();
     185   -
     //        }
    -  186  33
         }
    +
             }
    +  186  1
         }
     187  
     
     188  
         /**
     189   -
          * Commits all completed transactions.
    +
          * Cleans up the object and ensures that "close" has been called.
     190  
          *
     191   -
          * @throws SQLException thrown if a SQL Exception occurs
    +
          * @throws Throwable thrown if there is a problem
     192  
          */
     193   -
         public void commit() throws SQLException {
    -  194  3
             if (conn != null) {
    -  195  3
                 conn.commit();
    -  196   -
             }
    -  197  3
         }
    +
         @Override
    +  194   +
         protected void finalize() throws Throwable {
    +  195  6
             close();
    +  196  6
             super.finalize(); //not necessary if extending Object.
    +  197  6
         }
     198  
     
     199  
         /**
     200   -
          * Cleans up the object and ensures that "close" has been called.
    -  201   -
          *
    -  202   -
          * @throws Throwable thrown if there is a problem
    -  203   -
          */
    -  204   -
         @Override
    -  205   -
         protected void finalize() throws Throwable {
    -  206  15
             close();
    -  207  15
             super.finalize(); //not necessary if extending Object.
    -  208  15
         }
    -  209   -
     
    -  210   -
         /**
    -  211  
          * Closes the DB4O database. Close should be called on this object when it
    -  212   +  201  
          * is done being used.
    -  213   +  202  
          */
    -  214   +  203  
         public void close() {
    -  215  48
             if (conn != null) {
    -  216   +  204  20
             if (conn != null) {
    +  205  
                 try {
    -  217  33
                     conn.close();
    -  218  0
                 } catch (SQLException ex) {
    -  219  0
                     final String msg = "There was an error attempting to close the CveDB, see the log for more details.";
    -  220  0
                     Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, msg, ex);
    -  221  0
                     Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex);
    -  222  33
                 }
    -  223  33
                 conn = null;
    -  224   +  206  14
                     conn.close();
    +  207  0
                 } catch (SQLException ex) {
    +  208  0
                     final String msg = "There was an error attempting to close the CveDB, see the log for more details.";
    +  209  0
                     Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, msg, ex);
    +  210  0
                     Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex);
    +  211  14
                 }
    +  212  14
                 conn = null;
    +  213  
             }
    -  225  48
         }
    -  226   +  214  20
         }
    +  215  
     
    -  227   +  216  
         /**
    -  228   +  217  
          * Searches the CPE entries in the database and retrieves all entries for a
    -  229   +  218  
          * given vendor and product combination. The returned list will include all
    -  230   +  219  
          * versions of the product that are registered in the NVD CVE data.
    -  231   +  220  
          *
    -  232   +  221  
          * @param vendor the identified vendor name of the dependency being analyzed
    -  233   +  222  
          * @param product the identified name of the product of the dependency being
    -  234   +  223  
          * analyzed
    -  235   +  224  
          * @return a set of vulnerable software
    -  236   +  225  
          */
    -  237   +  226  
         public Set<VulnerableSoftware> getCPEs(String vendor, String product) {
    -  238  42
             final Set<VulnerableSoftware> cpe = new HashSet<VulnerableSoftware>();
    -  239  42
             ResultSet rs = null;
    -  240  42
             PreparedStatement ps = null;
    -  241   +  227  28
             final Set<VulnerableSoftware> cpe = new HashSet<VulnerableSoftware>();
    +  228  28
             ResultSet rs = null;
    +  229  28
             PreparedStatement ps = null;
    +  230  
             try {
    -  242  42
                 ps = conn.prepareStatement(SELECT_CPE_ENTRIES);
    -  243  42
                 ps.setString(1, vendor);
    -  244  42
                 ps.setString(2, product);
    -  245  42
                 rs = ps.executeQuery();
    -  246   +  231  28
                 ps = conn.prepareStatement(SELECT_CPE_ENTRIES);
    +  232  28
                 ps.setString(1, vendor);
    +  233  28
                 ps.setString(2, product);
    +  234  28
                 rs = ps.executeQuery();
    +  235  
     
    -  247  1088
                 while (rs.next()) {
    -  248  1046
                     final VulnerableSoftware vs = new VulnerableSoftware();
    -  249  1046
                     vs.setCpe(rs.getString(1));
    -  250  1046
                     cpe.add(vs);
    -  251  1046
                 }
    -  252  0
             } catch (SQLException ex) {
    -  253  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex);
    -  254   +  236  1888
                 while (rs.next()) {
    +  237  1860
                     final VulnerableSoftware vs = new VulnerableSoftware();
    +  238  1860
                     vs.setCpe(rs.getString(1));
    +  239  1860
                     cpe.add(vs);
    +  240  1860
                 }
    +  241  0
             } catch (SQLException ex) {
    +  242  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex);
    +  243  
             } finally {
    -  255  42
                 closeResultSet(rs);
    -  256  42
                 closeStatement(ps);
    -  257  42
             }
    -  258  42
             return cpe;
    -  259   +  244  28
                 closeResultSet(rs);
    +  245  28
                 closeStatement(ps);
    +  246  28
             }
    +  247  28
             return cpe;
    +  248  
         }
    -  260   +  249  
     
    -  261   +  250  
         /**
    -  262   +  251  
          * Retrieves the vulnerabilities associated with the specified CPE.
    -  263   +  252  
          *
    -  264   +  253  
          * @param cpeStr the CPE name
    -  265   +  254  
          * @return a list of Vulnerabilities
    -  266   +  255  
          * @throws DatabaseException thrown if there is an exception retrieving data
    -  267   +  256  
          */
    -  268   +  257  
         public List<Vulnerability> getVulnerabilities(String cpeStr) throws DatabaseException {
    -  269  3
             ResultSet rs = null;
    -  270  3
             final VulnerableSoftware cpe = new VulnerableSoftware();
    -  271   +  258  1
             ResultSet rs = null;
    +  259  1
             final VulnerableSoftware cpe = new VulnerableSoftware();
    +  260  
             try {
    -  272  3
                 cpe.parseName(cpeStr);
    -  273  0
             } catch (UnsupportedEncodingException ex) {
    -  274  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex);
    -  275  3
             }
    -  276  3
             final DependencyVersion detectedVersion = parseDependencyVersion(cpe);
    -  277  3
             final List<Vulnerability> vulnerabilities = new ArrayList<Vulnerability>();
    -  278   +  261  1
                 cpe.parseName(cpeStr);
    +  262  0
             } catch (UnsupportedEncodingException ex) {
    +  263  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex);
    +  264  1
             }
    +  265  1
             final DependencyVersion detectedVersion = parseDependencyVersion(cpe);
    +  266  1
             final List<Vulnerability> vulnerabilities = new ArrayList<Vulnerability>();
    +  267  
     
    -  279   +  268  
             PreparedStatement ps;
    -  280  3
             final HashSet<String> cveEntries = new HashSet<String>();
    +  269  1
             final HashSet<String> cveEntries = new HashSet<String>();
    +  270   +
             try {
    +  271  1
                 ps = conn.prepareStatement(SELECT_CVE_FROM_SOFTWARE);
    +  272  1
                 ps.setString(1, cpe.getVendor());
    +  273  1
                 ps.setString(2, cpe.getProduct());
    +  274  1
                 rs = ps.executeQuery();
    +  275  634
                 while (rs.next()) {
    +  276  633
                     final String cveId = rs.getString(1);
    +  277  633
                     final String cpeId = rs.getString(2);
    +  278  633
                     final String previous = rs.getString(3);
    +  279  633
                     if (!cveEntries.contains(cveId) && isAffected(cpe.getVendor(), cpe.getProduct(), detectedVersion, cpeId, previous)) {
    +  280  18
                         cveEntries.add(cveId);
     281   -
             try {
    -  282  3
                 ps = conn.prepareStatement(SELECT_CVE_FROM_SOFTWARE);
    -  283  3
                 ps.setString(1, cpe.getVendor());
    -  284  3
                 ps.setString(2, cpe.getProduct());
    -  285  3
                 rs = ps.executeQuery();
    -  286  1901
                 while (rs.next()) {
    -  287  1898
                     final String cveId = rs.getString(1);
    -  288  1898
                     final String cpeId = rs.getString(2);
    -  289  1898
                     final String previous = rs.getString(3);
    -  290  1898
                     if (!cveEntries.contains(cveId) && isAffected(cpe.getVendor(), cpe.getProduct(), detectedVersion, cpeId, previous)) {
    -  291  54
                         cveEntries.add(cveId);
    +
                     }
    +  282  633
                 }
    +  283  1
                 closeResultSet(rs);
    +  284  1
                 closeStatement(ps);
    +  285  1
                 for (String cve : cveEntries) {
    +  286  18
                     final Vulnerability v = getVulnerability(cve);
    +  287  18
                     vulnerabilities.add(v);
    +  288  18
                 }
    +  289   +
     
    +  290  0
             } catch (SQLException ex) {
    +  291  0
                 throw new DatabaseException("Exception retrieving vulnerability for " + cpeStr, ex);
     292   -
                     }
    -  293  1898
                 }
    -  294  3
                 closeResultSet(rs);
    -  295  3
                 closeStatement(ps);
    -  296  3
                 for (String cve : cveEntries) {
    -  297  54
                     final Vulnerability v = getVulnerability(cve);
    -  298  54
                     vulnerabilities.add(v);
    -  299  54
                 }
    -  300   -
     
    -  301  0
             } catch (SQLException ex) {
    -  302  0
                 throw new DatabaseException("Exception retrieving vulnerability for " + cpeStr, ex);
    -  303  
             } finally {
    -  304  3
                 closeResultSet(rs);
    -  305  3
             }
    -  306  3
             return vulnerabilities;
    -  307   +  293  1
                 closeResultSet(rs);
    +  294  1
             }
    +  295  1
             return vulnerabilities;
    +  296  
         }
    -  308   +  297  
     
    -  309   +  298  
         /**
    -  310   +  299  
          * Gets a vulnerability for the provided CVE.
    -  311   +  300  
          *
    -  312   +  301  
          * @param cve the CVE to lookup
    -  313   +  302  
          * @return a vulnerability object
    -  314   +  303  
          * @throws DatabaseException if an exception occurs
    -  315   +  304  
          */
    -  316   +  305  
         private Vulnerability getVulnerability(String cve) throws DatabaseException {
    -  317  54
             PreparedStatement psV = null;
    -  318  54
             PreparedStatement psR = null;
    -  319  54
             PreparedStatement psS = null;
    -  320  54
             ResultSet rsV = null;
    -  321  54
             ResultSet rsR = null;
    -  322  54
             ResultSet rsS = null;
    -  323  54
             Vulnerability vuln = null;
    -  324   +  306  18
             PreparedStatement psV = null;
    +  307  18
             PreparedStatement psR = null;
    +  308  18
             PreparedStatement psS = null;
    +  309  18
             ResultSet rsV = null;
    +  310  18
             ResultSet rsR = null;
    +  311  18
             ResultSet rsS = null;
    +  312  18
             Vulnerability vuln = null;
    +  313  
             try {
    -  325  54
                 psV = conn.prepareStatement(SELECT_VULNERABILITY);
    -  326  54
                 psV.setString(1, cve);
    -  327  54
                 rsV = psV.executeQuery();
    -  328  54
                 if (rsV.next()) {
    -  329  54
                     vuln = new Vulnerability();
    -  330  54
                     vuln.setName(cve);
    -  331  54
                     vuln.setDescription(rsV.getString(2));
    -  332  54
                     String cwe = rsV.getString(3);
    -  333  54
                     if (cwe != null) {
    -  334  51
                         final String name = CweDB.getCweName(cwe);
    -  335  51
                         if (name != null) {
    -  336  48
                             cwe += " " + name;
    +  314  18
                 psV = conn.prepareStatement(SELECT_VULNERABILITY);
    +  315  18
                 psV.setString(1, cve);
    +  316  18
                 rsV = psV.executeQuery();
    +  317  18
                 if (rsV.next()) {
    +  318  18
                     vuln = new Vulnerability();
    +  319  18
                     vuln.setName(cve);
    +  320  18
                     vuln.setDescription(rsV.getString(2));
    +  321  18
                     String cwe = rsV.getString(3);
    +  322  18
                     if (cwe != null) {
    +  323  17
                         final String name = CweDB.getCweName(cwe);
    +  324  17
                         if (name != null) {
    +  325  16
                             cwe += " " + name;
    +  326   +
                         }
    +  327   +
                     }
    +  328  18
                     final int cveId = rsV.getInt(1);
    +  329  18
                     vuln.setCwe(cwe);
    +  330  18
                     vuln.setCvssScore(rsV.getFloat(4));
    +  331  18
                     vuln.setCvssAccessVector(rsV.getString(5));
    +  332  18
                     vuln.setCvssAccessComplexity(rsV.getString(6));
    +  333  18
                     vuln.setCvssAuthentication(rsV.getString(7));
    +  334  18
                     vuln.setCvssConfidentialityImpact(rsV.getString(8));
    +  335  18
                     vuln.setCvssIntegrityImpact(rsV.getString(9));
    +  336  18
                     vuln.setCvssAvailabilityImpact(rsV.getString(10));
     337   -
                         }
    -  338   -
                     }
    -  339  54
                     final int cveId = rsV.getInt(1);
    -  340  54
                     vuln.setCwe(cwe);
    -  341  54
                     vuln.setCvssScore(rsV.getFloat(4));
    -  342  54
                     vuln.setCvssAccessVector(rsV.getString(5));
    -  343  54
                     vuln.setCvssAccessComplexity(rsV.getString(6));
    -  344  54
                     vuln.setCvssAuthentication(rsV.getString(7));
    -  345  54
                     vuln.setCvssConfidentialityImpact(rsV.getString(8));
    -  346  54
                     vuln.setCvssIntegrityImpact(rsV.getString(9));
    -  347  54
                     vuln.setCvssAvailabilityImpact(rsV.getString(10));
    -  348  
     
    -  349  54
                     psR = conn.prepareStatement(SELECT_REFERENCE);
    -  350  54
                     psR.setInt(1, cveId);
    -  351  54
                     rsR = psR.executeQuery();
    -  352  312
                     while (rsR.next()) {
    -  353  258
                         vuln.addReference(rsR.getString(1), rsR.getString(2), rsR.getString(3));
    -  354   +  338  18
                     psR = conn.prepareStatement(SELECT_REFERENCE);
    +  339  18
                     psR.setInt(1, cveId);
    +  340  18
                     rsR = psR.executeQuery();
    +  341  104
                     while (rsR.next()) {
    +  342  86
                         vuln.addReference(rsR.getString(1), rsR.getString(2), rsR.getString(3));
    +  343  
                     }
    -  355  54
                     psS = conn.prepareStatement(SELECT_SOFTWARE);
    -  356  54
                     psS.setInt(1, cveId);
    -  357  54
                     rsS = psS.executeQuery();
    -  358  1881
                     while (rsS.next()) {
    -  359  1827
                         final String cpe = rsS.getString(1);
    -  360  1827
                         final String prevVersion = rsS.getString(2);
    -  361  1827
                         if (prevVersion == null) {
    -  362  1794
                             vuln.addVulnerableSoftware(cpe);
    -  363   +  344  18
                     psS = conn.prepareStatement(SELECT_SOFTWARE);
    +  345  18
                     psS.setInt(1, cveId);
    +  346  18
                     rsS = psS.executeQuery();
    +  347  627
                     while (rsS.next()) {
    +  348  609
                         final String cpe = rsS.getString(1);
    +  349  609
                         final String prevVersion = rsS.getString(2);
    +  350  609
                         if (prevVersion == null) {
    +  351  598
                             vuln.addVulnerableSoftware(cpe);
    +  352  
                         } else {
    -  364  33
                             vuln.addVulnerableSoftware(cpe, prevVersion);
    -  365   +  353  11
                             vuln.addVulnerableSoftware(cpe, prevVersion);
    +  354  
                         }
    -  366  1827
                     }
    -  367   +  355  609
                     }
    +  356  
                 }
    -  368  0
             } catch (SQLException ex) {
    -  369  0
                 throw new DatabaseException("Error retrieving " + cve, ex);
    -  370   +  357  0
             } catch (SQLException ex) {
    +  358  0
                 throw new DatabaseException("Error retrieving " + cve, ex);
    +  359  
             } finally {
    -  371  54
                 closeResultSet(rsV);
    -  372  54
                 closeResultSet(rsR);
    -  373  54
                 closeResultSet(rsS);
    -  374  54
                 closeStatement(psV);
    -  375  54
                 closeStatement(psR);
    -  376  54
                 closeStatement(psS);
    -  377  54
             }
    -  378  54
             return vuln;
    -  379   +  360  18
                 closeResultSet(rsV);
    +  361  18
                 closeResultSet(rsR);
    +  362  18
                 closeResultSet(rsS);
    +  363  18
                 closeStatement(psV);
    +  364  18
                 closeStatement(psR);
    +  365  18
                 closeStatement(psS);
    +  366  18
             }
    +  367  18
             return vuln;
    +  368  
         }
    -  380   +  369  
     
    -  381   +  370  
         /**
    -  382   +  371  
          * Updates the vulnerability within the database. If the vulnerability does
    -  383   +  372  
          * not exist it will be added.
    -  384   +  373  
          *
    -  385   +  374  
          * @param vuln the vulnerability to add to the database
    -  386   +  375  
          * @throws DatabaseException is thrown if the database
    -  387   +  376  
          */
    -  388   +  377  
         public void updateVulnerability(Vulnerability vuln) throws DatabaseException {
    -  389  0
             PreparedStatement selectVulnerabilityId = null;
    -  390  0
             PreparedStatement deleteReferences = null;
    -  391  0
             PreparedStatement deleteSoftware = null;
    -  392  0
             PreparedStatement updateVulnerability = null;
    -  393  0
             PreparedStatement insertVulnerability = null;
    -  394  0
             PreparedStatement insertReference = null;
    -  395  0
             PreparedStatement selectCpeId = null;
    -  396  0
             PreparedStatement insertCpe = null;
    -  397  0
             PreparedStatement insertSoftware = null;
    -  398   +  378  0
             PreparedStatement selectVulnerabilityId = null;
    +  379  0
             PreparedStatement deleteReferences = null;
    +  380  0
             PreparedStatement deleteSoftware = null;
    +  381  0
             PreparedStatement updateVulnerability = null;
    +  382  0
             PreparedStatement insertVulnerability = null;
    +  383  0
             PreparedStatement insertReference = null;
    +  384  0
             PreparedStatement selectCpeId = null;
    +  385  0
             PreparedStatement insertCpe = null;
    +  386  0
             PreparedStatement insertSoftware = null;
    +  387  
     
    -  399   +  388  
             try {
    -  400  0
                 selectVulnerabilityId = conn.prepareStatement(SELECT_VULNERABILITY_ID);
    -  401  0
                 deleteReferences = conn.prepareStatement(DELETE_REFERENCE);
    -  402  0
                 deleteSoftware = conn.prepareStatement(DELETE_SOFTWARE);
    -  403  0
                 updateVulnerability = conn.prepareStatement(UPDATE_VULNERABILITY);
    -  404  0
                 insertVulnerability = conn.prepareStatement(INSERT_VULNERABILITY, Statement.RETURN_GENERATED_KEYS);
    -  405  0
                 insertReference = conn.prepareStatement(INSERT_REFERENCE);
    -  406  0
                 selectCpeId = conn.prepareStatement(SELECT_CPE_ID);
    -  407  0
                 insertCpe = conn.prepareStatement(INSERT_CPE, Statement.RETURN_GENERATED_KEYS);
    -  408  0
                 insertSoftware = conn.prepareStatement(INSERT_SOFTWARE);
    -  409  0
                 int vulnerabilityId = 0;
    -  410  0
                 selectVulnerabilityId.setString(1, vuln.getName());
    -  411  0
                 ResultSet rs = selectVulnerabilityId.executeQuery();
    -  412  0
                 if (rs.next()) {
    -  413  0
                     vulnerabilityId = rs.getInt(1);
    -  414   +  389  0
                 selectVulnerabilityId = conn.prepareStatement(SELECT_VULNERABILITY_ID);
    +  390  0
                 deleteReferences = conn.prepareStatement(DELETE_REFERENCE);
    +  391  0
                 deleteSoftware = conn.prepareStatement(DELETE_SOFTWARE);
    +  392  0
                 updateVulnerability = conn.prepareStatement(UPDATE_VULNERABILITY);
    +  393  0
                 insertVulnerability = conn.prepareStatement(INSERT_VULNERABILITY, Statement.RETURN_GENERATED_KEYS);
    +  394  0
                 insertReference = conn.prepareStatement(INSERT_REFERENCE);
    +  395  0
                 selectCpeId = conn.prepareStatement(SELECT_CPE_ID);
    +  396  0
                 insertCpe = conn.prepareStatement(INSERT_CPE, Statement.RETURN_GENERATED_KEYS);
    +  397  0
                 insertSoftware = conn.prepareStatement(INSERT_SOFTWARE);
    +  398  0
                 int vulnerabilityId = 0;
    +  399  0
                 selectVulnerabilityId.setString(1, vuln.getName());
    +  400  0
                 ResultSet rs = selectVulnerabilityId.executeQuery();
    +  401  0
                 if (rs.next()) {
    +  402  0
                     vulnerabilityId = rs.getInt(1);
    +  403  
                     // first delete any existing vulnerability info. We don't know what was updated. yes, slower but atm easier.
    -  415  0
                     deleteReferences.setInt(1, vulnerabilityId);
    -  416  0
                     deleteReferences.execute();
    -  417  0
                     deleteSoftware.setInt(1, vulnerabilityId);
    -  418  0
                     deleteSoftware.execute();
    -  419   +  404  0
                     deleteReferences.setInt(1, vulnerabilityId);
    +  405  0
                     deleteReferences.execute();
    +  406  0
                     deleteSoftware.setInt(1, vulnerabilityId);
    +  407  0
                     deleteSoftware.execute();
    +  408  
                 }
    -  420  0
                 closeResultSet(rs);
    -  421  0
                 rs = null;
    -  422  0
                 if (vulnerabilityId != 0) {
    -  423  0
                     updateVulnerability.setString(1, vuln.getDescription());
    -  424  0
                     updateVulnerability.setString(2, vuln.getCwe());
    -  425  0
                     updateVulnerability.setFloat(3, vuln.getCvssScore());
    -  426  0
                     updateVulnerability.setString(4, vuln.getCvssAccessVector());
    -  427  0
                     updateVulnerability.setString(5, vuln.getCvssAccessComplexity());
    -  428  0
                     updateVulnerability.setString(6, vuln.getCvssAuthentication());
    -  429  0
                     updateVulnerability.setString(7, vuln.getCvssConfidentialityImpact());
    -  430  0
                     updateVulnerability.setString(8, vuln.getCvssIntegrityImpact());
    -  431  0
                     updateVulnerability.setString(9, vuln.getCvssAvailabilityImpact());
    -  432  0
                     updateVulnerability.setInt(10, vulnerabilityId);
    -  433  0
                     updateVulnerability.executeUpdate();
    -  434   +  409  0
                 closeResultSet(rs);
    +  410  0
                 rs = null;
    +  411  0
                 if (vulnerabilityId != 0) {
    +  412  0
                     updateVulnerability.setString(1, vuln.getDescription());
    +  413  0
                     updateVulnerability.setString(2, vuln.getCwe());
    +  414  0
                     updateVulnerability.setFloat(3, vuln.getCvssScore());
    +  415  0
                     updateVulnerability.setString(4, vuln.getCvssAccessVector());
    +  416  0
                     updateVulnerability.setString(5, vuln.getCvssAccessComplexity());
    +  417  0
                     updateVulnerability.setString(6, vuln.getCvssAuthentication());
    +  418  0
                     updateVulnerability.setString(7, vuln.getCvssConfidentialityImpact());
    +  419  0
                     updateVulnerability.setString(8, vuln.getCvssIntegrityImpact());
    +  420  0
                     updateVulnerability.setString(9, vuln.getCvssAvailabilityImpact());
    +  421  0
                     updateVulnerability.setInt(10, vulnerabilityId);
    +  422  0
                     updateVulnerability.executeUpdate();
    +  423  
                 } else {
    -  435  0
                     insertVulnerability.setString(1, vuln.getName());
    -  436  0
                     insertVulnerability.setString(2, vuln.getDescription());
    -  437  0
                     insertVulnerability.setString(3, vuln.getCwe());
    -  438  0
                     insertVulnerability.setFloat(4, vuln.getCvssScore());
    -  439  0
                     insertVulnerability.setString(5, vuln.getCvssAccessVector());
    -  440  0
                     insertVulnerability.setString(6, vuln.getCvssAccessComplexity());
    -  441  0
                     insertVulnerability.setString(7, vuln.getCvssAuthentication());
    -  442  0
                     insertVulnerability.setString(8, vuln.getCvssConfidentialityImpact());
    -  443  0
                     insertVulnerability.setString(9, vuln.getCvssIntegrityImpact());
    -  444  0
                     insertVulnerability.setString(10, vuln.getCvssAvailabilityImpact());
    -  445  0
                     insertVulnerability.execute();
    +  424  0
                     insertVulnerability.setString(1, vuln.getName());
    +  425  0
                     insertVulnerability.setString(2, vuln.getDescription());
    +  426  0
                     insertVulnerability.setString(3, vuln.getCwe());
    +  427  0
                     insertVulnerability.setFloat(4, vuln.getCvssScore());
    +  428  0
                     insertVulnerability.setString(5, vuln.getCvssAccessVector());
    +  429  0
                     insertVulnerability.setString(6, vuln.getCvssAccessComplexity());
    +  430  0
                     insertVulnerability.setString(7, vuln.getCvssAuthentication());
    +  431  0
                     insertVulnerability.setString(8, vuln.getCvssConfidentialityImpact());
    +  432  0
                     insertVulnerability.setString(9, vuln.getCvssIntegrityImpact());
    +  433  0
                     insertVulnerability.setString(10, vuln.getCvssAvailabilityImpact());
    +  434  0
                     insertVulnerability.execute();
    +  435   +
                     try {
    +  436  0
                         rs = insertVulnerability.getGeneratedKeys();
    +  437  0
                         rs.next();
    +  438  0
                         vulnerabilityId = rs.getInt(1);
    +  439  0
                     } catch (SQLException ex) {
    +  440  0
                         final String msg = String.format("Unable to retrieve id for new vulnerability for '%s'", vuln.getName());
    +  441  0
                         throw new DatabaseException(msg, ex);
    +  442   +
                     } finally {
    +  443  0
                         closeResultSet(rs);
    +  444  0
                         rs = null;
    +  445  0
                     }
     446   -
                     try {
    -  447  0
                         rs = insertVulnerability.getGeneratedKeys();
    -  448  0
                         rs.next();
    -  449  0
                         vulnerabilityId = rs.getInt(1);
    -  450  0
                     } catch (SQLException ex) {
    -  451  0
                         final String msg = String.format("Unable to retrieve id for new vulnerability for '%s'", vuln.getName());
    -  452  0
                         throw new DatabaseException(msg, ex);
    +
                 }
    +  447  0
                 insertReference.setInt(1, vulnerabilityId);
    +  448  0
                 for (Reference r : vuln.getReferences()) {
    +  449  0
                     insertReference.setString(2, r.getName());
    +  450  0
                     insertReference.setString(3, r.getUrl());
    +  451  0
                     insertReference.setString(4, r.getSource());
    +  452  0
                     insertReference.execute();
     453   -
                     } finally {
    -  454  0
                         closeResultSet(rs);
    -  455  0
                         rs = null;
    -  456  0
                     }
    +
                 }
    +  454  0
                 for (VulnerableSoftware s : vuln.getVulnerableSoftware()) {
    +  455  0
                     int cpeProductId = 0;
    +  456  0
                     selectCpeId.setString(1, s.getName());
     457   -
                 }
    -  458  0
                 insertReference.setInt(1, vulnerabilityId);
    -  459  0
                 for (Reference r : vuln.getReferences()) {
    -  460  0
                     insertReference.setString(2, r.getName());
    -  461  0
                     insertReference.setString(3, r.getUrl());
    -  462  0
                     insertReference.setString(4, r.getSource());
    -  463  0
                     insertReference.execute();
    -  464   -
                 }
    -  465  0
                 for (VulnerableSoftware s : vuln.getVulnerableSoftware()) {
    -  466  0
                     int cpeProductId = 0;
    -  467  0
                     selectCpeId.setString(1, s.getName());
    -  468  
                     try {
    -  469  0
                         rs = selectCpeId.executeQuery();
    -  470  0
                         if (rs.next()) {
    -  471  0
                             cpeProductId = rs.getInt(1);
    -  472   +  458  0
                         rs = selectCpeId.executeQuery();
    +  459  0
                         if (rs.next()) {
    +  460  0
                             cpeProductId = rs.getInt(1);
    +  461  
                         }
    -  473  0
                     } catch (SQLException ex) {
    -  474  0
                         throw new DatabaseException("Unable to get primary key for new cpe: " + s.getName(), ex);
    -  475   +  462  0
                     } catch (SQLException ex) {
    +  463  0
                         throw new DatabaseException("Unable to get primary key for new cpe: " + s.getName(), ex);
    +  464  
                     } finally {
    -  476  0
                         closeResultSet(rs);
    -  477  0
                         rs = null;
    -  478  0
                     }
    +  465  0
                         closeResultSet(rs);
    +  466  0
                         rs = null;
    +  467  0
                     }
    +  468   +
     
    +  469  0
                     if (cpeProductId == 0) {
    +  470  0
                         insertCpe.setString(1, s.getName());
    +  471  0
                         insertCpe.setString(2, s.getVendor());
    +  472  0
                         insertCpe.setString(3, s.getProduct());
    +  473  0
                         insertCpe.executeUpdate();
    +  474  0
                         cpeProductId = getGeneratedKey(insertCpe);
    +  475   +
                     }
    +  476  0
                     if (cpeProductId == 0) {
    +  477  0
                         throw new DatabaseException("Unable to retrieve cpeProductId - no data returned");
    +  478   +
                     }
     479  
     
    -  480  0
                     if (cpeProductId == 0) {
    -  481  0
                         insertCpe.setString(1, s.getName());
    -  482  0
                         insertCpe.setString(2, s.getVendor());
    -  483  0
                         insertCpe.setString(3, s.getProduct());
    -  484  0
                         insertCpe.executeUpdate();
    -  485  0
                         cpeProductId = getGeneratedKey(insertCpe);
    +  480  0
                     insertSoftware.setInt(1, vulnerabilityId);
    +  481  0
                     insertSoftware.setInt(2, cpeProductId);
    +  482  0
                     if (s.getPreviousVersion() == null) {
    +  483  0
                         insertSoftware.setNull(3, java.sql.Types.VARCHAR);
    +  484   +
                     } else {
    +  485  0
                         insertSoftware.setString(3, s.getPreviousVersion());
     486  
                     }
    -  487  0
                     if (cpeProductId == 0) {
    -  488  0
                         throw new DatabaseException("Unable to retrieve cpeProductId - no data returned");
    +  487  0
                     insertSoftware.execute();
    +  488  0
                 }
     489   -
                     }
    -  490  
     
    -  491  0
                     insertSoftware.setInt(1, vulnerabilityId);
    -  492  0
                     insertSoftware.setInt(2, cpeProductId);
    -  493  0
                     if (s.getPreviousVersion() == null) {
    -  494  0
                         insertSoftware.setNull(3, java.sql.Types.VARCHAR);
    -  495   -
                     } else {
    -  496  0
                         insertSoftware.setString(3, s.getPreviousVersion());
    -  497   -
                     }
    -  498  0
                     insertSoftware.execute();
    -  499  0
                 }
    -  500   -
     
    -  501  0
             } catch (SQLException ex) {
    -  502  0
                 final String msg = String.format("Error updating '%s'", vuln.getName());
    -  503  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex);
    -  504  0
                 throw new DatabaseException(msg, ex);
    -  505   +  490  0
             } catch (SQLException ex) {
    +  491  0
                 final String msg = String.format("Error updating '%s'", vuln.getName());
    +  492  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex);
    +  493  0
                 throw new DatabaseException(msg, ex);
    +  494  
             } finally {
    -  506  0
                 closeStatement(selectVulnerabilityId);
    -  507  0
                 closeStatement(deleteReferences);
    -  508  0
                 closeStatement(deleteSoftware);
    -  509  0
                 closeStatement(updateVulnerability);
    -  510  0
                 closeStatement(insertVulnerability);
    -  511  0
                 closeStatement(insertReference);
    -  512  0
                 closeStatement(selectCpeId);
    -  513  0
                 closeStatement(insertCpe);
    -  514  0
                 closeStatement(insertSoftware);
    -  515  0
             }
    -  516  0
         }
    -  517   +  495  0
                 closeStatement(selectVulnerabilityId);
    +  496  0
                 closeStatement(deleteReferences);
    +  497  0
                 closeStatement(deleteSoftware);
    +  498  0
                 closeStatement(updateVulnerability);
    +  499  0
                 closeStatement(insertVulnerability);
    +  500  0
                 closeStatement(insertReference);
    +  501  0
                 closeStatement(selectCpeId);
    +  502  0
                 closeStatement(insertCpe);
    +  503  0
                 closeStatement(insertSoftware);
    +  504  0
             }
    +  505  0
         }
    +  506  
     
    -  518   +  507  
         /**
    -  519   +  508  
          * Retrieves the directory that the JAR file exists in so that we can ensure
    -  520   +  509  
          * we always use a common data directory.
    -  521   +  510  
          *
    -  522   +  511  
          * @return the data directory for this index.
    -  523   +  512  
          * @throws IOException is thrown if an IOException occurs of course...
    -  524   +  513  
          */
    -  525   +  514  
         public static File getDataDirectory() throws IOException {
    -  526  33
             final File path = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY);
    -  527  33
             if (!path.exists()) {
    -  528  0
                 if (!path.mkdirs()) {
    -  529  0
                     throw new IOException("Unable to create NVD CVE Data directory");
    -  530   +  515  16
             final File path = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY);
    +  516  16
             if (!path.exists()) {
    +  517  2
                 if (!path.mkdirs()) {
    +  518  0
                     throw new IOException("Unable to create NVD CVE Data directory");
    +  519  
                 }
    -  531   +  520  
             }
    -  532  33
             return path;
    -  533   +  521  16
             return path;
    +  522  
         }
    -  534   +  523  
     
    -  535   +  524  
         /**
    -  536   +  525  
          * It is possible that orphaned rows may be generated during database
    -  537   +  526  
          * updates. This should be called after all updates have been completed to
    -  538   +  527  
          * ensure orphan entries are removed.
    -  539   +  528  
          */
    -  540   +  529  
         public void cleanupDatabase() {
    -  541  0
             PreparedStatement ps = null;
    +  530  0
             PreparedStatement ps = null;
    +  531   +
             try {
    +  532  0
                 ps = conn.prepareStatement(CLEANUP_ORPHANS);
    +  533  0
                 if (ps != null) {
    +  534  0
                     ps.executeUpdate();
    +  535   +
                 }
    +  536  0
             } catch (SQLException ex) {
    +  537  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex);
    +  538   +
             } finally {
    +  539  0
                 closeStatement(ps);
    +  540  0
             }
    +  541  0
         }
     542   -
             try {
    -  543  0
                 ps = conn.prepareStatement(CLEANUP_ORPHANS);
    -  544  0
                 if (ps != null) {
    -  545  0
                     ps.executeUpdate();
    -  546   -
                 }
    -  547  0
             } catch (SQLException ex) {
    -  548  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex);
    -  549   -
             } finally {
    -  550  0
                 closeStatement(ps);
    -  551  0
             }
    -  552  0
         }
    -  553  
     
    -  554   +  543  
         /**
    -  555   +  544  
          * Creates the database structure (tables and indexes) to store the CVE data
    -  556   +  545  
          *
    -  557   +  546  
          * @throws SQLException thrown if there is a sql exception
    -  558   +  547  
          * @throws DatabaseException thrown if there is a database exception
    -  559   +  548  
          */
    -  560   +  549  
         protected void createTables() throws SQLException, DatabaseException {
    -  561   +  550  
             InputStream is;
    -  562   +  551  
             InputStreamReader reader;
    -  563  0
             BufferedReader in = null;
    -  564   +  552  0
             BufferedReader in = null;
    +  553  
             try {
    -  565  0
                 is = this.getClass().getClassLoader().getResourceAsStream(DB_STRUCTURE_RESOURCE);
    -  566  0
                 reader = new InputStreamReader(is, "UTF-8");
    -  567  0
                 in = new BufferedReader(reader);
    -  568  0
                 final StringBuilder sb = new StringBuilder(2110);
    -  569   +  554  0
                 is = this.getClass().getClassLoader().getResourceAsStream(DB_STRUCTURE_RESOURCE);
    +  555  0
                 reader = new InputStreamReader(is, "UTF-8");
    +  556  0
                 in = new BufferedReader(reader);
    +  557  0
                 final StringBuilder sb = new StringBuilder(2110);
    +  558  
                 String tmp;
    -  570  0
                 while ((tmp = in.readLine()) != null) {
    -  571  0
                     sb.append(tmp);
    -  572   +  559  0
                 while ((tmp = in.readLine()) != null) {
    +  560  0
                     sb.append(tmp);
    +  561  
                 }
    -  573  0
                 Statement statement = null;
    -  574   +  562  0
                 Statement statement = null;
    +  563  
                 try {
    -  575  0
                     statement = conn.createStatement();
    -  576  0
                     statement.execute(sb.toString());
    -  577   +  564  0
                     statement = conn.createStatement();
    +  565  0
                     statement.execute(sb.toString());
    +  566  
                 } finally {
    -  578  0
                     closeStatement(statement);
    -  579  0
                 }
    -  580  0
             } catch (IOException ex) {
    -  581  0
                 throw new DatabaseException("Unable to create database schema", ex);
    -  582   +  567  0
                     closeStatement(statement);
    +  568  0
                 }
    +  569  0
             } catch (IOException ex) {
    +  570  0
                 throw new DatabaseException("Unable to create database schema", ex);
    +  571  
             } finally {
    -  583  0
                 if (in != null) {
    -  584   +  572  0
                 if (in != null) {
    +  573  
                     try {
    -  585  0
                         in.close();
    -  586  0
                     } catch (IOException ex) {
    -  587  0
                         Logger.getLogger(CveDB.class
    -  588   +  574  0
                         in.close();
    +  575  0
                     } catch (IOException ex) {
    +  576  0
                         Logger.getLogger(CveDB.class
    +  577  
                                 .getName()).log(Level.FINEST, null, ex);
    -  589  0
                     }
    -  590   +  578  0
                     }
    +  579  
                 }
    -  591   +  580  
             }
    -  592  0
         }
    -  593   +  581  0
         }
    +  582  
     
    -  594   +  583  
         /**
    -  595   +  584  
          * Closes the given statement object ignoring any exceptions that occur.
    -  596   +  585  
          *
    -  597   +  586  
          * @param statement a Statement object
    -  598   +  587  
          */
    -  599   +  588  
         private void closeStatement(Statement statement) {
    -  600  207
             if (statement != null) {
    -  601   +  589  83
             if (statement != null) {
    +  590  
                 try {
    -  602  207
                     statement.close();
    -  603  0
                 } catch (SQLException ex) {
    -  604  0
                     Logger.getLogger(CveDB.class
    -  605   +  591  83
                     statement.close();
    +  592  0
                 } catch (SQLException ex) {
    +  593  0
                     Logger.getLogger(CveDB.class
    +  594  
                             .getName()).log(Level.FINEST, statement.toString(), ex);
    -  606  207
                 }
    -  607   +  595  83
                 }
    +  596  
             }
    -  608  207
         }
    -  609   +  597  83
         }
    +  598  
     
    -  610   +  599  
         /**
    -  611   +  600  
          * Closes the result set capturing and ignoring any SQLExceptions that
    -  612   +  601  
          * occur.
    -  613   +  602  
          *
    -  614   +  603  
          * @param rs a ResultSet to close
    -  615   +  604  
          */
    -  616   +  605  
         private void closeResultSet(ResultSet rs) {
    -  617  210
             if (rs != null) {
    -  618   +  606  84
             if (rs != null) {
    +  607  
                 try {
    -  619  210
                     rs.close();
    -  620  0
                 } catch (SQLException ex) {
    -  621  0
                     Logger.getLogger(CveDB.class
    -  622   +  608  84
                     rs.close();
    +  609  0
                 } catch (SQLException ex) {
    +  610  0
                     Logger.getLogger(CveDB.class
    +  611  
                             .getName()).log(Level.FINEST, rs.toString(), ex);
    -  623  210
                 }
    -  624   +  612  84
                 }
    +  613  
             }
    -  625  210
         }
    -  626   +  614  84
         }
    +  615  
     
    -  627   +  616  
         /**
    -  628   +  617  
          * Returns the generated integer primary key for a newly inserted row.
    -  629   +  618  
          *
    -  630   +  619  
          * @param statement a prepared statement that just executed an insert
    -  631   +  620  
          * @return a primary key
    -  632   +  621  
          * @throws DatabaseException thrown if there is an exception obtaining the
    -  633   +  622  
          * key
    -  634   +  623  
          */
    -  635   +  624  
         private int getGeneratedKey(PreparedStatement statement) throws DatabaseException {
    -  636  0
             ResultSet rs = null;
    -  637  0
             int id = 0;
    -  638   +  625  0
             ResultSet rs = null;
    +  626  0
             int id = 0;
    +  627  
             try {
    -  639  0
                 rs = statement.getGeneratedKeys();
    -  640  0
                 rs.next();
    -  641  0
                 id = rs.getInt(1);
    -  642  0
             } catch (SQLException ex) {
    -  643  0
                 throw new DatabaseException("Unable to get primary key for inserted row");
    -  644   +  628  0
                 rs = statement.getGeneratedKeys();
    +  629  0
                 rs.next();
    +  630  0
                 id = rs.getInt(1);
    +  631  0
             } catch (SQLException ex) {
    +  632  0
                 throw new DatabaseException("Unable to get primary key for inserted row");
    +  633  
             } finally {
    -  645  0
                 closeResultSet(rs);
    -  646  0
             }
    -  647  0
             return id;
    -  648   +  634  0
                 closeResultSet(rs);
    +  635  0
             }
    +  636  0
             return id;
    +  637  
         }
    -  649   +  638  
     
    -  650   +  639  
         /**
    -  651   +  640  
          * Determines if the given identifiedVersion is affected by the given cpeId
    -  652   +  641  
          * and previous version flag. A non-null, non-empty string passed to the
    -  653   +  642  
          * previous version argument indicates that all previous versions are
    -  654   +  643  
          * affected.
    -  655   +  644  
          *
    -  656   +  645  
          * @param vendor the vendor of the dependency being analyzed
    -  657   +  646  
          * @param product the product name of the dependency being analyzed
    -  658   +  647  
          * @param identifiedVersion the identified version of the dependency being
    -  659   +  648  
          * analyzed
    -  660   +  649  
          * @param cpeId the cpe identifier of software that has a known
    -  661   +  650  
          * vulnerability
    -  662   +  651  
          * @param previous a flag indicating if previous versions of the product are
    -  663   +  652  
          * vulnerable
    -  664   +  653  
          * @return true if the identified version is affected, otherwise false
    -  665   +  654  
          */
    -  666   +  655  
         private boolean isAffected(String vendor, String product, DependencyVersion identifiedVersion, String cpeId, String previous) {
    -  667  1145
             boolean affected = false;
    -  668  1145
             final boolean isStruts = "apache".equals(vendor) && "struts".equals(product);
    -  669  1145
             final DependencyVersion v = parseDependencyVersion(cpeId);
    -  670  1145
             final boolean prevAffected = previous == null ? false : !previous.isEmpty();
    -  671  1145
             if (identifiedVersion == null || "-".equals(identifiedVersion.toString())) {
    -  672  0
                 if (v == null || "-".equals(v.toString())) {
    -  673  0
                     affected = true;
    -  674   +  656  382
             boolean affected = false;
    +  657  382
             final boolean isStruts = "apache".equals(vendor) && "struts".equals(product);
    +  658  382
             final DependencyVersion v = parseDependencyVersion(cpeId);
    +  659  382
             final boolean prevAffected = previous == null ? false : !previous.isEmpty();
    +  660  382
             if (identifiedVersion == null || "-".equals(identifiedVersion.toString())) {
    +  661  0
                 if (v == null || "-".equals(v.toString())) {
    +  662  0
                     affected = true;
    +  663  
                 }
    -  675  1145
             } else if (identifiedVersion.equals(v) || (prevAffected && identifiedVersion.compareTo(v) < 0)) {
    -  676  54
                 if (isStruts) { //struts 2 vulns don't affect struts 1
    -  677  54
                     if (identifiedVersion.getVersionParts().get(0).equals(v.getVersionParts().get(0))) {
    -  678  54
                         affected = true;
    -  679   +  664  382
             } else if (identifiedVersion.equals(v) || (prevAffected && identifiedVersion.compareTo(v) < 0)) {
    +  665  18
                 if (isStruts) { //struts 2 vulns don't affect struts 1
    +  666  18
                     if (identifiedVersion.getVersionParts().get(0).equals(v.getVersionParts().get(0))) {
    +  667  18
                         affected = true;
    +  668  
                     }
    -  680   +  669  
                 } else {
    -  681  0
                     affected = true;
    -  682   +  670  0
                     affected = true;
    +  671  
                 }
    -  683   +  672  
             }
    -  684   +  673  
             /*
    -  685   +  674  
              * TODO consider utilizing the matchThreeVersion method to get additional results. However, this
    -  686   +  675  
              *      might also introduce false positives.
    -  687   +  676  
              */
    -  688  1145
             return affected;
    -  689   +  677  382
             return affected;
    +  678  
         }
    -  690   +  679  
     
    -  691   +  680  
         /**
    -  692   +  681  
          * Parses the version (including revision) from a CPE identifier. If no
    -  693   +  682  
          * version is identified then a '-' is returned.
    -  694   +  683  
          *
    -  695   +  684  
          * @param cpeStr a cpe identifier
    -  696   +  685  
          * @return a dependency version
    -  697   +  686  
          */
    -  698   +  687  
         private DependencyVersion parseDependencyVersion(String cpeStr) {
    -  699  1145
             final VulnerableSoftware cpe = new VulnerableSoftware();
    -  700   +  688  382
             final VulnerableSoftware cpe = new VulnerableSoftware();
    +  689  
             try {
    -  701  1145
                 cpe.parseName(cpeStr);
    -  702  0
             } catch (UnsupportedEncodingException ex) {
    -  703   +  690  382
                 cpe.parseName(cpeStr);
    +  691  0
             } catch (UnsupportedEncodingException ex) {
    +  692  
                 //never going to happen.
    -  704  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex);
    -  705  1145
             }
    -  706  1145
             return parseDependencyVersion(cpe);
    -  707   +  693  0
                 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex);
    +  694  382
             }
    +  695  382
             return parseDependencyVersion(cpe);
    +  696  
         }
    -  708   +  697  
     
    -  709   +  698  
         /**
    -  710   +  699  
          * Takes a CPE and parses out the version number. If no version is
    -  711   +  700  
          * identified then a '-' is returned.
    -  712   +  701  
          *
    -  713   +  702  
          * @param cpe a cpe object
    -  714   +  703  
          * @return a dependency version
    -  715   +  704  
          */
    -  716   +  705  
         private DependencyVersion parseDependencyVersion(VulnerableSoftware cpe) {
    -  717   +  706  
             DependencyVersion cpeVersion;
    -  718  1148
             if (cpe.getVersion() != null && cpe.getVersion().length() > 0) {
    -  719   +  707  383
             if (cpe.getVersion() != null && cpe.getVersion().length() > 0) {
    +  708  
                 String versionText;
    -  720  1146
                 if (cpe.getRevision() != null && cpe.getRevision().length() > 0) {
    -  721  0
                     versionText = String.format("%s.%s", cpe.getVersion(), cpe.getRevision());
    -  722   +  709  382
                 if (cpe.getRevision() != null && cpe.getRevision().length() > 0) {
    +  710  0
                     versionText = String.format("%s.%s", cpe.getVersion(), cpe.getRevision());
    +  711  
                 } else {
    -  723  1146
                     versionText = cpe.getVersion();
    -  724   +  712  382
                     versionText = cpe.getVersion();
    +  713  
                 }
    -  725  1146
                 cpeVersion = DependencyVersionUtil.parseVersion(versionText);
    -  726  1146
             } else {
    -  727  2
                 cpeVersion = new DependencyVersion("-");
    -  728   +  714  382
                 cpeVersion = DependencyVersionUtil.parseVersion(versionText);
    +  715  382
             } else {
    +  716  1
                 cpeVersion = new DependencyVersion("-");
    +  717  
             }
    -  729  1148
             return cpeVersion;
    -  730   +  718  383
             return cpeVersion;
    +  719  
         }
    -  731   +  720  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.DatabaseException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.DatabaseException.html index eabf12d03..bd04ee9c1 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.DatabaseException.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.DatabaseException.html @@ -117,6 +117,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.InvalidDataException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.InvalidDataException.html new file mode 100644 index 000000000..c59337673 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.InvalidDataException.html @@ -0,0 +1,124 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.nvdcve.InvalidDataException
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    InvalidDataException
    0%
    0/4
    N/A
    1
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.nvdcve;
     20  
     
     21  
     /**
     22  
      * An InvalidDataDataException is a generic exception used when trying to load
     23  
      * the nvd cve meta data.
     24  
      *
     25  
      * @author Jeremy Long (jeremy.long@owasp.org)
     26  
      */
     27  
     public class InvalidDataException extends Exception {
     28  
     
     29  
         /**
     30  
          * the serial version uid.
     31  
          */
     32  
         private static final long serialVersionUID = 1L;
     33  
     
     34  
         /**
     35  
          * Creates an InvalidDataException.
     36  
          *
     37  
          * @param msg the exception message
     38  
          */
     39  
         public InvalidDataException(String msg) {
     40  0
             super(msg);
     41  0
         }
     42  
     
     43  
         /**
     44  
          * Creates an InvalidDataException.
     45  
          *
     46  
          * @param msg the exception message
     47  
          * @param ex the cause of the exception
     48  
          */
     49  
         public InvalidDataException(String msg, Exception ex) {
     50  0
             super(msg, ex);
     51  0
         }
     52  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.html new file mode 100644 index 000000000..a2d0e6bcd --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler.html @@ -0,0 +1,462 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler
    +
     
    + + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    NvdCve12Handler
    95%
    47/49
    86%
    26/30
    2.6
    NvdCve12Handler$Element
    77%
    7/9
    N/A
    2.6
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.nvdcve;
     20  
     
     21  
     import java.util.ArrayList;
     22  
     import java.util.HashMap;
     23  
     import java.util.List;
     24  
     import java.util.Map;
     25  
     import org.owasp.dependencycheck.dependency.VulnerableSoftware;
     26  
     import org.xml.sax.Attributes;
     27  
     import org.xml.sax.SAXException;
     28  
     import org.xml.sax.SAXNotSupportedException;
     29  
     import org.xml.sax.helpers.DefaultHandler;
     30  
     
     31  
     /**
     32  
      * A SAX Handler that will parse the NVD CVE XML (schema version 1.2). This
     33  
      * parses the xml and retrieves a listing of CPEs that have previous versions
     34  
      * specified. The previous version information is not in the 2.0 version of the
     35  
      * schema and is useful to ensure accurate identification (or at least
     36  
      * complete).
     37  
      *
     38  
      * @author Jeremy Long (jeremy.long@owasp.org)
     39  
      */
     40  1
     public class NvdCve12Handler extends DefaultHandler {
     41  
     
     42  
         /**
     43  
          * the supported schema version.
     44  
          */
     45  
         private static final String CURRENT_SCHEMA_VERSION = "1.2";
     46  
         /**
     47  
          * the current vulnerability.
     48  
          */
     49  
         private String vulnerability;
     50  
         /**
     51  
          * a list of vulnerable software.
     52  
          */
     53  
         private List<VulnerableSoftware> software;
     54  
         /**
     55  
          * the vendor name.
     56  
          */
     57  
         private String vendor;
     58  
         /**
     59  
          * the product name.
     60  
          */
     61  
         private String product;
     62  
         /**
     63  
          * if the nvd cve should be skipped because it was rejected.
     64  
          */
     65  1
         private boolean skip = false;
     66  
         /**
     67  
          * flag indicating if there is a previous version.
     68  
          */
     69  1
         private boolean hasPreviousVersion = false;
     70  
         /**
     71  
          * The current element.
     72  
          */
     73  1
         private final Element current = new Element();
     74  
         /**
     75  
          * a map of vulnerabilities.
     76  
          */
     77  
         private Map<String, List<VulnerableSoftware>> vulnerabilities;
     78  
     
     79  
         /**
     80  
          * Get the value of vulnerabilities.
     81  
          *
     82  
          * @return the value of vulnerabilities
     83  
          */
     84  
         public Map<String, List<VulnerableSoftware>> getVulnerabilities() {
     85  1
             return vulnerabilities;
     86  
         }
     87  
     
     88  
         @Override
     89  
         public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
     90  1222
             current.setNode(qName);
     91  1222
             if (current.isEntryNode()) {
     92  27
                 vendor = null;
     93  27
                 product = null;
     94  27
                 hasPreviousVersion = false;
     95  27
                 final String reject = attributes.getValue("reject");
     96  27
                 skip = "1".equals(reject);
     97  27
                 if (!skip) {
     98  26
                     vulnerability = attributes.getValue("name");
     99  26
                     software = new ArrayList<VulnerableSoftware>();
     100  
                 } else {
     101  1
                     vulnerability = null;
     102  1
                     software = null;
     103  
                 }
     104  27
             } else if (!skip && current.isProdNode()) {
     105  
     
     106  52
                 vendor = attributes.getValue("vendor");
     107  52
                 product = attributes.getValue("name");
     108  1143
             } else if (!skip && current.isVersNode()) {
     109  761
                 final String prev = attributes.getValue("prev");
     110  761
                 if (prev != null && "1".equals(prev)) {
     111  1
                     hasPreviousVersion = true;
     112  1
                     final String edition = attributes.getValue("edition");
     113  1
                     final String num = attributes.getValue("num");
     114  
     
     115  
                     /*yes yes, this may not actually be an "a" - it could be an OS, etc. but for our
     116  
                      purposes this is good enough as we won't use this if we don't find a corresponding "a"
     117  
                      in the nvd cve 2.0. */
     118  1
                     String cpe = "cpe:/a:" + vendor + ":" + product;
     119  1
                     if (num != null) {
     120  1
                         cpe += ":" + num;
     121  
                     }
     122  1
                     if (edition != null) {
     123  0
                         cpe += ":" + edition;
     124  
                     }
     125  1
                     final VulnerableSoftware vs = new VulnerableSoftware();
     126  1
                     vs.setCpe(cpe);
     127  1
                     vs.setPreviousVersion(prev);
     128  1
                     software.add(vs);
     129  
                 }
     130  761
             } else if (current.isNVDNode()) {
     131  1
                 final String nvdVer = attributes.getValue("nvd_xml_version");
     132  1
                 if (!CURRENT_SCHEMA_VERSION.equals(nvdVer)) {
     133  0
                     throw new SAXNotSupportedException("Schema version " + nvdVer + " is not supported");
     134  
                 }
     135  1
                 vulnerabilities = new HashMap<String, List<VulnerableSoftware>>();
     136  
             }
     137  1222
         }
     138  
     
     139  
         @Override
     140  
         public void endElement(String uri, String localName, String qName) throws SAXException {
     141  1222
             current.setNode(qName);
     142  1222
             if (current.isEntryNode()) {
     143  27
                 if (!skip && hasPreviousVersion) {
     144  1
                     vulnerabilities.put(vulnerability, software);
     145  
                 }
     146  27
                 vulnerability = null;
     147  27
                 software = null;
     148  
             }
     149  1222
         }
     150  
     
     151  
         // <editor-fold defaultstate="collapsed" desc="The Element Class that maintains state information about the current node">
     152  
         /**
     153  
          * A simple class to maintain information about the current element while
     154  
          * parsing the NVD CVE XML.
     155  
          */
     156  1
         protected static class Element {
     157  
     
     158  
             /**
     159  
              * A node type in the NVD CVE Schema 1.2.
     160  
              */
     161  
             public static final String NVD = "nvd";
     162  
             /**
     163  
              * A node type in the NVD CVE Schema 1.2.
     164  
              */
     165  
             public static final String ENTRY = "entry";
     166  
             /**
     167  
              * A node type in the NVD CVE Schema 1.2.
     168  
              */
     169  
             public static final String VULN_SOFTWARE = "vuln_soft";
     170  
             /**
     171  
              * A node type in the NVD CVE Schema 1.2.
     172  
              */
     173  
             public static final String PROD = "prod";
     174  
             /**
     175  
              * A node type in the NVD CVE Schema 1.2.
     176  
              */
     177  
             public static final String VERS = "vers";
     178  
             /**
     179  
              * The name of the current node.
     180  
              */
     181  
             private String node;
     182  
     
     183  
             /**
     184  
              * Gets the value of node.
     185  
              *
     186  
              * @return the value of node
     187  
              */
     188  
             public String getNode() {
     189  0
                 return this.node;
     190  
             }
     191  
     
     192  
             /**
     193  
              * Sets the value of node.
     194  
              *
     195  
              * @param node new value of node
     196  
              */
     197  
             public void setNode(String node) {
     198  2444
                 this.node = node;
     199  2444
             }
     200  
     
     201  
             /**
     202  
              * Checks if the handler is at the NVD node.
     203  
              *
     204  
              * @return true or false
     205  
              */
     206  
             public boolean isNVDNode() {
     207  382
                 return NVD.equals(node);
     208  
             }
     209  
     
     210  
             /**
     211  
              * Checks if the handler is at the ENTRY node.
     212  
              *
     213  
              * @return true or false
     214  
              */
     215  
             public boolean isEntryNode() {
     216  2444
                 return ENTRY.equals(node);
     217  
             }
     218  
     
     219  
             /**
     220  
              * Checks if the handler is at the VULN_SOFTWARE node.
     221  
              *
     222  
              * @return true or false
     223  
              */
     224  
             public boolean isVulnSoftwareNode() {
     225  0
                 return VULN_SOFTWARE.equals(node);
     226  
             }
     227  
     
     228  
             /**
     229  
              * Checks if the handler is at the PROD node.
     230  
              *
     231  
              * @return true or false
     232  
              */
     233  
             public boolean isProdNode() {
     234  1192
                 return PROD.equals(node);
     235  
             }
     236  
     
     237  
             /**
     238  
              * Checks if the handler is at the VERS node.
     239  
              *
     240  
              * @return true or false
     241  
              */
     242  
             public boolean isVersNode() {
     243  1140
                 return VERS.equals(node);
     244  
             }
     245  
         }
     246  
         // </editor-fold>
     247  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.html new file mode 100644 index 000000000..1b690869c --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler.html @@ -0,0 +1,905 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler
    +
     
    + + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    NvdCve20Handler
    76%
    97/126
    84%
    73/86
    3
    NvdCve20Handler$Element
    94%
    18/19
    N/A
    3
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.nvdcve;
     20  
     
     21  
     import java.io.IOException;
     22  
     import java.util.List;
     23  
     import java.util.Map;
     24  
     import java.util.logging.Level;
     25  
     import java.util.logging.Logger;
     26  
     import org.apache.lucene.index.CorruptIndexException;
     27  
     import org.owasp.dependencycheck.data.cpe.CpeIndexWriter;
     28  
     import org.owasp.dependencycheck.dependency.Reference;
     29  
     import org.owasp.dependencycheck.dependency.Vulnerability;
     30  
     import org.owasp.dependencycheck.dependency.VulnerableSoftware;
     31  
     import org.xml.sax.Attributes;
     32  
     import org.xml.sax.SAXException;
     33  
     import org.xml.sax.SAXNotSupportedException;
     34  
     import org.xml.sax.helpers.DefaultHandler;
     35  
     
     36  
     /**
     37  
      * A SAX Handler that will parse the NVD CVE XML (schema version 2.0).
     38  
      *
     39  
      * @author Jeremy Long (jeremy.long@owasp.org)
     40  
      */
     41  1
     public class NvdCve20Handler extends DefaultHandler {
     42  
     
     43  
         /**
     44  
          * the current supported schema version.
     45  
          */
     46  
         private static final String CURRENT_SCHEMA_VERSION = "2.0";
     47  
         /**
     48  
          * the current element.
     49  
          */
     50  1
         private final Element current = new Element();
     51  
         /**
     52  
          * the text of the node.
     53  
          */
     54  
         private StringBuilder nodeText;
     55  
         /**
     56  
          * the vulnerability.
     57  
          */
     58  
         private Vulnerability vulnerability;
     59  
         /**
     60  
          * a reference for the cve.
     61  
          */
     62  
         private Reference reference;
     63  
         /**
     64  
          * flag indicating whether the application has a cpe.
     65  
          */
     66  1
         private boolean hasApplicationCpe = false;
     67  
         /**
     68  
          * The total number of entries parsed.
     69  
          */
     70  
         private int totalNumberOfEntries;
     71  
     
     72  
         /**
     73  
          * Get the value of totalNumberOfEntries.
     74  
          *
     75  
          * @return the value of totalNumberOfEntries
     76  
          */
     77  
         public int getTotalNumberOfEntries() {
     78  0
             return totalNumberOfEntries;
     79  
         }
     80  
         /**
     81  
          * The total number of application entries parsed.
     82  
          */
     83  
         private int totalNumberOfApplicationEntries;
     84  
     
     85  
         /**
     86  
          * Get the value of totalNumberOfApplicationEntries.
     87  
          *
     88  
          * @return the value of totalNumberOfApplicationEntries
     89  
          */
     90  
         public int getTotalNumberOfApplicationEntries() {
     91  0
             return totalNumberOfApplicationEntries;
     92  
         }
     93  
     
     94  
         @Override
     95  
         public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
     96  2412
             current.setNode(qName);
     97  2412
             if (current.isEntryNode()) {
     98  27
                 hasApplicationCpe = false;
     99  27
                 vulnerability = new Vulnerability();
     100  27
                 vulnerability.setName(attributes.getValue("id"));
     101  2385
             } else if (current.isVulnProductNode()) {
     102  727
                 nodeText = new StringBuilder(100);
     103  1658
             } else if (current.isVulnReferencesNode()) {
     104  90
                 final String lang = attributes.getValue("xml:lang");
     105  90
                 if ("en".equals(lang)) {
     106  90
                     reference = new Reference();
     107  
                 } else {
     108  0
                     reference = null;
     109  
                 }
     110  90
             } else if (reference != null && current.isVulnReferenceNode()) {
     111  90
                 reference.setUrl(attributes.getValue("href"));
     112  90
                 nodeText = new StringBuilder(130);
     113  1478
             } else if (reference != null && current.isVulnSourceNode()) {
     114  90
                 nodeText = new StringBuilder(30);
     115  1388
             } else if (current.isVulnSummaryNode()) {
     116  27
                 nodeText = new StringBuilder(500);
     117  1361
             } else if (current.isNVDNode()) {
     118  1
                 final String nvdVer = attributes.getValue("nvd_xml_version");
     119  1
                 if (!CURRENT_SCHEMA_VERSION.equals(nvdVer)) {
     120  0
                     throw new SAXNotSupportedException("Schema version " + nvdVer + " is not supported");
     121  
                 }
     122  1
             } else if (current.isVulnCWENode()) {
     123  19
                 vulnerability.setCwe(attributes.getValue("id"));
     124  1341
             } else if (current.isCVSSScoreNode()) {
     125  26
                 nodeText = new StringBuilder(5);
     126  1315
             } else if (current.isCVSSAccessVectorNode()) {
     127  26
                 nodeText = new StringBuilder(20);
     128  1289
             } else if (current.isCVSSAccessComplexityNode()) {
     129  26
                 nodeText = new StringBuilder(20);
     130  1263
             } else if (current.isCVSSAuthenticationNode()) {
     131  26
                 nodeText = new StringBuilder(20);
     132  1237
             } else if (current.isCVSSAvailabilityImpactNode()) {
     133  26
                 nodeText = new StringBuilder(20);
     134  1211
             } else if (current.isCVSSConfidentialityImpactNode()) {
     135  26
                 nodeText = new StringBuilder(20);
     136  1185
             } else if (current.isCVSSIntegrityImpactNode()) {
     137  26
                 nodeText = new StringBuilder(20);
     138  
             }
     139  2412
         }
     140  
     
     141  
         @Override
     142  
         public void characters(char[] ch, int start, int length) throws SAXException {
     143  3993
             if (nodeText != null) {
     144  1148
                 nodeText.append(ch, start, length);
     145  
             }
     146  3993
         }
     147  
     
     148  
         @Override
     149  
         public void endElement(String uri, String localName, String qName) throws SAXException {
     150  2412
             current.setNode(qName);
     151  2412
             if (current.isEntryNode()) {
     152  27
                 totalNumberOfEntries += 1;
     153  27
                 if (hasApplicationCpe) {
     154  18
                     totalNumberOfApplicationEntries += 1;
     155  
                     try {
     156  18
                         saveEntry(vulnerability);
     157  0
                     } catch (DatabaseException ex) {
     158  0
                         throw new SAXException(ex);
     159  0
                     } catch (CorruptIndexException ex) {
     160  0
                         throw new SAXException(ex);
     161  0
                     } catch (IOException ex) {
     162  0
                         throw new SAXException(ex);
     163  18
                     }
     164  
                 }
     165  27
                 vulnerability = null;
     166  2385
             } else if (current.isCVSSScoreNode()) {
     167  
                 try {
     168  26
                     final float score = Float.parseFloat(nodeText.toString());
     169  26
                     vulnerability.setCvssScore(score);
     170  0
                 } catch (NumberFormatException ex) {
     171  0
                     Logger.getLogger(NvdCve20Handler.class.getName()).log(Level.SEVERE, "Error parsing CVSS Score.");
     172  0
                     Logger.getLogger(NvdCve20Handler.class.getName()).log(Level.FINE, null, ex);
     173  26
                 }
     174  26
                 nodeText = null;
     175  2359
             } else if (current.isCVSSAccessVectorNode()) {
     176  26
                 vulnerability.setCvssAccessVector(nodeText.toString());
     177  26
                 nodeText = null;
     178  2333
             } else if (current.isCVSSAccessComplexityNode()) {
     179  26
                 vulnerability.setCvssAccessComplexity(nodeText.toString());
     180  26
                 nodeText = null;
     181  2307
             } else if (current.isCVSSAuthenticationNode()) {
     182  26
                 vulnerability.setCvssAuthentication(nodeText.toString());
     183  26
                 nodeText = null;
     184  2281
             } else if (current.isCVSSAvailabilityImpactNode()) {
     185  26
                 vulnerability.setCvssAvailabilityImpact(nodeText.toString());
     186  26
                 nodeText = null;
     187  2255
             } else if (current.isCVSSConfidentialityImpactNode()) {
     188  26
                 vulnerability.setCvssConfidentialityImpact(nodeText.toString());
     189  26
                 nodeText = null;
     190  2229
             } else if (current.isCVSSIntegrityImpactNode()) {
     191  26
                 vulnerability.setCvssIntegrityImpact(nodeText.toString());
     192  26
                 nodeText = null;
     193  2203
             } else if (current.isVulnProductNode()) {
     194  727
                 final String cpe = nodeText.toString();
     195  727
                 if (cpe.startsWith("cpe:/a:")) {
     196  614
                     hasApplicationCpe = true;
     197  614
                     vulnerability.addVulnerableSoftware(cpe);
     198  
                 }
     199  727
                 nodeText = null;
     200  727
             } else if (reference != null && current.isVulnReferencesNode()) {
     201  90
                 vulnerability.addReference(reference);
     202  90
                 reference = null;
     203  1386
             } else if (reference != null && current.isVulnReferenceNode()) {
     204  90
                 reference.setName(nodeText.toString());
     205  90
                 nodeText = null;
     206  1296
             } else if (reference != null && current.isVulnSourceNode()) {
     207  90
                 reference.setSource(nodeText.toString());
     208  90
                 nodeText = null;
     209  1206
             } else if (current.isVulnSummaryNode()) {
     210  27
                 vulnerability.setDescription(nodeText.toString());
     211  27
                 nodeText = null;
     212  
             }
     213  2412
         }
     214  
         /**
     215  
          * the cve database.
     216  
          */
     217  
         private CveDB cveDB;
     218  
     
     219  
         /**
     220  
          * Sets the cveDB.
     221  
          *
     222  
          * @param db a reference to the CveDB
     223  
          */
     224  
         public void setCveDB(CveDB db) {
     225  0
             cveDB = db;
     226  0
         }
     227  
         /**
     228  
          * A list of CVE entries and associated VulnerableSoftware entries that
     229  
          * contain previous entries.
     230  
          */
     231  
         private Map<String, List<VulnerableSoftware>> prevVersionVulnMap;
     232  
     
     233  
         /**
     234  
          * Sets the prevVersionVulnMap.
     235  
          *
     236  
          * @param map the map of vulnerable software with previous versions being
     237  
          * vulnerable
     238  
          */
     239  
         public void setPrevVersionVulnMap(Map<String, List<VulnerableSoftware>> map) {
     240  0
             prevVersionVulnMap = map;
     241  0
         }
     242  
     
     243  
         /**
     244  
          * Saves a vulnerability to the CVE Database. This is a callback method
     245  
          * called by the Sax Parser Handler
     246  
          * {@link org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler}.
     247  
          *
     248  
          * @param vuln the vulnerability to store in the database
     249  
          * @throws DatabaseException thrown if there is an error writing to the
     250  
          * database
     251  
          * @throws CorruptIndexException is thrown if the CPE Index is corrupt
     252  
          * @throws IOException thrown if there is an IOException with the CPE Index
     253  
          */
     254  
         public void saveEntry(Vulnerability vuln) throws DatabaseException, CorruptIndexException, IOException {
     255  18
             if (cveDB == null) {
     256  18
                 return;
     257  
             }
     258  0
             final String cveName = vuln.getName();
     259  0
             if (prevVersionVulnMap.containsKey(cveName)) {
     260  0
                 final List<VulnerableSoftware> vulnSoftware = prevVersionVulnMap.get(cveName);
     261  0
                 for (VulnerableSoftware vs : vulnSoftware) {
     262  0
                     vuln.updateVulnerableSoftware(vs);
     263  
                 }
     264  
             }
     265  0
             for (VulnerableSoftware vs : vuln.getVulnerableSoftware()) {
     266  0
                 if (cpeIndex != null) {
     267  0
                     cpeIndex.saveEntry(vs);
     268  
                 }
     269  
             }
     270  0
             cveDB.updateVulnerability(vuln);
     271  0
         }
     272  
         /**
     273  
          * the cpe index.
     274  
          */
     275  
         private CpeIndexWriter cpeIndex;
     276  
     
     277  
         /**
     278  
          * Sets the cpe index writer.
     279  
          *
     280  
          * @param index the CPE Lucene Index
     281  
          */
     282  
         public void setCpeIndex(CpeIndexWriter index) {
     283  0
             cpeIndex = index;
     284  0
         }
     285  
     
     286  
         // <editor-fold defaultstate="collapsed" desc="The Element Class that maintains state information about the current node">
     287  
         /**
     288  
          * A simple class to maintain information about the current element while
     289  
          * parsing the NVD CVE XML.
     290  
          */
     291  1
         protected static class Element {
     292  
     
     293  
             /**
     294  
              * A node type in the NVD CVE Schema 2.0
     295  
              */
     296  
             public static final String NVD = "nvd";
     297  
             /**
     298  
              * A node type in the NVD CVE Schema 2.0
     299  
              */
     300  
             public static final String ENTRY = "entry";
     301  
             /**
     302  
              * A node type in the NVD CVE Schema 2.0
     303  
              */
     304  
             public static final String VULN_PRODUCT = "vuln:product";
     305  
             /**
     306  
              * A node type in the NVD CVE Schema 2.0
     307  
              */
     308  
             public static final String VULN_REFERENCES = "vuln:references";
     309  
             /**
     310  
              * A node type in the NVD CVE Schema 2.0
     311  
              */
     312  
             public static final String VULN_SOURCE = "vuln:source";
     313  
             /**
     314  
              * A node type in the NVD CVE Schema 2.0
     315  
              */
     316  
             public static final String VULN_REFERENCE = "vuln:reference";
     317  
             /**
     318  
              * A node type in the NVD CVE Schema 2.0
     319  
              */
     320  
             public static final String VULN_SUMMARY = "vuln:summary";
     321  
             /**
     322  
              * A node type in the NVD CVE Schema 2.0
     323  
              */
     324  
             public static final String VULN_CWE = "vuln:cwe";
     325  
             /**
     326  
              * A node type in the NVD CVE Schema 2.0
     327  
              */
     328  
             public static final String CVSS_SCORE = "cvss:score";
     329  
             /**
     330  
              * A node type in the NVD CVE Schema 2.0
     331  
              */
     332  
             public static final String CVSS_ACCESS_VECTOR = "cvss:access-vector";
     333  
             /**
     334  
              * A node type in the NVD CVE Schema 2.0
     335  
              */
     336  
             public static final String CVSS_ACCESS_COMPLEXITY = "cvss:access-complexity";
     337  
             /**
     338  
              * A node type in the NVD CVE Schema 2.0
     339  
              */
     340  
             public static final String CVSS_AUTHENTICATION = "cvss:authentication";
     341  
             /**
     342  
              * A node type in the NVD CVE Schema 2.0
     343  
              */
     344  
             public static final String CVSS_CONFIDENTIALITY_IMPACT = "cvss:confidentiality-impact";
     345  
             /**
     346  
              * A node type in the NVD CVE Schema 2.0
     347  
              */
     348  
             public static final String CVSS_INTEGRITY_IMPACT = "cvss:integrity-impact";
     349  
             /**
     350  
              * A node type in the NVD CVE Schema 2.0
     351  
              */
     352  
             public static final String CVSS_AVAILABILITY_IMPACT = "cvss:availability-impact";
     353  
             /**
     354  
              * The current node.
     355  
              */
     356  
             private String node;
     357  
     
     358  
             /**
     359  
              * Gets the value of node.
     360  
              *
     361  
              * @return the value of node
     362  
              */
     363  
             public String getNode() {
     364  0
                 return this.node;
     365  
             }
     366  
     
     367  
             /**
     368  
              * Sets the value of node.
     369  
              *
     370  
              * @param node new value of node
     371  
              */
     372  
             public void setNode(String node) {
     373  4824
                 this.node = node;
     374  4824
             }
     375  
     
     376  
             /**
     377  
              * Checks if the handler is at the NVD node.
     378  
              *
     379  
              * @return true or false
     380  
              */
     381  
             public boolean isNVDNode() {
     382  1361
                 return NVD.equals(node);
     383  
             }
     384  
     
     385  
             /**
     386  
              * Checks if the handler is at the ENTRY node.
     387  
              *
     388  
              * @return true or false
     389  
              */
     390  
             public boolean isEntryNode() {
     391  4824
                 return ENTRY.equals(node);
     392  
             }
     393  
     
     394  
             /**
     395  
              * Checks if the handler is at the VULN_PRODUCT node.
     396  
              *
     397  
              * @return true or false
     398  
              */
     399  
             public boolean isVulnProductNode() {
     400  4588
                 return VULN_PRODUCT.equals(node);
     401  
             }
     402  
     
     403  
             /**
     404  
              * Checks if the handler is at the REFERENCES node.
     405  
              *
     406  
              * @return true or false
     407  
              */
     408  
             public boolean isVulnReferencesNode() {
     409  1928
                 return VULN_REFERENCES.equals(node);
     410  
             }
     411  
     
     412  
             /**
     413  
              * Checks if the handler is at the REFERENCE node.
     414  
              *
     415  
              * @return true or false
     416  
              */
     417  
             public boolean isVulnReferenceNode() {
     418  360
                 return VULN_REFERENCE.equals(node);
     419  
             }
     420  
     
     421  
             /**
     422  
              * Checks if the handler is at the VULN_SOURCE node.
     423  
              *
     424  
              * @return true or false
     425  
              */
     426  
             public boolean isVulnSourceNode() {
     427  180
                 return VULN_SOURCE.equals(node);
     428  
             }
     429  
     
     430  
             /**
     431  
              * Checks if the handler is at the VULN_SUMMARY node.
     432  
              *
     433  
              * @return true or false
     434  
              */
     435  
             public boolean isVulnSummaryNode() {
     436  2594
                 return VULN_SUMMARY.equals(node);
     437  
             }
     438  
     
     439  
             /**
     440  
              * Checks if the handler is at the VULN_CWE node.
     441  
              *
     442  
              * @return true or false
     443  
              */
     444  
             public boolean isVulnCWENode() {
     445  1360
                 return VULN_CWE.equals(node);
     446  
             }
     447  
     
     448  
             /**
     449  
              * Checks if the handler is at the CVSS_SCORE node.
     450  
              *
     451  
              * @return true or false
     452  
              */
     453  
             public boolean isCVSSScoreNode() {
     454  3726
                 return CVSS_SCORE.equals(node);
     455  
             }
     456  
     
     457  
             /**
     458  
              * Checks if the handler is at the CVSS_ACCESS_VECTOR node.
     459  
              *
     460  
              * @return true or false
     461  
              */
     462  
             public boolean isCVSSAccessVectorNode() {
     463  3674
                 return CVSS_ACCESS_VECTOR.equals(node);
     464  
             }
     465  
     
     466  
             /**
     467  
              * Checks if the handler is at the CVSS_ACCESS_COMPLEXITY node.
     468  
              *
     469  
              * @return true or false
     470  
              */
     471  
             public boolean isCVSSAccessComplexityNode() {
     472  3622
                 return CVSS_ACCESS_COMPLEXITY.equals(node);
     473  
             }
     474  
     
     475  
             /**
     476  
              * Checks if the handler is at the CVSS_AUTHENTICATION node.
     477  
              *
     478  
              * @return true or false
     479  
              */
     480  
             public boolean isCVSSAuthenticationNode() {
     481  3570
                 return CVSS_AUTHENTICATION.equals(node);
     482  
             }
     483  
     
     484  
             /**
     485  
              * Checks if the handler is at the CVSS_CONFIDENTIALITY_IMPACT node.
     486  
              *
     487  
              * @return true or false
     488  
              */
     489  
             public boolean isCVSSConfidentialityImpactNode() {
     490  3466
                 return CVSS_CONFIDENTIALITY_IMPACT.equals(node);
     491  
             }
     492  
     
     493  
             /**
     494  
              * Checks if the handler is at the CVSS_INTEGRITY_IMPACT node.
     495  
              *
     496  
              * @return true or false
     497  
              */
     498  
             public boolean isCVSSIntegrityImpactNode() {
     499  3414
                 return CVSS_INTEGRITY_IMPACT.equals(node);
     500  
             }
     501  
     
     502  
             /**
     503  
              * Checks if the handler is at the CVSS_AVAILABILITY_IMPACT node.
     504  
              *
     505  
              * @return true or false
     506  
              */
     507  
             public boolean isCVSSAvailabilityImpactNode() {
     508  3518
                 return CVSS_AVAILABILITY_IMPACT.equals(node);
     509  
             }
     510  
         }
     511  
         // </editor-fold>
     512  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.DataStoreMetaInfo.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.DataStoreMetaInfo.html new file mode 100644 index 000000000..77fd62641 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.DataStoreMetaInfo.html @@ -0,0 +1,433 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.update.DataStoreMetaInfo
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    DataStoreMetaInfo
    50%
    37/73
    43%
    7/16
    3.111
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.update;
     20  
     
     21  
     import java.io.File;
     22  
     import java.io.FileInputStream;
     23  
     import java.io.FileNotFoundException;
     24  
     import java.io.FileOutputStream;
     25  
     import java.io.IOException;
     26  
     import java.io.InputStream;
     27  
     import java.io.OutputStream;
     28  
     import java.io.OutputStreamWriter;
     29  
     import java.util.Properties;
     30  
     import java.util.logging.Level;
     31  
     import java.util.logging.Logger;
     32  
     import org.owasp.dependencycheck.data.UpdateException;
     33  
     import org.owasp.dependencycheck.data.nvdcve.CveDB;
     34  
     import org.owasp.dependencycheck.utils.Settings;
     35  
     
     36  
     /**
     37  
      *
     38  
      * @author Jeremy Long (jeremy.long@owasp.org)
     39  
      */
     40  
     public class DataStoreMetaInfo {
     41  
     
     42  
         /**
     43  
          * Batch key word, used as key to store information about batch mode.
     44  
          */
     45  
         public static final String BATCH = "batch";
     46  
         /**
     47  
          * Modified key word, used as a key to store information about the modified
     48  
          * file (i.e. the containing the last 8 days of updates)..
     49  
          */
     50  
         public static final String MODIFIED = "modified";
     51  
         /**
     52  
          * The name of the properties file containing the timestamp of the last
     53  
          * update.
     54  
          */
     55  
         private static final String UPDATE_PROPERTIES_FILE = "data.properties";
     56  
         /**
     57  
          * The properties file key for the last updated field - used to store the
     58  
          * last updated time of the Modified NVD CVE xml file.
     59  
          */
     60  
         public static final String LAST_UPDATED = "lastupdated.modified";
     61  
         /**
     62  
          * Stores the last updated time for each of the NVD CVE files. These
     63  
          * timestamps should be updated if we process the modified file within 7
     64  
          * days of the last update.
     65  
          */
     66  
         public static final String LAST_UPDATED_BASE = "lastupdated.";
     67  
         /**
     68  
          * A collection of properties about the data.
     69  
          */
     70  2
         private Properties properties = new Properties();
     71  
         /**
     72  
          * Indicates whether or not the updates are using a batch update mode or
     73  
          * not.
     74  
          */
     75  
         private boolean batchUpdateMode;
     76  
     
     77  
         /**
     78  
          * Get the value of batchUpdateMode.
     79  
          *
     80  
          * @return the value of batchUpdateMode
     81  
          */
     82  
         protected boolean isBatchUpdateMode() {
     83  8
             return batchUpdateMode;
     84  
         }
     85  
     
     86  
         /**
     87  
          * Set the value of batchUpdateMode.
     88  
          *
     89  
          * @param batchUpdateMode new value of batchUpdateMode
     90  
          */
     91  
         protected void setBatchUpdateMode(boolean batchUpdateMode) {
     92  0
             this.batchUpdateMode = batchUpdateMode;
     93  0
         }
     94  
     
     95  
         /**
     96  
          * Constructs a new data properties object.
     97  
          */
     98  2
         public DataStoreMetaInfo() {
     99  2
             batchUpdateMode = !Settings.getString(Settings.KEYS.BATCH_UPDATE_URL, "").isEmpty();
     100  2
             loadProperties();
     101  2
         }
     102  
     
     103  
         /**
     104  
          * Loads the data's meta properties.
     105  
          */
     106  
         private void loadProperties() {
     107  2
             final File file = getPropertiesFile();
     108  2
             if (file.exists()) {
     109  0
                 InputStream is = null;
     110  
                 try {
     111  0
                     is = new FileInputStream(file);
     112  0
                 } catch (FileNotFoundException ignore) {
     113  
                     //we will never get here as we check for existence above.
     114  0
                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ignore);
     115  0
                 }
     116  
                 try {
     117  0
                     properties.load(is);
     118  0
                 } catch (IOException ex) {
     119  0
                     final String msg = String.format("Unable to load properties file '%s'", file.getPath());
     120  0
                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.WARNING, msg);
     121  0
                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
     122  
                 } finally {
     123  0
                     if (is != null) {
     124  
                         try {
     125  0
                             is.close();
     126  0
                         } catch (IOException ex) {
     127  0
                             final String msg = String.format("Unable to close properties file '%s'", file.getPath());
     128  0
                             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.WARNING, msg);
     129  0
                             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
     130  0
                         }
     131  
                     }
     132  
                 }
     133  
             }
     134  2
         }
     135  
     
     136  
         /**
     137  
          * Returns whether or not any properties are set.
     138  
          *
     139  
          * @return whether or not any properties are set
     140  
          */
     141  
         public boolean isEmpty() {
     142  2
             return properties.isEmpty();
     143  
         }
     144  
     
     145  
         /**
     146  
          * Writes a properties file containing the last updated date to the
     147  
          * VULNERABLE_CPE directory.
     148  
          *
     149  
          * @param updatedValue the updated nvdcve entry
     150  
          * @throws UpdateException is thrown if there is an update exception
     151  
          */
     152  
         public void save(NvdCveInfo updatedValue) throws UpdateException {
     153  1
             if (updatedValue == null) {
     154  0
                 return;
     155  
             }
     156  1
             final File cveProp = getPropertiesFile();
     157  1
             final Properties prop = new Properties();
     158  1
             if (cveProp.exists()) {
     159  1
                 FileInputStream in = null;
     160  
                 try {
     161  1
                     in = new FileInputStream(cveProp);
     162  1
                     prop.load(in);
     163  0
                 } catch (Exception ignoreMe) {
     164  0
                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ignoreMe);
     165  
                 } finally {
     166  1
                     if (in != null) {
     167  
                         try {
     168  1
                             in.close();
     169  0
                         } catch (Exception ignoreMeToo) {
     170  0
                             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ignoreMeToo);
     171  1
                         }
     172  
                     }
     173  
                 }
     174  
             }
     175  1
             prop.put("version", CveDB.DB_SCHEMA_VERSION);
     176  1
             prop.put(LAST_UPDATED_BASE + updatedValue.getId(), String.valueOf(updatedValue.getTimestamp()));
     177  
     
     178  1
             OutputStream os = null;
     179  1
             OutputStreamWriter out = null;
     180  
             try {
     181  1
                 os = new FileOutputStream(cveProp);
     182  1
                 out = new OutputStreamWriter(os, "UTF-8");
     183  1
                 prop.store(out, "Meta data about data and data sources used by dependency-check");
     184  0
             } catch (FileNotFoundException ex) {
     185  0
                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
     186  0
                 throw new UpdateException("Unable to find last updated properties file.", ex);
     187  0
             } catch (IOException ex) {
     188  0
                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
     189  0
                 throw new UpdateException("Unable to update last updated properties file.", ex);
     190  
             } finally {
     191  1
                 if (out != null) {
     192  
                     try {
     193  1
                         out.close();
     194  0
                     } catch (IOException ex) {
     195  0
                         Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ex);
     196  1
                     }
     197  
                 }
     198  1
                 if (os != null) {
     199  
                     try {
     200  1
                         os.close();
     201  0
                     } catch (IOException ex) {
     202  0
                         Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ex);
     203  1
                     }
     204  
                 }
     205  
             }
     206  1
         }
     207  
     
     208  
         /**
     209  
          * Returns the property value for the given key. If the key is not contained
     210  
          * in the underlying properties null is returned.
     211  
          *
     212  
          * @param key the property key
     213  
          * @return the value of the property
     214  
          */
     215  
         public String getProperty(String key) {
     216  0
             return properties.getProperty(key);
     217  
         }
     218  
     
     219  
         /**
     220  
          * Returns the property value for the given key. If the key is not contained
     221  
          * in the underlying properties the default value is returned.
     222  
          *
     223  
          * @param key the property key
     224  
          * @param defaultValue the default value
     225  
          * @return the value of the property
     226  
          */
     227  
         public String getProperty(String key, String defaultValue) {
     228  0
             return properties.getProperty(key, defaultValue);
     229  
         }
     230  
     
     231  
         /**
     232  
          * Retrieves the properties file.
     233  
          *
     234  
          * @return the properties file
     235  
          */
     236  
         public static File getPropertiesFile() {
     237  7
             final File dataDirectory = Settings.getFile(Settings.KEYS.DATA_DIRECTORY);
     238  7
             final File file = new File(dataDirectory, UPDATE_PROPERTIES_FILE);
     239  7
             return file;
     240  
         }
     241  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.DatabaseUpdater.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.DatabaseUpdater.html new file mode 100644 index 000000000..42345562e --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.DatabaseUpdater.html @@ -0,0 +1,901 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.update.DatabaseUpdater
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    DatabaseUpdater
    33%
    90/267
    30%
    33/110
    10
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.update;
     20  
     
     21  
     import org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler;
     22  
     import org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler;
     23  
     import org.owasp.dependencycheck.data.nvdcve.InvalidDataException;
     24  
     import java.io.File;
     25  
     import java.io.FileNotFoundException;
     26  
     import java.io.IOException;
     27  
     import javax.xml.parsers.ParserConfigurationException;
     28  
     import org.xml.sax.SAXException;
     29  
     import org.owasp.dependencycheck.data.CachedWebDataSource;
     30  
     import java.net.MalformedURLException;
     31  
     import java.net.URISyntaxException;
     32  
     import java.net.URL;
     33  
     import java.sql.SQLException;
     34  
     import java.util.Calendar;
     35  
     import java.util.Date;
     36  
     import java.util.List;
     37  
     import java.util.Map;
     38  
     import java.util.TreeMap;
     39  
     import java.util.logging.Level;
     40  
     import java.util.logging.Logger;
     41  
     import javax.xml.parsers.SAXParser;
     42  
     import javax.xml.parsers.SAXParserFactory;
     43  
     import org.owasp.dependencycheck.data.UpdateException;
     44  
     import org.owasp.dependencycheck.data.cpe.CpeIndexWriter;
     45  
     import org.owasp.dependencycheck.data.nvdcve.CveDB;
     46  
     import org.owasp.dependencycheck.dependency.VulnerableSoftware;
     47  
     import org.owasp.dependencycheck.utils.DownloadFailedException;
     48  
     import org.owasp.dependencycheck.utils.Downloader;
     49  
     import org.owasp.dependencycheck.utils.FileUtils;
     50  
     import org.owasp.dependencycheck.utils.Settings;
     51  
     import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
     52  
     import org.owasp.dependencycheck.utils.InvalidSettingException;
     53  
     import static org.owasp.dependencycheck.data.update.DataStoreMetaInfo.BATCH;
     54  
     import static org.owasp.dependencycheck.data.update.DataStoreMetaInfo.MODIFIED;
     55  
     
     56  
     /**
     57  
      * Class responsible for updating the CPE and NVDCVE data stores.
     58  
      *
     59  
      * @author Jeremy Long (jeremy.long@owasp.org)
     60  
      */
     61  2
     public class DatabaseUpdater implements CachedWebDataSource {
     62  
     
     63  
         /**
     64  
          * Utility to read and write meta-data about the data.
     65  
          */
     66  2
         private DataStoreMetaInfo properties = null;
     67  
         /**
     68  
          * Reference to the Cve Database.
     69  
          */
     70  2
         private CveDB cveDB = null;
     71  
         /**
     72  
          * Reference to the Cpe Index.
     73  
          */
     74  2
         private CpeIndexWriter cpeIndex = null;
     75  
         /**
     76  
          * A flag indicating whether or not the batch update should be performed.
     77  
          */
     78  
         private boolean doBatchUpdate;
     79  
     
     80  
         /**
     81  
          * Get the value of doBatchUpdate
     82  
          *
     83  
          * @return the value of doBatchUpdate
     84  
          */
     85  
         protected boolean isDoBatchUpdate() {
     86  2
             return doBatchUpdate;
     87  
         }
     88  
     
     89  
         /**
     90  
          * Set the value of doBatchUpdate
     91  
          *
     92  
          * @param doBatchUpdate new value of doBatchUpdate
     93  
          */
     94  
         protected void setDoBatchUpdate(boolean doBatchUpdate) {
     95  2
             this.doBatchUpdate = doBatchUpdate;
     96  2
         }
     97  
     
     98  
         /**
     99  
          * <p>Downloads the latest NVD CVE XML file from the web and imports it into
     100  
          * the current CVE Database.</p>
     101  
          *
     102  
          * @throws UpdateException is thrown if there is an error updating the
     103  
          * database
     104  
          */
     105  
         @Override
     106  
         public void update() throws UpdateException {
     107  2
             doBatchUpdate = false;
     108  2
             properties = new DataStoreMetaInfo();
     109  
             try {
     110  2
                 final Map<String, NvdCveInfo> update = updateNeeded();
     111  2
                 int maxUpdates = 0;
     112  2
                 for (NvdCveInfo cve : update.values()) {
     113  2
                     if (cve.getNeedsUpdate()) {
     114  0
                         maxUpdates += 1;
     115  
                     }
     116  
                 }
     117  2
                 if (maxUpdates > 3 && !properties.isBatchUpdateMode()) {
     118  0
                     Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
     119  
                             "NVD CVE requires several updates; this could take a couple of minutes.");
     120  
                 }
     121  2
                 if (maxUpdates > 0 && !isDoBatchUpdate()) {
     122  0
                     openDataStores();
     123  
                 }
     124  
     
     125  2
                 if (properties.isBatchUpdateMode() && isDoBatchUpdate()) {
     126  
                     try {
     127  2
                         performBatchUpdate();
     128  2
                         openDataStores();
     129  0
                     } catch (IOException ex) {
     130  0
                         throw new UpdateException("Unable to perform batch update", ex);
     131  2
                     }
     132  
                 }
     133  
     
     134  2
                 int count = 0;
     135  2
                 for (NvdCveInfo cve : update.values()) {
     136  2
                     if (cve.getNeedsUpdate()) {
     137  0
                         count += 1;
     138  0
                         Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
     139  
                                 "Updating NVD CVE ({0} of {1})", new Object[]{count, maxUpdates});
     140  0
                         URL url = new URL(cve.getUrl());
     141  0
                         File outputPath = null;
     142  0
                         File outputPath12 = null;
     143  
                         try {
     144  0
                             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
     145  
                                     "Downloading {0}", cve.getUrl());
     146  0
                             outputPath = File.createTempFile("cve" + cve.getId() + "_", ".xml");
     147  0
                             Downloader.fetchFile(url, outputPath);
     148  
     
     149  0
                             url = new URL(cve.getOldSchemaVersionUrl());
     150  0
                             outputPath12 = File.createTempFile("cve_1_2_" + cve.getId() + "_", ".xml");
     151  0
                             Downloader.fetchFile(url, outputPath12);
     152  
     
     153  0
                             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
     154  
                                     "Processing {0}", cve.getUrl());
     155  
     
     156  0
                             importXML(outputPath, outputPath12);
     157  
     
     158  0
                             cveDB.commit();
     159  0
                             cpeIndex.commit();
     160  
     
     161  0
                             properties.save(cve);
     162  
     
     163  0
                             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
     164  
                                     "Completed update {0} of {1}", new Object[]{count, maxUpdates});
     165  0
                         } catch (FileNotFoundException ex) {
     166  0
                             throw new UpdateException(ex);
     167  0
                         } catch (ParserConfigurationException ex) {
     168  0
                             throw new UpdateException(ex);
     169  0
                         } catch (SAXException ex) {
     170  0
                             throw new UpdateException(ex);
     171  0
                         } catch (IOException ex) {
     172  0
                             throw new UpdateException(ex);
     173  0
                         } catch (SQLException ex) {
     174  0
                             throw new UpdateException(ex);
     175  0
                         } catch (DatabaseException ex) {
     176  0
                             throw new UpdateException(ex);
     177  0
                         } catch (ClassNotFoundException ex) {
     178  0
                             throw new UpdateException(ex);
     179  
                         } finally {
     180  0
                             boolean deleted = false;
     181  
                             try {
     182  0
                                 if (outputPath != null && outputPath.exists()) {
     183  0
                                     deleted = outputPath.delete();
     184  
                                 }
     185  
                             } finally {
     186  0
                                 if (outputPath != null && (outputPath.exists() || !deleted)) {
     187  0
                                     outputPath.deleteOnExit();
     188  
                                 }
     189  
                             }
     190  
                             try {
     191  0
                                 deleted = false;
     192  0
                                 if (outputPath12 != null && outputPath12.exists()) {
     193  0
                                     deleted = outputPath12.delete();
     194  
                                 }
     195  
                             } finally {
     196  0
                                 if (outputPath12 != null && (outputPath12.exists() || !deleted)) {
     197  0
                                     outputPath12.deleteOnExit();
     198  
                                 }
     199  
                             }
     200  0
                         }
     201  2
                     }
     202  
                 }
     203  2
                 if (maxUpdates >= 1) { //ensure the modified file date gets written
     204  0
                     properties.save(update.get(MODIFIED));
     205  0
                     cveDB.cleanupDatabase();
     206  
                 }
     207  2
                 if (update.get(BATCH) != null) {
     208  1
                     properties.save(update.get(BATCH));
     209  
                 }
     210  0
             } catch (MalformedURLException ex) {
     211  0
                 throw new UpdateException(ex);
     212  0
             } catch (DownloadFailedException ex) {
     213  0
                 throw new UpdateException(ex);
     214  
             } finally {
     215  2
                 closeDataStores();
     216  2
             }
     217  2
         }
     218  
     
     219  
         /**
     220  
          * Imports the NVD CVE XML File into the Lucene Index.
     221  
          *
     222  
          * @param file the file containing the NVD CVE XML
     223  
          * @param oldVersion contains the file containing the NVD CVE XML 1.2
     224  
          * @throws ParserConfigurationException is thrown if there is a parser
     225  
          * configuration exception
     226  
          * @throws SAXException is thrown if there is a SAXException
     227  
          * @throws IOException is thrown if there is a IO Exception
     228  
          * @throws SQLException is thrown if there is a SQL exception
     229  
          * @throws DatabaseException is thrown if there is a database exception
     230  
          * @throws ClassNotFoundException thrown if the h2 database driver cannot be
     231  
          * loaded
     232  
          */
     233  
         private void importXML(File file, File oldVersion)
     234  
                 throws ParserConfigurationException, SAXException, IOException, SQLException, DatabaseException, ClassNotFoundException {
     235  
     
     236  0
             final SAXParserFactory factory = SAXParserFactory.newInstance();
     237  0
             final SAXParser saxParser = factory.newSAXParser();
     238  
     
     239  0
             final NvdCve12Handler cve12Handler = new NvdCve12Handler();
     240  0
             saxParser.parse(oldVersion, cve12Handler);
     241  0
             final Map<String, List<VulnerableSoftware>> prevVersionVulnMap = cve12Handler.getVulnerabilities();
     242  
     
     243  0
             final NvdCve20Handler cve20Handler = new NvdCve20Handler();
     244  0
             cve20Handler.setCveDB(cveDB);
     245  0
             cve20Handler.setPrevVersionVulnMap(prevVersionVulnMap);
     246  0
             cve20Handler.setCpeIndex(cpeIndex);
     247  0
             saxParser.parse(file, cve20Handler);
     248  0
         }
     249  
     
     250  
         /**
     251  
          * Deletes the existing data directories.
     252  
          *
     253  
          * @throws IOException thrown if the directory cannot be deleted
     254  
          */
     255  
         protected void deleteExistingData() throws IOException {
     256  4
             File data = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY);
     257  4
             if (data.exists()) {
     258  2
                 FileUtils.delete(data);
     259  
             }
     260  4
             data = Settings.getFile(Settings.KEYS.CPE_DATA_DIRECTORY);
     261  4
             if (data.exists()) {
     262  2
                 FileUtils.delete(data);
     263  
             }
     264  4
             data = DataStoreMetaInfo.getPropertiesFile();
     265  4
             if (data.exists()) {
     266  2
                 FileUtils.delete(data);
     267  
             }
     268  4
         }
     269  
     
     270  
         /**
     271  
          * Performs the batch update based on the configured batch update URL.
     272  
          *
     273  
          * @throws UpdateException thrown if there is an exception during the update
     274  
          * process
     275  
          */
     276  
         private void performBatchUpdate() throws UpdateException {
     277  2
             if (properties.isBatchUpdateMode() && doBatchUpdate) {
     278  2
                 final String batchSrc = Settings.getString(Settings.KEYS.BATCH_UPDATE_URL);
     279  2
                 File tmp = null;
     280  
                 try {
     281  2
                     deleteExistingData();
     282  2
                     final File dataDirectory = CveDB.getDataDirectory().getParentFile();
     283  2
                     final URL batchUrl = new URL(batchSrc);
     284  2
                     if ("file".equals(batchUrl.getProtocol())) {
     285  
                         try {
     286  2
                             tmp = new File(batchUrl.toURI());
     287  0
                         } catch (URISyntaxException ex) {
     288  0
                             final String msg = String.format("Invalid batch update URI: %s", batchSrc);
     289  0
                             throw new UpdateException(msg, ex);
     290  2
                         }
     291  0
                     } else if ("http".equals(batchUrl.getProtocol())
     292  
                             || "https".equals(batchUrl.getProtocol())) {
     293  0
                         tmp = File.createTempFile("batch_", ".zip");
     294  0
                         Downloader.fetchFile(batchUrl, tmp);
     295  
                     }
     296  
                     //TODO add FTP?
     297  2
                     FileUtils.extractFiles(tmp, dataDirectory);
     298  
     
     299  0
                 } catch (IOException ex) {
     300  0
                     final String msg = String.format("IO Exception Occured performing batch update using: %s", batchSrc);
     301  0
                     throw new UpdateException(msg, ex);
     302  
                 } finally {
     303  2
                     if (tmp != null && !tmp.delete()) {
     304  0
                         tmp.deleteOnExit();
     305  
                     }
     306  
                 }
     307  
             }
     308  2
         }
     309  
     
     310  
         /**
     311  
          * Closes the CVE and CPE data stores.
     312  
          */
     313  
         private void closeDataStores() {
     314  2
             if (cveDB != null) {
     315  
                 try {
     316  2
                     cveDB.close();
     317  0
                 } catch (Exception ignore) {
     318  0
                     Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINEST, "Error closing the cveDB", ignore);
     319  2
                 }
     320  
             }
     321  2
             if (cpeIndex != null) {
     322  
                 try {
     323  2
                     cpeIndex.close();
     324  0
                 } catch (Exception ignore) {
     325  0
                     Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINEST, "Error closing the cpeIndex", ignore);
     326  2
                 }
     327  
             }
     328  2
         }
     329  
     
     330  
         /**
     331  
          * Opens the CVE and CPE data stores.
     332  
          *
     333  
          * @throws UpdateException thrown if a data store cannot be opened
     334  
          */
     335  
         private void openDataStores() throws UpdateException {
     336  
             //open the cve and cpe data stores
     337  
             try {
     338  2
                 cveDB = new CveDB();
     339  2
                 cveDB.open();
     340  2
                 cpeIndex = new CpeIndexWriter();
     341  2
                 cpeIndex.open();
     342  0
             } catch (IOException ex) {
     343  0
                 closeDataStores();
     344  0
                 Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "IO Error opening databases", ex);
     345  0
                 throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
     346  0
             } catch (SQLException ex) {
     347  0
                 closeDataStores();
     348  0
                 Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "SQL Exception opening databases", ex);
     349  0
                 throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
     350  0
             } catch (DatabaseException ex) {
     351  0
                 closeDataStores();
     352  0
                 Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "Database Exception opening databases", ex);
     353  0
                 throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
     354  0
             } catch (ClassNotFoundException ex) {
     355  0
                 closeDataStores();
     356  0
                 Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "Class not found exception opening databases", ex);
     357  0
                 throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
     358  2
             }
     359  2
         }
     360  
     
     361  
         /**
     362  
          * Determines if the index needs to be updated. This is done by fetching the
     363  
          * NVD CVE meta data and checking the last update date. If the data needs to
     364  
          * be refreshed this method will return the NvdCveUrl for the files that
     365  
          * need to be updated.
     366  
          *
     367  
          * @return the NvdCveUrl of the files that need to be updated.
     368  
          * @throws MalformedURLException is thrown if the URL for the NVD CVE Meta
     369  
          * data is incorrect.
     370  
          * @throws DownloadFailedException is thrown if there is an error.
     371  
          * downloading the NVD CVE download data file.
     372  
          * @throws UpdateException Is thrown if there is an issue with the last
     373  
          * updated properties file.
     374  
          */
     375  
         private Map<String, NvdCveInfo> updateNeeded() throws MalformedURLException, DownloadFailedException, UpdateException {
     376  
     
     377  
             Map<String, NvdCveInfo> currentlyPublished;
     378  
             try {
     379  2
                 currentlyPublished = retrieveCurrentTimestampsFromWeb();
     380  0
             } catch (InvalidDataException ex) {
     381  0
                 final String msg = "Unable to retrieve valid timestamp from nvd cve downloads page";
     382  0
                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, msg, ex);
     383  0
                 throw new DownloadFailedException(msg, ex);
     384  0
             } catch (InvalidSettingException ex) {
     385  0
                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, "Invalid setting found when retrieving timestamps", ex);
     386  0
                 throw new DownloadFailedException("Invalid settings", ex);
     387  2
             }
     388  
     
     389  2
             if (currentlyPublished == null) {
     390  0
                 throw new DownloadFailedException("Unable to retrieve the timestamps of the currently published NVD CVE data");
     391  
             }
     392  
     
     393  
     //        final File cpeDataDirectory;
     394  
     //        try {
     395  
     //            cpeDataDirectory = CveDB.getDataDirectory();
     396  
     //        } catch (IOException ex) {
     397  
     //            String msg;
     398  
     //            try {
     399  
     //                msg = String.format("Unable to create the CVE Data Directory '%s'",
     400  
     //                        Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY).getCanonicalPath());
     401  
     //            } catch (IOException ex1) {
     402  
     //                msg = String.format("Unable to create the CVE Data Directory, this is likely a configuration issue: '%s%s%s'",
     403  
     //                        Settings.getString(Settings.KEYS.DATA_DIRECTORY, ""),
     404  
     //                        File.separator,
     405  
     //                        Settings.getString(Settings.KEYS.CVE_DATA_DIRECTORY, ""));
     406  
     //            }
     407  
     //            throw new UpdateException(msg, ex);
     408  
     //        }
     409  
     
     410  2
             if (!properties.isEmpty()) {
     411  
                 try {
     412  0
                     boolean deleteAndRecreate = false;
     413  
                     float version;
     414  
     
     415  0
                     if (properties.getProperty("version") == null) {
     416  0
                         deleteAndRecreate = true;
     417  
                     } else {
     418  
                         try {
     419  0
                             version = Float.parseFloat(properties.getProperty("version"));
     420  0
                             final float currentVersion = Float.parseFloat(CveDB.DB_SCHEMA_VERSION);
     421  0
                             if (currentVersion > version) {
     422  0
                                 deleteAndRecreate = true;
     423  
                             }
     424  0
                         } catch (NumberFormatException ex) {
     425  0
                             deleteAndRecreate = true;
     426  0
                         }
     427  
                     }
     428  
     
     429  0
                     final NvdCveInfo batchInfo = currentlyPublished.get(BATCH);
     430  0
                     if (properties.isBatchUpdateMode() && batchInfo != null) {
     431  0
                         final long lastUpdated = Long.parseLong(properties.getProperty(DataStoreMetaInfo.BATCH, "0"));
     432  0
                         if (lastUpdated != batchInfo.getTimestamp()) {
     433  0
                             deleteAndRecreate = true;
     434  
                         }
     435  
                     }
     436  
     
     437  0
                     if (deleteAndRecreate) {
     438  0
                         setDoBatchUpdate(properties.isBatchUpdateMode());
     439  
                         try {
     440  0
                             deleteExistingData();
     441  0
                         } catch (IOException ex) {
     442  0
                             final String msg = "Unable to delete existing data";
     443  0
                             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.WARNING, msg);
     444  0
                             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, null, ex);
     445  0
                         }
     446  0
                         return currentlyPublished;
     447  
                     }
     448  
     
     449  0
                     final long lastUpdated = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED, "0"));
     450  0
                     final Date now = new Date();
     451  0
                     final int days = Settings.getInt(Settings.KEYS.CVE_MODIFIED_VALID_FOR_DAYS, 7);
     452  0
                     final int start = Settings.getInt(Settings.KEYS.CVE_START_YEAR, 2002);
     453  0
                     final int end = Calendar.getInstance().get(Calendar.YEAR);
     454  0
                     if (lastUpdated == currentlyPublished.get(MODIFIED).getTimestamp()) {
     455  0
                         currentlyPublished.clear(); //we don't need to update anything.
     456  0
                         setDoBatchUpdate(properties.isBatchUpdateMode());
     457  0
                     } else if (withinRange(lastUpdated, now.getTime(), days)) {
     458  0
                         currentlyPublished.get(MODIFIED).setNeedsUpdate(true);
     459  0
                         if (properties.isBatchUpdateMode()) {
     460  0
                             setDoBatchUpdate(false);
     461  
                         } else {
     462  0
                             for (int i = start; i <= end; i++) {
     463  0
                                 currentlyPublished.get(String.valueOf(i)).setNeedsUpdate(false);
     464  
                             }
     465  
                         }
     466  0
                     } else if (properties.isBatchUpdateMode()) {
     467  0
                         currentlyPublished.get(MODIFIED).setNeedsUpdate(true);
     468  0
                         setDoBatchUpdate(true);
     469  
                     } else { //we figure out which of the several XML files need to be downloaded.
     470  0
                         currentlyPublished.get(MODIFIED).setNeedsUpdate(false);
     471  0
                         for (int i = start; i <= end; i++) {
     472  0
                             final NvdCveInfo cve = currentlyPublished.get(String.valueOf(i));
     473  0
                             long currentTimestamp = 0;
     474  
                             try {
     475  0
                                 currentTimestamp = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED_BASE + String.valueOf(i), "0"));
     476  0
                             } catch (NumberFormatException ex) {
     477  0
                                 final String msg = String.format("Error parsing '%s' '%s' from nvdcve.lastupdated",
     478  
                                         DataStoreMetaInfo.LAST_UPDATED_BASE, String.valueOf(i));
     479  0
                                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, msg, ex);
     480  0
                             }
     481  0
                             if (currentTimestamp == cve.getTimestamp()) {
     482  0
                                 cve.setNeedsUpdate(false); //they default to true.
     483  
                             }
     484  
                         }
     485  
                     }
     486  0
                 } catch (NumberFormatException ex) {
     487  0
                     final String msg = "An invalid schema version or timestamp exists in the data.properties file.";
     488  0
                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.WARNING, msg);
     489  0
                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
     490  0
                     setDoBatchUpdate(properties.isBatchUpdateMode());
     491  0
                 }
     492  
             } else {
     493  2
                 setDoBatchUpdate(properties.isBatchUpdateMode());
     494  
             }
     495  2
             return currentlyPublished;
     496  
         }
     497  
     
     498  
         /**
     499  
          * Determines if the epoch date is within the range specified of the
     500  
          * compareTo epoch time. This takes the (compareTo-date)/1000/60/60/24 to
     501  
          * get the number of days. If the calculated days is less then the range the
     502  
          * date is considered valid.
     503  
          *
     504  
          * @param date the date to be checked.
     505  
          * @param compareTo the date to compare to.
     506  
          * @param range the range in days to be considered valid.
     507  
          * @return whether or not the date is within the range.
     508  
          */
     509  
         private boolean withinRange(long date, long compareTo, int range) {
     510  0
             final double differenceInDays = (compareTo - date) / 1000.0 / 60.0 / 60.0 / 24.0;
     511  0
             return differenceInDays < range;
     512  
         }
     513  
     
     514  
         /**
     515  
          * Retrieves the timestamps from the NVD CVE meta data file.
     516  
          *
     517  
          * @return the timestamp from the currently published nvdcve downloads page
     518  
          * @throws MalformedURLException thrown if the URL for the NVD CCE Meta data
     519  
          * is incorrect.
     520  
          * @throws DownloadFailedException thrown if there is an error downloading
     521  
          * the nvd cve meta data file
     522  
          * @throws InvalidDataException thrown if there is an exception parsing the
     523  
          * timestamps
     524  
          * @throws InvalidSettingException thrown if the settings are invalid
     525  
          */
     526  
         private Map<String, NvdCveInfo> retrieveCurrentTimestampsFromWeb()
     527  
                 throws MalformedURLException, DownloadFailedException, InvalidDataException, InvalidSettingException {
     528  
     
     529  2
             final Map<String, NvdCveInfo> map = new TreeMap<String, NvdCveInfo>();
     530  2
             String retrieveUrl = Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL);
     531  2
             if (retrieveUrl == null && properties.isBatchUpdateMode()) {
     532  1
                 final NvdCveInfo item = new NvdCveInfo();
     533  1
                 retrieveUrl = Settings.getString(Settings.KEYS.BATCH_UPDATE_URL);
     534  1
                 if (retrieveUrl == null) {
     535  0
                     final String msg = "Invalid configuration - neither the modified or batch update URLs are specified in the configuration.";
     536  0
                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.SEVERE, msg);
     537  0
                     throw new InvalidSettingException(msg);
     538  
                 }
     539  1
                 item.setTimestamp(Downloader.getLastModified(new URL(retrieveUrl)));
     540  1
                 item.setId(BATCH);
     541  1
                 item.setNeedsUpdate(false);
     542  1
                 map.put(BATCH, item);
     543  1
             } else {
     544  1
                 NvdCveInfo item = new NvdCveInfo();
     545  1
                 item.setNeedsUpdate(false); //the others default to true, to make life easier later this should default to false.
     546  1
                 item.setId(MODIFIED);
     547  1
                 item.setUrl(retrieveUrl);
     548  1
                 item.setOldSchemaVersionUrl(Settings.getString(Settings.KEYS.CVE_MODIFIED_12_URL));
     549  
     
     550  1
                 item.setTimestamp(Downloader.getLastModified(new URL(retrieveUrl)));
     551  1
                 map.put(MODIFIED, item);
     552  
     
     553  
                 //only add these urls if we are not in batch mode
     554  1
                 if (!properties.isBatchUpdateMode()) {
     555  0
                     final int start = Settings.getInt(Settings.KEYS.CVE_START_YEAR);
     556  0
                     final int end = Calendar.getInstance().get(Calendar.YEAR);
     557  0
                     final String baseUrl20 = Settings.getString(Settings.KEYS.CVE_SCHEMA_2_0);
     558  0
                     final String baseUrl12 = Settings.getString(Settings.KEYS.CVE_SCHEMA_1_2);
     559  0
                     for (int i = start; i <= end; i++) {
     560  0
                         retrieveUrl = String.format(baseUrl20, i);
     561  0
                         item = new NvdCveInfo();
     562  0
                         item.setId(Integer.toString(i));
     563  0
                         item.setUrl(retrieveUrl);
     564  0
                         item.setOldSchemaVersionUrl(String.format(baseUrl12, i));
     565  0
                         item.setTimestamp(Downloader.getLastModified(new URL(retrieveUrl)));
     566  0
                         map.put(item.getId(), item);
     567  
                     }
     568  
                 }
     569  
             }
     570  2
             return map;
     571  
         }
     572  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.NvdCveInfo.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.NvdCveInfo.html new file mode 100644 index 000000000..bef1067ca --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.data.update.NvdCveInfo.html @@ -0,0 +1,283 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.data.update.NvdCveInfo
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    NvdCveInfo
    88%
    15/17
    N/A
    1
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.data.update;
     20  
     
     21  
     /**
     22  
      * A pojo that contains the Url and timestamp of the current NvdCve XML files.
     23  
      *
     24  
      * @author Jeremy Long (jeremy.long@owasp.org)
     25  
      */
     26  2
     public class NvdCveInfo {
     27  
     
     28  
         /**
     29  
          * an id.
     30  
          */
     31  
         private String id;
     32  
     
     33  
         /**
     34  
          * Get the value of id.
     35  
          *
     36  
          * @return the value of id
     37  
          */
     38  
         public String getId() {
     39  1
             return id;
     40  
         }
     41  
     
     42  
         /**
     43  
          * Set the value of id.
     44  
          *
     45  
          * @param id new value of id
     46  
          */
     47  
         public void setId(String id) {
     48  2
             this.id = id;
     49  2
         }
     50  
         /**
     51  
          * a url.
     52  
          */
     53  
         private String url;
     54  
     
     55  
         /**
     56  
          * Get the value of url.
     57  
          *
     58  
          * @return the value of url
     59  
          */
     60  
         public String getUrl() {
     61  0
             return url;
     62  
         }
     63  
     
     64  
         /**
     65  
          * Set the value of url.
     66  
          *
     67  
          * @param url new value of url
     68  
          */
     69  
         public void setUrl(String url) {
     70  1
             this.url = url;
     71  1
         }
     72  
         /**
     73  
          * The 1.2 schema URL.
     74  
          */
     75  
         private String oldSchemaVersionUrl;
     76  
     
     77  
         /**
     78  
          * Get the value of oldSchemaVersionUrl.
     79  
          *
     80  
          * @return the value of oldSchemaVersionUrl
     81  
          */
     82  
         public String getOldSchemaVersionUrl() {
     83  0
             return oldSchemaVersionUrl;
     84  
         }
     85  
     
     86  
         /**
     87  
          * Set the value of oldSchemaVersionUrl.
     88  
          *
     89  
          * @param oldSchemaVersionUrl new value of oldSchemaVersionUrl
     90  
          */
     91  
         public void setOldSchemaVersionUrl(String oldSchemaVersionUrl) {
     92  1
             this.oldSchemaVersionUrl = oldSchemaVersionUrl;
     93  1
         }
     94  
         /**
     95  
          * a timestamp - epoch time.
     96  
          */
     97  
         private long timestamp;
     98  
     
     99  
         /**
     100  
          * Get the value of timestamp - epoch time.
     101  
          *
     102  
          * @return the value of timestamp - epoch time
     103  
          */
     104  
         public long getTimestamp() {
     105  1
             return timestamp;
     106  
         }
     107  
     
     108  
         /**
     109  
          * Set the value of timestamp - epoch time.
     110  
          *
     111  
          * @param timestamp new value of timestamp - epoch time
     112  
          */
     113  
         public void setTimestamp(long timestamp) {
     114  2
             this.timestamp = timestamp;
     115  2
         }
     116  
         /**
     117  
          * indicates whether or not this item should be updated.
     118  
          */
     119  2
         private boolean needsUpdate = true;
     120  
     
     121  
         /**
     122  
          * Get the value of needsUpdate.
     123  
          *
     124  
          * @return the value of needsUpdate
     125  
          */
     126  
         public boolean getNeedsUpdate() {
     127  4
             return needsUpdate;
     128  
         }
     129  
     
     130  
         /**
     131  
          * Set the value of needsUpdate.
     132  
          *
     133  
          * @param needsUpdate new value of needsUpdate
     134  
          */
     135  
         public void setNeedsUpdate(boolean needsUpdate) {
     136  2
             this.needsUpdate = needsUpdate;
     137  2
         }
     138  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Dependency.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Dependency.html index 5df566a89..d5328e036 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Dependency.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Dependency.html @@ -99,7 +99,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     41  
      */
    -  42  174
     public class Dependency implements Comparable<Dependency> {
    +  42  8
     public class Dependency implements Comparable<Dependency> {
     43  
     
     44   @@ -190,13 +190,13 @@
          * Constructs a new Dependency object.
     87  
          */
    -  88  282
         public Dependency() {
    -  89  282
             vendorEvidence = new EvidenceCollection();
    -  90  282
             productEvidence = new EvidenceCollection();
    -  91  282
             versionEvidence = new EvidenceCollection();
    -  92  282
             identifiers = new TreeSet<Identifier>();
    -  93  282
             vulnerabilities = new TreeSet<Vulnerability>(new VulnerabilityComparator());
    -  94  282
         }
    +  88  42
         public Dependency() {
    +  89  42
             vendorEvidence = new EvidenceCollection();
    +  90  42
             productEvidence = new EvidenceCollection();
    +  91  42
             versionEvidence = new EvidenceCollection();
    +  92  42
             identifiers = new TreeSet<Identifier>();
    +  93  42
             vulnerabilities = new TreeSet<Vulnerability>(new VulnerabilityComparator());
    +  94  42
         }
     95  
     
     96   @@ -211,13 +211,13 @@
          */
     101  
         public Dependency(File file) {
    -  102  228
             this();
    -  103  228
             this.actualFilePath = file.getPath();
    -  104  228
             this.filePath = this.actualFilePath;
    -  105  228
             this.fileName = file.getName();
    -  106  228
             this.fileExtension = FileUtils.getFileExtension(fileName);
    -  107  228
             determineHashes(file);
    -  108  228
         }
    +  102  24
             this();
    +  103  24
             this.actualFilePath = file.getPath();
    +  104  24
             this.filePath = this.actualFilePath;
    +  105  24
             this.fileName = file.getName();
    +  106  24
             this.fileExtension = FileUtils.getFileExtension(fileName);
    +  107  24
             determineHashes(file);
    +  108  24
         }
     109  
     
     110   @@ -232,7 +232,7 @@
          */
     115  
         public String getFileName() {
    -  116  792
             return this.fileName;
    +  116  63
             return this.fileName;
     117  
         }
     118   @@ -249,8 +249,8 @@
          */
     124  
         public void setFileName(String fileName) {
    -  125  183
             this.fileName = fileName;
    -  126  183
         }
    +  125  7
             this.fileName = fileName;
    +  126  7
         }
     127  
     
     128   @@ -265,8 +265,8 @@
          */
     133  
         public void setActualFilePath(String actualFilePath) {
    -  134  6
             this.actualFilePath = actualFilePath;
    -  135  6
         }
    +  134  2
             this.actualFilePath = actualFilePath;
    +  135  2
         }
     136  
     
     137   @@ -281,7 +281,7 @@
          */
     142  
         public String getActualFilePath() {
    -  143  294
             return this.actualFilePath;
    +  143  49
             return this.actualFilePath;
     144  
         }
     145   @@ -298,8 +298,8 @@
          */
     151  
         public void setFilePath(String filePath) {
    -  152  183
             this.filePath = filePath;
    -  153  183
         }
    +  152  7
             this.filePath = filePath;
    +  153  7
         }
     154  
     
     155   @@ -318,7 +318,7 @@
          */
     162  
         public String getFilePath() {
    -  163  183
             return this.filePath;
    +  163  7
             return this.filePath;
     164  
         }
     165   @@ -335,8 +335,8 @@
          */
     171  
         public void setFileExtension(String fileExtension) {
    -  172  6
             this.fileExtension = fileExtension;
    -  173  6
         }
    +  172  2
             this.fileExtension = fileExtension;
    +  173  2
         }
     174  
     
     175   @@ -351,7 +351,7 @@
          */
     180  
         public String getFileExtension() {
    -  181  183
             return this.fileExtension;
    +  181  7
             return this.fileExtension;
     182  
         }
     183   @@ -368,7 +368,7 @@
          */
     189  
         public String getMd5sum() {
    -  190  6
             return this.md5sum;
    +  190  2
             return this.md5sum;
     191  
         }
     192   @@ -385,8 +385,8 @@
          */
     198  
         public void setMd5sum(String md5sum) {
    -  199  231
             this.md5sum = md5sum;
    -  200  231
         }
    +  199  25
             this.md5sum = md5sum;
    +  200  25
         }
     201  
     
     202   @@ -401,7 +401,7 @@
          */
     207  
         public String getSha1sum() {
    -  208  6
             return this.sha1sum;
    +  208  2
             return this.sha1sum;
     209  
         }
     210   @@ -418,8 +418,8 @@
          */
     216  
         public void setSha1sum(String sha1sum) {
    -  217  231
             this.sha1sum = sha1sum;
    -  218  231
         }
    +  217  25
             this.sha1sum = sha1sum;
    +  218  25
         }
     219  
     
     220   @@ -434,7 +434,7 @@
          */
     225  
         public Set<Identifier> getIdentifiers() {
    -  226  99
             return this.identifiers;
    +  226  41
             return this.identifiers;
     227  
         }
     228   @@ -451,8 +451,8 @@
          */
     234  
         public void setIdentifiers(Set<Identifier> identifiers) {
    -  235  3
             this.identifiers = identifiers;
    -  236  3
         }
    +  235  1
             this.identifiers = identifiers;
    +  236  1
         }
     237  
     
     238   @@ -473,9 +473,9 @@
          */
     246  
         public void addIdentifier(String type, String value, String url) {
    -  247  3
             final Identifier i = new Identifier(type, value, url);
    -  248  3
             this.identifiers.add(i);
    -  249  3
         }
    +  247  1
             final Identifier i = new Identifier(type, value, url);
    +  248  1
             this.identifiers.add(i);
    +  249  1
         }
     250  
     
     251   @@ -492,8 +492,8 @@
          */
     257  
         public void addIdentifier(Identifier identifier) {
    -  258  48
             this.identifiers.add(identifier);
    -  259  48
         }
    +  258  32
             this.identifiers.add(identifier);
    +  259  32
         }
     260  
     
     261   @@ -508,7 +508,7 @@
          */
     266  
         public EvidenceCollection getEvidence() {
    -  267  3
             return EvidenceCollection.merge(this.productEvidence, this.vendorEvidence, this.versionEvidence);
    +  267  1
             return EvidenceCollection.merge(this.productEvidence, this.vendorEvidence, this.versionEvidence);
     268  
         }
     269   @@ -525,7 +525,7 @@
          */
     275  
         public EvidenceCollection getEvidenceUsed() {
    -  276  3
             return EvidenceCollection.mergeUsed(this.productEvidence, this.vendorEvidence, this.versionEvidence);
    +  276  1
             return EvidenceCollection.mergeUsed(this.productEvidence, this.vendorEvidence, this.versionEvidence);
     277  
         }
     278   @@ -542,7 +542,7 @@
          */
     284  
         public EvidenceCollection getVendorEvidence() {
    -  285  648
             return this.vendorEvidence;
    +  285  255
             return this.vendorEvidence;
     286  
         }
     287   @@ -559,7 +559,7 @@
          */
     293  
         public EvidenceCollection getProductEvidence() {
    -  294  1050
             return this.productEvidence;
    +  294  613
             return this.productEvidence;
     295  
         }
     296   @@ -576,7 +576,7 @@
          */
     302  
         public EvidenceCollection getVersionEvidence() {
    -  303  252
             return this.versionEvidence;
    +  303  143
             return this.versionEvidence;
     304  
         }
     305   @@ -585,7 +585,7 @@
          * A list of exceptions that occurred during analysis of this dependency.
     307  
          */
    -  308  282
         private List<Exception> analysisExceptions = new ArrayList<Exception>();
    +  308  42
         private List<Exception> analysisExceptions = new ArrayList<Exception>();
     309  
     
     310   @@ -657,7 +657,7 @@
          */
     346  
         public String getDescription() {
    -  347  21
             return description;
    +  347  8
             return description;
     348  
         }
     349   @@ -674,8 +674,8 @@
          */
     355  
         public void setDescription(String description) {
    -  356  39
             this.description = description;
    -  357  39
         }
    +  356  15
             this.description = description;
    +  357  15
         }
     358  
         /**
     359   @@ -698,7 +698,7 @@
          */
     368  
         public String getLicense() {
    -  369  9
             return license;
    +  369  4
             return license;
     370  
         }
     371   @@ -715,8 +715,8 @@
          */
     377  
         public void setLicense(String license) {
    -  378  12
             this.license = license;
    -  379  12
         }
    +  378  5
             this.license = license;
    +  379  5
         }
     380  
         /**
     381   @@ -772,12 +772,12 @@
          */
     408  
         private void determineHashes(File file) {
    -  409  228
             String md5 = null;
    -  410  228
             String sha1 = null;
    +  409  24
             String md5 = null;
    +  410  24
             String sha1 = null;
     411  
             try {
    -  412  228
                 md5 = Checksum.getMD5Checksum(file);
    -  413  228
                 sha1 = Checksum.getSHA1Checksum(file);
    +  412  24
                 md5 = Checksum.getMD5Checksum(file);
    +  413  24
                 sha1 = Checksum.getSHA1Checksum(file);
     414  0
             } catch (IOException ex) {
     415  0
                 final String msg = String.format("Unable to read '%s' to determine hashes.", file.getName());
     416  0
                 Logger.getLogger(Dependency.class.getName()).log(Level.WARNING, msg);
    @@ -786,10 +786,10 @@  419  0
                 final String msg = "Unable to use MD5 of SHA1 checksums.";
     420  0
                 Logger.getLogger(Dependency.class.getName()).log(Level.WARNING, msg);
     421  0
                 Logger.getLogger(Dependency.class.getName()).log(Level.FINE, null, ex);
    -  422  228
             }
    -  423  228
             this.setMd5sum(md5);
    -  424  228
             this.setSha1sum(sha1);
    -  425  228
         }
    +  422  24
             }
    +  423  24
             this.setMd5sum(md5);
    +  424  24
             this.setSha1sum(sha1);
    +  425  24
         }
     426  
     
     427   @@ -812,7 +812,7 @@
          * A collection of related dependencies.
     437  
          */
    -  438  282
         private Set<Dependency> relatedDependencies = new TreeSet<Dependency>();
    +  438  42
         private Set<Dependency> relatedDependencies = new TreeSet<Dependency>();
     439  
     
     440   @@ -880,7 +880,7 @@
          */
     474  
         public int compareTo(Dependency o) {
    -  475  174
             return this.getFileName().compareToIgnoreCase(o.getFileName());
    +  475  8
             return this.getFileName().compareToIgnoreCase(o.getFileName());
     476  
         }
     477   @@ -993,23 +993,23 @@
         @Override
     549  
         public int hashCode() {
    -  550  177
             int hash = 3;
    -  551  177
             hash = 47 * hash + (this.actualFilePath != null ? this.actualFilePath.hashCode() : 0);
    -  552  177
             hash = 47 * hash + (this.filePath != null ? this.filePath.hashCode() : 0);
    -  553  177
             hash = 47 * hash + (this.fileName != null ? this.fileName.hashCode() : 0);
    -  554  177
             hash = 47 * hash + (this.fileExtension != null ? this.fileExtension.hashCode() : 0);
    -  555  177
             hash = 47 * hash + (this.md5sum != null ? this.md5sum.hashCode() : 0);
    -  556  177
             hash = 47 * hash + (this.sha1sum != null ? this.sha1sum.hashCode() : 0);
    -  557  177
             hash = 47 * hash + (this.identifiers != null ? this.identifiers.hashCode() : 0);
    -  558  177
             hash = 47 * hash + (this.vendorEvidence != null ? this.vendorEvidence.hashCode() : 0);
    -  559  177
             hash = 47 * hash + (this.productEvidence != null ? this.productEvidence.hashCode() : 0);
    -  560  177
             hash = 47 * hash + (this.versionEvidence != null ? this.versionEvidence.hashCode() : 0);
    -  561  177
             hash = 47 * hash + (this.analysisExceptions != null ? this.analysisExceptions.hashCode() : 0);
    -  562  177
             hash = 47 * hash + (this.description != null ? this.description.hashCode() : 0);
    -  563  177
             hash = 47 * hash + (this.license != null ? this.license.hashCode() : 0);
    -  564  177
             hash = 47 * hash + (this.vulnerabilities != null ? this.vulnerabilities.hashCode() : 0);
    -  565  177
             hash = 47 * hash + (this.relatedDependencies != null ? this.relatedDependencies.hashCode() : 0);
    -  566  177
             return hash;
    +  550  5
             int hash = 3;
    +  551  5
             hash = 47 * hash + (this.actualFilePath != null ? this.actualFilePath.hashCode() : 0);
    +  552  5
             hash = 47 * hash + (this.filePath != null ? this.filePath.hashCode() : 0);
    +  553  5
             hash = 47 * hash + (this.fileName != null ? this.fileName.hashCode() : 0);
    +  554  5
             hash = 47 * hash + (this.fileExtension != null ? this.fileExtension.hashCode() : 0);
    +  555  5
             hash = 47 * hash + (this.md5sum != null ? this.md5sum.hashCode() : 0);
    +  556  5
             hash = 47 * hash + (this.sha1sum != null ? this.sha1sum.hashCode() : 0);
    +  557  5
             hash = 47 * hash + (this.identifiers != null ? this.identifiers.hashCode() : 0);
    +  558  5
             hash = 47 * hash + (this.vendorEvidence != null ? this.vendorEvidence.hashCode() : 0);
    +  559  5
             hash = 47 * hash + (this.productEvidence != null ? this.productEvidence.hashCode() : 0);
    +  560  5
             hash = 47 * hash + (this.versionEvidence != null ? this.versionEvidence.hashCode() : 0);
    +  561  5
             hash = 47 * hash + (this.analysisExceptions != null ? this.analysisExceptions.hashCode() : 0);
    +  562  5
             hash = 47 * hash + (this.description != null ? this.description.hashCode() : 0);
    +  563  5
             hash = 47 * hash + (this.license != null ? this.license.hashCode() : 0);
    +  564  5
             hash = 47 * hash + (this.vulnerabilities != null ? this.vulnerabilities.hashCode() : 0);
    +  565  5
             hash = 47 * hash + (this.relatedDependencies != null ? this.relatedDependencies.hashCode() : 0);
    +  566  5
             return hash;
     567  
         }
     568   @@ -1037,6 +1037,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Evidence.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Evidence.html index 0b8333f1a..b8ae8a1f1 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Evidence.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Evidence.html @@ -68,7 +68,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     25  
      */
    -  26  229218
     public class Evidence implements Comparable<Evidence> {
    +  26  98438
     public class Evidence implements Comparable<Evidence> {
     27  
     
     28   @@ -77,7 +77,7 @@
          * The confidence that the evidence is "high" quality.
     30  
          */
    -  31  54
         public enum Confidence {
    +  31  32
         public enum Confidence {
     32  
     
     33   @@ -86,28 +86,28 @@
              * High confidence evidence.
     35  
              */
    -  36  3
             HIGHEST,
    +  36  1
             HIGHEST,
     37  
             /**
     38  
              * High confidence evidence.
     39  
              */
    -  40  3
             HIGH,
    +  40  1
             HIGH,
     41  
             /**
     42  
              * Medium confidence evidence.
     43  
              */
    -  44  3
             MEDIUM,
    +  44  1
             MEDIUM,
     45  
             /**
     46  
              * Low confidence evidence.
     47  
              */
    -  48  3
             LOW
    +  48  1
             LOW
     49  
         }
     50   @@ -138,12 +138,12 @@
          * @param confidence the confidence of the evidence.
     64  
          */
    -  65  110049
         public Evidence(String source, String name, String value, Confidence confidence) {
    -  66  110049
             this.source = source;
    -  67  110049
             this.name = name;
    -  68  110049
             this.value = value;
    -  69  110049
             this.confidence = confidence;
    -  70  110049
         }
    +  65  57383
         public Evidence(String source, String name, String value, Confidence confidence) {
    +  66  57383
             this.source = source;
    +  67  57383
             this.name = name;
    +  68  57383
             this.value = value;
    +  69  57383
             this.confidence = confidence;
    +  70  57383
         }
     71  
         /**
     72   @@ -166,7 +166,7 @@
          */
     81  
         public String getName() {
    -  82  39
             return name;
    +  82  13
             return name;
     83  
         }
     84   @@ -207,7 +207,7 @@
          */
     103  
         public String getSource() {
    -  104  6
             return source;
    +  104  2
             return source;
     105  
         }
     106   @@ -248,8 +248,8 @@
          */
     125  
         public String getValue() {
    -  126  4911
             used = true;
    -  127  4911
             return value;
    +  126  4448
             used = true;
    +  127  4448
             return value;
     128  
         }
     129   @@ -272,8 +272,8 @@
          */
     138  
         public String getValue(Boolean setUsed) {
    -  139  288
             used = used || setUsed;
    -  140  288
             return value;
    +  139  116
             used = used || setUsed;
    +  140  116
             return value;
     141  
         }
     142   @@ -314,7 +314,7 @@
          */
     161  
         public boolean isUsed() {
    -  162  6099
             return used;
    +  162  6217
             return used;
     163  
         }
     164   @@ -355,7 +355,7 @@
          */
     183  
         public Confidence getConfidence() {
    -  184  4083
             return confidence;
    +  184  1664
             return confidence;
     185  
         }
     186   @@ -471,11 +471,11 @@
          */
     249  
         public int compareTo(Evidence o) {
    -  250  229218
             if (source.equals(o.source)) {
    -  251  183828
                 if (name.equals(o.name)) {
    -  252  183309
                     if (value.equals(o.value)) {
    -  253  109236
                         if (confidence.equals(o.confidence)) {
    -  254  109236
                             return 0; //they are equal
    +  250  98438
             if (source.equals(o.source)) {
    +  251  81974
                 if (name.equals(o.name)) {
    +  252  81778
                     if (value.equals(o.value)) {
    +  253  57082
                         if (confidence.equals(o.confidence)) {
    +  254  57082
                             return 0; //they are equal
     255  
                         } else {
     256  0
                             return confidence.compareTo(o.confidence);
    @@ -483,17 +483,17 @@
                         }
     258  
                     } else {
    -  259  74073
                         return value.compareToIgnoreCase(o.value);
    +  259  24696
                         return value.compareToIgnoreCase(o.value);
     260  
                     }
     261  
                 } else {
    -  262  519
                     return name.compareToIgnoreCase(o.name);
    +  262  196
                     return name.compareToIgnoreCase(o.name);
     263  
                 }
     264  
             } else {
    -  265  45390
                 return source.compareToIgnoreCase(o.source);
    +  265  16464
                 return source.compareToIgnoreCase(o.source);
     266  
             }
     267   @@ -502,6 +502,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.EvidenceCollection.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.EvidenceCollection.html index 282529a2c..b2568e383 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.EvidenceCollection.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.EvidenceCollection.html @@ -112,10 +112,10 @@
          * collection.
     45  
          */
    -  46  651
         private static final Filter<Evidence> HIGHEST_CONFIDENCE = new Filter<Evidence>() {
    +  46  279
         private static final Filter<Evidence> HIGHEST_CONFIDENCE = new Filter<Evidence>() {
     47  
             public boolean passes(Evidence evidence) {
    -  48  648
                 return evidence.getConfidence() == Evidence.Confidence.HIGHEST;
    +  48  278
                 return evidence.getConfidence() == Evidence.Confidence.HIGHEST;
     49  
             }
     50   @@ -128,10 +128,10 @@
          * collection.
     54  
          */
    -  55  642
         private static final Filter<Evidence> HIGH_CONFIDENCE = new Filter<Evidence>() {
    +  55  276
         private static final Filter<Evidence> HIGH_CONFIDENCE = new Filter<Evidence>() {
     56  
             public boolean passes(Evidence evidence) {
    -  57  639
                 return evidence.getConfidence() == Evidence.Confidence.HIGH;
    +  57  275
                 return evidence.getConfidence() == Evidence.Confidence.HIGH;
     58  
             }
     59   @@ -144,10 +144,10 @@
          * collection.
     63  
          */
    -  64  3
         private static final Filter<Evidence> MEDIUM_CONFIDENCE = new Filter<Evidence>() {
    +  64  1
         private static final Filter<Evidence> MEDIUM_CONFIDENCE = new Filter<Evidence>() {
     65  
             public boolean passes(Evidence evidence) {
    -  66  627
                 return evidence.getConfidence() == Evidence.Confidence.MEDIUM;
    +  66  271
                 return evidence.getConfidence() == Evidence.Confidence.MEDIUM;
     67  
             }
     68   @@ -158,10 +158,10 @@
          * Used to iterate over low confidence evidence contained in the collection.
     71  
          */
    -  72  3
         private static final Filter<Evidence> LOW_CONFIDENCE = new Filter<Evidence>() {
    +  72  1
         private static final Filter<Evidence> LOW_CONFIDENCE = new Filter<Evidence>() {
     73  
             public boolean passes(Evidence evidence) {
    -  74  1170
                 return evidence.getConfidence() == Evidence.Confidence.LOW;
    +  74  472
                 return evidence.getConfidence() == Evidence.Confidence.LOW;
     75  
             }
     76   @@ -174,10 +174,10 @@
          * collection.
     80  
          */
    -  81  3
         private static final Filter<Evidence> EVIDENCE_USED = new Filter<Evidence>() {
    +  81  1
         private static final Filter<Evidence> EVIDENCE_USED = new Filter<Evidence>() {
     82  
             public boolean passes(Evidence evidence) {
    -  83  6093
                 return evidence.isUsed();
    +  83  6215
                 return evidence.isUsed();
     84  
             }
     85   @@ -200,15 +200,15 @@
          */
     94  
         public final Iterable<Evidence> iterator(Evidence.Confidence confidence) {
    -  95  423
             if (confidence == Evidence.Confidence.HIGHEST) {
    -  96  93
                 return EvidenceCollection.HIGHEST_CONFIDENCE.filter(this.list);
    -  97  330
             } else if (confidence == Evidence.Confidence.HIGH) {
    -  98  93
                 return EvidenceCollection.HIGH_CONFIDENCE.filter(this.list);
    -  99  237
             } else if (confidence == Evidence.Confidence.MEDIUM) {
    -  100  90
                 return EvidenceCollection.MEDIUM_CONFIDENCE.filter(this.list);
    +  95  207
             if (confidence == Evidence.Confidence.HIGHEST) {
    +  96  47
                 return EvidenceCollection.HIGHEST_CONFIDENCE.filter(this.list);
    +  97  160
             } else if (confidence == Evidence.Confidence.HIGH) {
    +  98  47
                 return EvidenceCollection.HIGH_CONFIDENCE.filter(this.list);
    +  99  113
             } else if (confidence == Evidence.Confidence.MEDIUM) {
    +  100  46
                 return EvidenceCollection.MEDIUM_CONFIDENCE.filter(this.list);
     101  
             } else {
    -  102  147
                 return EvidenceCollection.LOW_CONFIDENCE.filter(this.list);
    +  102  67
                 return EvidenceCollection.LOW_CONFIDENCE.filter(this.list);
     103  
             }
     104   @@ -237,10 +237,10 @@
          * Creates a new EvidenceCollection.
     116  
          */
    -  117  852
         public EvidenceCollection() {
    -  118  852
             list = new TreeSet<Evidence>();
    -  119  852
             weightedStrings = new HashSet<String>();
    -  120  852
         }
    +  117  128
         public EvidenceCollection() {
    +  118  128
             list = new TreeSet<Evidence>();
    +  119  128
             weightedStrings = new HashSet<String>();
    +  120  128
         }
     121  
     
     122   @@ -255,8 +255,8 @@
          */
     127  
         public void addEvidence(Evidence e) {
    -  128  110007
             list.add(e);
    -  129  110007
         }
    +  128  57366
             list.add(e);
    +  129  57366
         }
     130  
     
     131   @@ -279,9 +279,9 @@
          */
     140  
         public void addEvidence(String source, String name, String value, Evidence.Confidence confidence) {
    -  141  109998
             final Evidence e = new Evidence(source, name, value, confidence);
    -  142  109998
             addEvidence(e);
    -  143  109998
         }
    +  141  57363
             final Evidence e = new Evidence(source, name, value, confidence);
    +  142  57363
             addEvidence(e);
    +  143  57363
         }
     144  
     
     145   @@ -316,8 +316,8 @@
          */
     160  
         public void addWeighting(String str) {
    -  161  114
             weightedStrings.add(str);
    -  162  114
         }
    +  161  41
             weightedStrings.add(str);
    +  162  41
         }
     163  
     
     164   @@ -334,7 +334,7 @@
          */
     170  
         public Set<String> getWeighting() {
    -  171  219
             return weightedStrings;
    +  171  81
             return weightedStrings;
     172  
         }
     173   @@ -351,7 +351,7 @@
          */
     179  
         public Set<Evidence> getEvidence() {
    -  180  30
             return list;
    +  180  12
             return list;
     181  
         }
     182   @@ -432,7 +432,7 @@
          */
     227  
         public Iterator<Evidence> iterator() {
    -  228  873
             return list.iterator();
    +  228  758
             return list.iterator();
     229  
         }
     230   @@ -451,23 +451,23 @@
          */
     237  
         public boolean containsUsedString(String text) {
    -  238  849
             if (text == null) {
    +  238  749
             if (text == null) {
     239  0
                 return false;
     240  
             }
    -  241  849
             final String textToTest = text.toLowerCase();
    +  241  749
             final String textToTest = text.toLowerCase();
     242  
     
    -  243  849
             for (Evidence e : EvidenceCollection.EVIDENCE_USED.filter(this)) {
    +  243  749
             for (Evidence e : EvidenceCollection.EVIDENCE_USED.filter(this)) {
     244  
                 //TODO consider changing the regex to only compare alpha-numeric (i.e. strip everything else)
    -  245  4068
                 final String value = urlCorrection(e.getValue().toLowerCase()).replaceAll("[\\s_-]", "");
    -  246  4068
                 if (value.contains(textToTest)) {
    -  247  384
                     return true;
    +  245  4102
                 final String value = urlCorrection(e.getValue().toLowerCase()).replaceAll("[\\s_-]", "");
    +  246  4102
                 if (value.contains(textToTest)) {
    +  247  269
                     return true;
     248  
                 }
    -  249  3684
             }
    -  250  465
             return false;
    +  249  3833
             }
    +  250  480
             return false;
     251  
         }
     252   @@ -522,14 +522,14 @@
          */
     281  
         public boolean contains(Evidence.Confidence confidence) {
    -  282  216
             for (Evidence e : list) {
    -  283  993
                 if (e.getConfidence().equals(confidence)) {
    -  284  210
                     return true;
    +  282  80
             for (Evidence e : list) {
    +  283  366
                 if (e.getConfidence().equals(confidence)) {
    +  284  78
                     return true;
     285  
                 }
     286  
             }
    -  287  6
             return false;
    +  287  2
             return false;
     288  
         }
     289   @@ -550,18 +550,18 @@
          */
     297  
         public static EvidenceCollection mergeUsed(EvidenceCollection... ec) {
    -  298  3
             final EvidenceCollection ret = new EvidenceCollection();
    -  299  12
             for (EvidenceCollection col : ec) {
    -  300  9
                 for (Evidence e : col.list) {
    -  301  6
                     if (e.isUsed()) {
    -  302  3
                         ret.addEvidence(e);
    +  298  1
             final EvidenceCollection ret = new EvidenceCollection();
    +  299  4
             for (EvidenceCollection col : ec) {
    +  300  3
                 for (Evidence e : col.list) {
    +  301  2
                     if (e.isUsed()) {
    +  302  1
                         ret.addEvidence(e);
     303  
                     }
     304  
                 }
     305  
             }
    -  306  3
             return ret;
    +  306  1
             return ret;
     307  
         }
     308   @@ -580,13 +580,13 @@
          */
     315  
         public static EvidenceCollection merge(EvidenceCollection... ec) {
    -  316  3
             final EvidenceCollection ret = new EvidenceCollection();
    -  317  12
             for (EvidenceCollection col : ec) {
    -  318  9
                 ret.list.addAll(col.list);
    -  319  9
                 ret.weightedStrings.addAll(col.weightedStrings);
    +  316  1
             final EvidenceCollection ret = new EvidenceCollection();
    +  317  4
             for (EvidenceCollection col : ec) {
    +  318  3
                 ret.list.addAll(col.list);
    +  319  3
                 ret.weightedStrings.addAll(col.weightedStrings);
     320  
             }
    -  321  3
             return ret;
    +  321  1
             return ret;
     322  
         }
     323   @@ -605,12 +605,12 @@
         @Override
     330  
         public String toString() {
    -  331  9
             final StringBuilder sb = new StringBuilder();
    -  332  9
             for (Evidence e : this.list) {
    -  333  33
                 sb.append(e.getValue()).append(' ');
    +  331  3
             final StringBuilder sb = new StringBuilder();
    +  332  3
             for (Evidence e : this.list) {
    +  333  11
                 sb.append(e.getValue()).append(' ');
     334  
             }
    -  335  9
             return sb.toString();
    +  335  3
             return sb.toString();
     336  
         }
     337   @@ -627,7 +627,7 @@
          */
     343  
         public int size() {
    -  344  270
             return list.size();
    +  344  100
             return list.size();
     345  
         }
     346   @@ -666,22 +666,22 @@
          */
     363  
         private String urlCorrection(String value) {
    -  364  4068
             if (value == null || !UrlStringUtils.containsUrl(value)) {
    -  365  4020
                 return value;
    +  364  4102
             if (value == null || !UrlStringUtils.containsUrl(value)) {
    +  365  4027
                 return value;
     366  
             }
    -  367  48
             final StringBuilder sb = new StringBuilder(value.length());
    -  368  48
             final String[] parts = value.split("\\s");
    -  369  96
             for (String part : parts) {
    -  370  48
                 if (UrlStringUtils.isUrl(part)) {
    +  367  75
             final StringBuilder sb = new StringBuilder(value.length());
    +  368  75
             final String[] parts = value.split("\\s");
    +  369  150
             for (String part : parts) {
    +  370  75
                 if (UrlStringUtils.isUrl(part)) {
     371  
                     try {
    -  372  48
                         final List<String> data = UrlStringUtils.extractImportantUrlData(part);
    -  373  48
                         sb.append(' ').append(StringUtils.join(data, ' '));
    +  372  75
                         final List<String> data = UrlStringUtils.extractImportantUrlData(part);
    +  373  75
                         sb.append(' ').append(StringUtils.join(data, ' '));
     374  0
                     } catch (MalformedURLException ex) {
     375  0
                         Logger.getLogger(EvidenceCollection.class.getName()).log(Level.INFO, "error parsing " + part, ex);
     376  0
                         sb.append(' ').append(part);
    -  377  48
                     }
    +  377  75
                     }
     378  
                 } else {
     379  0
                     sb.append(' ').append(part);
    @@ -689,13 +689,13 @@
                 }
     381  
             }
    -  382  48
             return sb.toString().trim();
    +  382  75
             return sb.toString().trim();
     383  
         }
     384  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Identifier.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Identifier.html index a15d6a1f7..7b359423b 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Identifier.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Identifier.html @@ -65,7 +65,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     24  
      */
    -  25  54
     public class Identifier implements Comparable<Identifier> {
    +  25  51
     public class Identifier implements Comparable<Identifier> {
     26  
     
     27   @@ -82,11 +82,11 @@
          * @param url the identifier url.
     33  
          */
    -  34  144
         public Identifier(String type, String value, String url) {
    -  35  144
             this.type = type;
    -  36  144
             this.value = value;
    -  37  144
             this.url = url;
    -  38  144
         }
    +  34  110
         public Identifier(String type, String value, String url) {
    +  35  110
             this.type = type;
    +  36  110
             this.value = value;
    +  37  110
             this.url = url;
    +  38  110
         }
     39  
     
     40   @@ -132,7 +132,7 @@
          */
     62  
         public String getValue() {
    -  63  126
             return value;
    +  63  103
             return value;
     64  
         }
     65   @@ -214,7 +214,7 @@
          */
     106  
         public String getType() {
    -  107  27
             return type;
    +  107  26
             return type;
     108  
         }
     109   @@ -349,17 +349,17 @@
          */
     184  
         public int compareTo(Identifier o) {
    -  185  87
             if (o == null) {
    +  185  90
             if (o == null) {
     186  0
                 return -1;
     187  
             }
    -  188  87
             return this.value.compareTo(o.value);
    +  188  90
             return this.value.compareTo(o.value);
     189  
         }
     190  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Reference.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Reference.html index ef4ea1c8b..9cca1059a 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Reference.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Reference.html @@ -73,7 +73,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     28  
      */
    -  29  1383
     public class Reference implements Serializable, Comparable<Reference> {
    +  29  461
     public class Reference implements Serializable, Comparable<Reference> {
     30  
     
     31   @@ -123,8 +123,8 @@
          */
     54  
         public void setName(String name) {
    -  55  528
             this.name = name;
    -  56  528
         }
    +  55  176
             this.name = name;
    +  56  176
         }
     57  
         /**
     58   @@ -164,8 +164,8 @@
          */
     76  
         public void setUrl(String url) {
    -  77  528
             this.url = url;
    -  78  528
         }
    +  77  176
             this.url = url;
    +  78  176
         }
     79  
         /**
     80   @@ -205,8 +205,8 @@
          */
     98  
         public void setSource(String source) {
    -  99  528
             this.source = source;
    -  100  528
         }
    +  99  176
             this.source = source;
    +  100  176
         }
     101  
     
     102   @@ -266,8 +266,8 @@
          */
     138  
         public int compareTo(Reference o) {
    -  139  855
             if (source.equals(o.source)) {
    -  140  135
                 if (name.equals(o.name)) {
    +  139  285
             if (source.equals(o.source)) {
    +  140  45
                 if (name.equals(o.name)) {
     141  0
                     if (url.equals(o.url)) {
     142  0
                         return 0; //they are equal
     143   @@ -277,12 +277,12 @@
                     }
     146  
                 } else {
    -  147  135
                     return name.compareTo(o.name);
    +  147  45
                     return name.compareTo(o.name);
     148  
                 }
     149  
             } else {
    -  150  720
                 return source.compareTo(o.source);
    +  150  240
                 return source.compareTo(o.source);
     151  
             }
     152   @@ -291,6 +291,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Vulnerability.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Vulnerability.html index a989db10c..68d0e0792 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Vulnerability.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.Vulnerability.html @@ -77,7 +77,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     30  
      */
    -  31  135
     public class Vulnerability implements Serializable, Comparable<Vulnerability> {
    +  31  45
     public class Vulnerability implements Serializable, Comparable<Vulnerability> {
     32  
     
     33   @@ -127,8 +127,8 @@
          */
     56  
         public void setName(String name) {
    -  57  135
             this.name = name;
    -  58  135
         }
    +  57  45
             this.name = name;
    +  58  45
         }
     59  
         /**
     60   @@ -168,15 +168,15 @@
          */
     78  
         public void setDescription(String description) {
    -  79  135
             this.description = description;
    -  80  135
         }
    +  79  45
             this.description = description;
    +  80  45
         }
     81  
         /**
     82  
          * References for this vulnerability.
     83  
          */
    -  84  135
         private SortedSet<Reference> references = new TreeSet<Reference>();
    +  84  45
         private SortedSet<Reference> references = new TreeSet<Reference>();
     85  
     
     86   @@ -224,8 +224,8 @@
          */
     109  
         public void addReference(Reference ref) {
    -  110  270
             this.references.add(ref);
    -  111  270
         }
    +  110  90
             this.references.add(ref);
    +  111  90
         }
     112  
     
     113   @@ -244,19 +244,19 @@
          */
     120  
         public void addReference(String referenceSource, String referenceName, String referenceUrl) {
    -  121  258
             final Reference ref = new Reference();
    -  122  258
             ref.setSource(referenceSource);
    -  123  258
             ref.setName(referenceName);
    -  124  258
             ref.setUrl(referenceUrl);
    -  125  258
             this.references.add(ref);
    -  126  258
         }
    +  121  86
             final Reference ref = new Reference();
    +  122  86
             ref.setSource(referenceSource);
    +  123  86
             ref.setName(referenceName);
    +  124  86
             ref.setUrl(referenceUrl);
    +  125  86
             this.references.add(ref);
    +  126  86
         }
     127  
         /**
     128  
          * A set of vulnerable software.
     129  
          */
    -  130  135
         private SortedSet<VulnerableSoftware> vulnerableSoftware = new TreeSet<VulnerableSoftware>();
    +  130  45
         private SortedSet<VulnerableSoftware> vulnerableSoftware = new TreeSet<VulnerableSoftware>();
     131  
     
     132   @@ -306,7 +306,7 @@
          */
     156  
         public boolean addVulnerableSoftware(String cpe) {
    -  157  3636
             return addVulnerableSoftware(cpe, null);
    +  157  1212
             return addVulnerableSoftware(cpe, null);
     158  
         }
     159   @@ -329,13 +329,13 @@
          */
     168  
         public boolean addVulnerableSoftware(String cpe, String previousVersion) {
    -  169  3669
             final VulnerableSoftware vs = new VulnerableSoftware();
    -  170  3669
             vs.setCpe(cpe);
    -  171  3669
             if (previousVersion != null) {
    -  172  33
                 vs.setPreviousVersion(previousVersion);
    +  169  1223
             final VulnerableSoftware vs = new VulnerableSoftware();
    +  170  1223
             vs.setCpe(cpe);
    +  171  1223
             if (previousVersion != null) {
    +  172  11
                 vs.setPreviousVersion(previousVersion);
     173  
             }
    -  174  3669
             return updateVulnerableSoftware(vs);
    +  174  1223
             return updateVulnerableSoftware(vs);
     175  
         }
     176   @@ -354,11 +354,11 @@
          */
     183  
         public boolean updateVulnerableSoftware(VulnerableSoftware vulnSoftware) {
    -  184  3669
             if (vulnerableSoftware.contains(vulnSoftware)) {
    +  184  1223
             if (vulnerableSoftware.contains(vulnSoftware)) {
     185  0
                 vulnerableSoftware.remove(vulnSoftware);
     186  
             }
    -  187  3669
             return vulnerableSoftware.add(vulnSoftware);
    +  187  1223
             return vulnerableSoftware.add(vulnSoftware);
     188  
         }
     189   @@ -400,8 +400,8 @@
          */
     208  
         public void setCwe(String cwe) {
    -  209  111
             this.cwe = cwe;
    -  210  111
         }
    +  209  37
             this.cwe = cwe;
    +  210  37
         }
     211  
         /**
     212   @@ -441,8 +441,8 @@
          */
     230  
         public void setCvssScore(float cvssScore) {
    -  231  132
             this.cvssScore = cvssScore;
    -  232  132
         }
    +  231  44
             this.cvssScore = cvssScore;
    +  232  44
         }
     233  
         /**
     234   @@ -482,8 +482,8 @@
          */
     252  
         public void setCvssAccessVector(String cvssAccessVector) {
    -  253  132
             this.cvssAccessVector = cvssAccessVector;
    -  254  132
         }
    +  253  44
             this.cvssAccessVector = cvssAccessVector;
    +  254  44
         }
     255  
         /**
     256   @@ -523,8 +523,8 @@
          */
     274  
         public void setCvssAccessComplexity(String cvssAccessComplexity) {
    -  275  132
             this.cvssAccessComplexity = cvssAccessComplexity;
    -  276  132
         }
    +  275  44
             this.cvssAccessComplexity = cvssAccessComplexity;
    +  276  44
         }
     277  
         /**
     278   @@ -564,8 +564,8 @@
          */
     296  
         public void setCvssAuthentication(String cvssAuthentication) {
    -  297  132
             this.cvssAuthentication = cvssAuthentication;
    -  298  132
         }
    +  297  44
             this.cvssAuthentication = cvssAuthentication;
    +  298  44
         }
     299  
         /**
     300   @@ -605,8 +605,8 @@
          */
     318  
         public void setCvssConfidentialityImpact(String cvssConfidentialityImpact) {
    -  319  132
             this.cvssConfidentialityImpact = cvssConfidentialityImpact;
    -  320  132
         }
    +  319  44
             this.cvssConfidentialityImpact = cvssConfidentialityImpact;
    +  320  44
         }
     321  
         /**
     322   @@ -646,8 +646,8 @@
          */
     340  
         public void setCvssIntegrityImpact(String cvssIntegrityImpact) {
    -  341  132
             this.cvssIntegrityImpact = cvssIntegrityImpact;
    -  342  132
         }
    +  341  44
             this.cvssIntegrityImpact = cvssIntegrityImpact;
    +  342  44
         }
     343  
         /**
     344   @@ -687,8 +687,8 @@
          */
     362  
         public void setCvssAvailabilityImpact(String cvssAvailabilityImpact) {
    -  363  132
             this.cvssAvailabilityImpact = cvssAvailabilityImpact;
    -  364  132
         }
    +  363  44
             this.cvssAvailabilityImpact = cvssAvailabilityImpact;
    +  364  44
         }
     365  
     
     366   @@ -747,6 +747,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerabilityComparator.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerabilityComparator.html index a6e922d38..94d32dd83 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerabilityComparator.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerabilityComparator.html @@ -73,7 +73,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     28  
      */
    -  29  282
     public class VulnerabilityComparator implements Comparator<Vulnerability>, Serializable {
    +  29  42
     public class VulnerabilityComparator implements Comparator<Vulnerability>, Serializable {
     30  
     
     31   @@ -109,6 +109,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerableSoftware.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerableSoftware.html index 400649ee6..52c0f4921 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerableSoftware.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.dependency.VulnerableSoftware.html @@ -83,7 +83,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     33  
      */
    -  34  48142
     public class VulnerableSoftware extends IndexEntry implements Serializable, Comparable<VulnerableSoftware> {
    +  34  17568
     public class VulnerableSoftware extends IndexEntry implements Serializable, Comparable<VulnerableSoftware> {
     35  
     
     36   @@ -110,14 +110,14 @@
         public void setCpe(String cpe) {
     47  
             try {
    -  48  4733
                 parseName(cpe);
    +  48  3089
                 parseName(cpe);
     49  0
             } catch (UnsupportedEncodingException ex) {
     50  0
                 final String msg = String.format("Character encoding is unsupported for CPE '%s'.", cpe);
     51  0
                 Logger.getLogger(VulnerableSoftware.class.getName()).log(Level.WARNING, msg);
     52  0
                 Logger.getLogger(VulnerableSoftware.class.getName()).log(Level.FINE, null, ex);
     53  0
                 setName(cpe);
    -  54  4733
             }
    -  55  4733
         }
    +  54  3089
             }
    +  55  3089
         }
     56  
     
     57   @@ -148,18 +148,18 @@
         @Override
     70  
         public void parseName(String cpeName) throws UnsupportedEncodingException {
    -  71  5890
             this.name = cpeName;
    -  72  5890
             if (cpeName != null && cpeName.length() > 7) {
    -  73  5890
                 final String[] data = cpeName.substring(7).split(":");
    -  74  5890
                 if (data.length >= 1) {
    -  75  5890
                     this.setVendor(URLDecoder.decode(data[0].replace("+", "%2B"), "UTF-8")); //.replaceAll("[_-]", " ")
    -  76  5890
                     if (data.length >= 2) {
    -  77  5890
                         this.setProduct(URLDecoder.decode(data[1].replace("+", "%2B"), "UTF-8")); //.replaceAll("[_-]", " ")
    -  78  5890
                         if (data.length >= 3) {
    -  79  5874
                             version = URLDecoder.decode(data[2].replace("+", "%2B"), "UTF-8");
    -  80  5874
                             if (data.length >= 4) {
    -  81  159
                                 revision = URLDecoder.decode(data[3].replace("+", "%2B"), "UTF-8");
    -  82  159
                                 if (data.length >= 5) {
    +  71  3484
             this.name = cpeName;
    +  72  3484
             if (cpeName != null && cpeName.length() > 7) {
    +  73  3484
                 final String[] data = cpeName.substring(7).split(":");
    +  74  3484
                 if (data.length >= 1) {
    +  75  3484
                     this.setVendor(URLDecoder.decode(data[0].replace("+", "%2B"), "UTF-8")); //.replaceAll("[_-]", " ")
    +  76  3484
                     if (data.length >= 2) {
    +  77  3484
                         this.setProduct(URLDecoder.decode(data[1].replace("+", "%2B"), "UTF-8")); //.replaceAll("[_-]", " ")
    +  78  3484
                         if (data.length >= 3) {
    +  79  3476
                             version = URLDecoder.decode(data[2].replace("+", "%2B"), "UTF-8");
    +  80  3476
                             if (data.length >= 4) {
    +  81  667
                                 revision = URLDecoder.decode(data[3].replace("+", "%2B"), "UTF-8");
    +  82  667
                                 if (data.length >= 5) {
     83  0
                                     edition = URLDecoder.decode(data[4].replace("+", "%2B"), "UTF-8");
     84  
                                 }
    @@ -173,7 +173,7 @@
                 }
     89  
             }
    -  90  5890
         }
    +  90  3484
         }
     91  
         /**
     92   @@ -230,8 +230,8 @@
          */
     119  
         public void setPreviousVersion(String previousVersion) {
    -  120  36
             this.previousVersion = previousVersion;
    -  121  36
         }
    +  120  12
             this.previousVersion = previousVersion;
    +  121  12
         }
     122  
     
     123   @@ -252,17 +252,17 @@
         @Override
     131  
         public boolean equals(Object obj) {
    -  132  3
             if (obj == null) {
    +  132  1
             if (obj == null) {
     133  0
                 return false;
     134  
             }
    -  135  3
             if (getClass() != obj.getClass()) {
    +  135  1
             if (getClass() != obj.getClass()) {
     136  0
                 return false;
     137  
             }
    -  138  3
             final VulnerableSoftware other = (VulnerableSoftware) obj;
    -  139  3
             if ((this.getName() == null) ? (other.getName() != null) : !this.getName().equals(other.getName())) {
    -  140  3
                 return false;
    +  138  1
             final VulnerableSoftware other = (VulnerableSoftware) obj;
    +  139  1
             if ((this.getName() == null) ? (other.getName() != null) : !this.getName().equals(other.getName())) {
    +  140  1
                 return false;
     141  
             }
     142  0
             return true;
    @@ -284,9 +284,9 @@
         @Override
     151  
         public int hashCode() {
    -  152  1049
             int hash = 7;
    -  153  1049
             hash = 83 * hash + (this.getName() != null ? this.getName().hashCode() : 0);
    -  154  1049
             return hash;
    +  152  1861
             int hash = 7;
    +  153  1861
             hash = 83 * hash + (this.getName() != null ? this.getName().hashCode() : 0);
    +  154  1861
             return hash;
     155  
         }
     156   @@ -328,43 +328,43 @@
         @Override
     175  
         public int compareTo(VulnerableSoftware vs) {
    -  176  42255
             int result = 0;
    -  177  42255
             final String[] left = this.getName().split(":");
    -  178  42255
             final String[] right = vs.getName().split(":");
    -  179  42255
             final int max = (left.length <= right.length) ? left.length : right.length;
    -  180  42255
             if (max > 0) {
    -  181  253284
                 for (int i = 0; result == 0 && i < max; i++) {
    -  182  211029
                     final String[] subLeft = left[i].split("\\.");
    -  183  211029
                     final String[] subRight = right[i].split("\\.");
    -  184  211029
                     final int subMax = (subLeft.length <= subRight.length) ? subLeft.length : subRight.length;
    -  185  211029
                     if (subMax > 0) {
    -  186  486039
                         for (int x = 0; result == 0 && x < subMax; x++) {
    -  187  275010
                             if (isPositiveInteger(subLeft[x]) && isPositiveInteger(subRight[x])) {
    -  188  104238
                                 final int iLeft = Integer.parseInt(subLeft[x]);
    -  189  104238
                                 final int iRight = Integer.parseInt(subRight[x]);
    -  190  104238
                                 if (iLeft != iRight) {
    -  191  39402
                                     if (iLeft > iRight) {
    -  192  29022
                                         result = 2;
    +  176  14085
             int result = 0;
    +  177  14085
             final String[] left = this.getName().split(":");
    +  178  14085
             final String[] right = vs.getName().split(":");
    +  179  14085
             final int max = (left.length <= right.length) ? left.length : right.length;
    +  180  14085
             if (max > 0) {
    +  181  84428
                 for (int i = 0; result == 0 && i < max; i++) {
    +  182  70343
                     final String[] subLeft = left[i].split("\\.");
    +  183  70343
                     final String[] subRight = right[i].split("\\.");
    +  184  70343
                     final int subMax = (subLeft.length <= subRight.length) ? subLeft.length : subRight.length;
    +  185  70343
                     if (subMax > 0) {
    +  186  162013
                         for (int x = 0; result == 0 && x < subMax; x++) {
    +  187  91670
                             if (isPositiveInteger(subLeft[x]) && isPositiveInteger(subRight[x])) {
    +  188  34746
                                 final int iLeft = Integer.parseInt(subLeft[x]);
    +  189  34746
                                 final int iRight = Integer.parseInt(subRight[x]);
    +  190  34746
                                 if (iLeft != iRight) {
    +  191  13134
                                     if (iLeft > iRight) {
    +  192  9674
                                         result = 2;
     193  
                                     } else {
    -  194  10380
                                         result = -2;
    +  194  3460
                                         result = -2;
     195  
                                     }
     196  
                                 }
    -  197  104238
                             } else {
    -  198  170772
                                 result = subLeft[x].compareToIgnoreCase(subRight[x]);
    +  197  34746
                             } else {
    +  198  56924
                                 result = subLeft[x].compareToIgnoreCase(subRight[x]);
     199  
                             }
     200  
                         }
    -  201  211029
                         if (result == 0) {
    -  202  169617
                             if (subLeft.length > subRight.length) {
    -  203  750
                                 result = 2;
    +  201  70343
                         if (result == 0) {
    +  202  56539
                             if (subLeft.length > subRight.length) {
    +  203  250
                                 result = 2;
     204  
                             }
    -  205  169617
                             if (subRight.length > subLeft.length) {
    -  206  21
                                 result = -2;
    +  205  56539
                             if (subRight.length > subLeft.length) {
    +  206  7
                                 result = -2;
     207  
                             }
     208   @@ -376,13 +376,13 @@
                     }
     212  
                 }
    -  213  42255
                 if (result == 0) {
    -  214  72
                     if (left.length > right.length) {
    -  215  42
                         result = 2;
    +  213  14085
                 if (result == 0) {
    +  214  24
                     if (left.length > right.length) {
    +  215  14
                         result = 2;
     216  
                     }
    -  217  72
                     if (right.length > left.length) {
    -  218  30
                         result = -2;
    +  217  24
                     if (right.length > left.length) {
    +  218  10
                         result = -2;
     219  
                     }
     220   @@ -392,7 +392,7 @@  222  0
                 result = this.getName().compareToIgnoreCase(vs.getName());
     223  
             }
    -  224  42255
             return result;
    +  224  14085
             return result;
     225  
         }
     226   @@ -411,19 +411,19 @@
          */
     233  
         private static boolean isPositiveInteger(final String str) {
    -  234  379464
             if (str == null || str.isEmpty()) {
    -  235  36
                 return false;
    +  234  126488
             if (str == null || str.isEmpty()) {
    +  235  12
                 return false;
     236  
             }
    -  237  618510
             for (int i = 0; i < str.length(); i++) {
    -  238  409818
                 final char c = str.charAt(i);
    -  239  409818
                 if (c < '0' || c > '9') {
    -  240  170736
                     return false;
    +  237  206170
             for (int i = 0; i < str.length(); i++) {
    +  238  136606
                 final char c = str.charAt(i);
    +  239  136606
                 if (c < '0' || c > '9') {
    +  240  56912
                     return false;
     241  
                 }
     242  
             }
    -  243  208692
             return true;
    +  243  69564
             return true;
     244  
         }
     245   @@ -448,7 +448,7 @@
          */
     255  
         public String getName() {
    -  256  86791
             return name;
    +  256  32049
             return name;
     257  
         }
     258   @@ -489,7 +489,7 @@
          */
     277  
         public String getVersion() {
    -  278  6197
             return version;
    +  278  5363
             return version;
     279  
         }
     280   @@ -530,7 +530,7 @@
          */
     299  
         public String getRevision() {
    -  300  4893
             return revision;
    +  300  7436
             return revision;
     301  
         }
     302   @@ -594,6 +594,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter.html index c7df04729..551f18f6f 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.MavenNamespaceFilter.html @@ -79,7 +79,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     31  
      */
    -  32  12
     public class MavenNamespaceFilter extends XMLFilterImpl {
    +  32  5
     public class MavenNamespaceFilter extends XMLFilterImpl {
     33  
     
     34   @@ -96,7 +96,7 @@
          * A flag indicating whether or not the namespace (prefix) has been added.
     40  
          */
    -  41  12
         private boolean namespaceAdded = false;
    +  41  5
         private boolean namespaceAdded = false;
     42  
     
     43   @@ -113,9 +113,9 @@
         @Override
     49  
         public void startDocument() throws SAXException {
    -  50  12
             super.startDocument();
    -  51  12
             startPrefixMapping("", NAMESPACE);
    -  52  12
         }
    +  50  5
             super.startDocument();
    +  51  5
             startPrefixMapping("", NAMESPACE);
    +  52  5
         }
     53  
     
     54   @@ -140,8 +140,8 @@
         @Override
     64  
         public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
    -  65  3210
             super.startElement(NAMESPACE, localName, qName, atts);
    -  66  3210
         }
    +  65  1234
             super.startElement(NAMESPACE, localName, qName, atts);
    +  66  1234
         }
     67  
     
     68   @@ -166,8 +166,8 @@
         public void endElement(String uri, String localName, String qName)
     78  
                 throws SAXException {
    -  79  3210
             super.endElement(NAMESPACE, localName, qName);
    -  80  3210
         }
    +  79  1234
             super.endElement(NAMESPACE, localName, qName);
    +  80  1234
         }
     81  
     
     82   @@ -188,16 +188,16 @@
         @Override
     90  
         public void startPrefixMapping(String prefix, String url) throws SAXException {
    -  91  12
             if (!this.namespaceAdded) {
    -  92  12
                 namespaceAdded = true;
    -  93  12
                 super.startPrefixMapping("", NAMESPACE);
    +  91  5
             if (!this.namespaceAdded) {
    +  92  5
                 namespaceAdded = true;
    +  93  5
                 super.startPrefixMapping("", NAMESPACE);
     94  
             }
    -  95  12
         }
    +  95  5
         }
     96  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Activation.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Activation.html index 18104dae6..7fa5f8ce6 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Activation.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Activation.html @@ -117,7 +117,7 @@
     })
     50  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  51  6
     public class Activation {
    +  51  2
     public class Activation {
     52  
     
     53   @@ -393,6 +393,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile.html index 26abf8531..6a676cc3e 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationFile.html @@ -226,6 +226,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS.html index 80974eec1..2202292e8 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationOS.html @@ -334,6 +334,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty.html index 6f9db225e..a3a3f591b 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ActivationProperty.html @@ -111,7 +111,7 @@
     })
     47  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  48  6
     public class ActivationProperty {
    +  48  2
     public class ActivationProperty {
     49  
     
     50   @@ -226,6 +226,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Build.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Build.html index 7f8dd2f72..2a9fbdf5c 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Build.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Build.html @@ -236,7 +236,7 @@
     })
     107  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  108  12
     public class Build {
    +  108  5
     public class Build {
     109  
     
     110   @@ -1153,7 +1153,7 @@
         })
     589  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  590  3
         public static class Filters {
    +  590  1
         public static class Filters {
     591  
     
     592   @@ -1273,7 +1273,7 @@
         })
     651  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  652  12
         public static class Plugins {
    +  652  5
         public static class Plugins {
     653  
     
     654   @@ -1393,7 +1393,7 @@
         })
     713  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  714  6
         public static class Resources {
    +  714  2
         public static class Resources {
     715  
     
     716   @@ -1503,7 +1503,7 @@
          *
     770  
          */
    -  771  12
         @XmlAccessorType(XmlAccessType.FIELD)
    +  771  5
         @XmlAccessorType(XmlAccessType.FIELD)
     772  
         @XmlType(name = "", propOrder = {
     773   @@ -1512,7 +1512,7 @@
         })
     775  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  776  3
         public static class TestResources {
    +  776  1
         public static class TestResources {
     777  
     
     778   @@ -1586,6 +1586,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.html index a6e2e10f9..a7ca415ab 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.BuildBase.html @@ -203,7 +203,7 @@
     })
     91  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  92  9
     public class BuildBase {
    +  92  6
     public class BuildBase {
     93  
     
     94   @@ -802,7 +802,7 @@
         })
     405  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  406  9
         public static class Plugins {
    +  406  6
         public static class Plugins {
     407  
     
     408   @@ -1032,7 +1032,7 @@
          *
     524  
          */
    -  525  9
         @XmlAccessorType(XmlAccessType.FIELD)
    +  525  6
         @XmlAccessorType(XmlAccessType.FIELD)
     526  
         @XmlType(name = "", propOrder = {
     527   @@ -1115,6 +1115,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.html index 9595d4083..22a35f1f5 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.CiManagement.html @@ -417,6 +417,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Contributor.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Contributor.html index ff6b32397..e94d3ad9d 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Contributor.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Contributor.html @@ -173,7 +173,7 @@
     })
     77  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  78  3
     public class Contributor {
    +  78  1
     public class Contributor {
     79  
     
     80   @@ -764,7 +764,7 @@
          *
     387  
          */
    -  388  3
         @XmlAccessorType(XmlAccessType.FIELD)
    +  388  1
         @XmlAccessorType(XmlAccessType.FIELD)
     389  
         @XmlType(name = "", propOrder = {
     390   @@ -847,6 +847,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Dependency.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Dependency.html index e142481df..b5a56914e 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Dependency.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Dependency.html @@ -144,7 +144,7 @@
     })
     63  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  64  192
     public class Dependency {
    +  64  66
     public class Dependency {
     65  
     
     66   @@ -670,7 +670,7 @@
          *
     340  
          */
    -  341  192
         @XmlAccessorType(XmlAccessType.FIELD)
    +  341  66
         @XmlAccessorType(XmlAccessType.FIELD)
     342  
         @XmlType(name = "", propOrder = {
     343   @@ -679,7 +679,7 @@
         })
     345  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  346  9
         public static class Exclusions {
    +  346  3
         public static class Exclusions {
     347  
     
     348   @@ -753,6 +753,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.html index b6aa75623..3254974be 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DependencyManagement.html @@ -311,6 +311,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository.html index ec5040157..714d09341 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DeploymentRepository.html @@ -115,7 +115,7 @@
     })
     49  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  50  6
     public class DeploymentRepository {
    +  50  2
     public class DeploymentRepository {
     51  
     
     52   @@ -393,6 +393,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Developer.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Developer.html index 3058fada2..829a93ceb 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Developer.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Developer.html @@ -171,7 +171,7 @@
     })
     76  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  77  42
     public class Developer {
    +  77  14
     public class Developer {
     78  
     
     79   @@ -815,7 +815,7 @@
          *
     414  
          */
    -  415  42
         @XmlAccessorType(XmlAccessType.FIELD)
    +  415  14
         @XmlAccessorType(XmlAccessType.FIELD)
     416  
         @XmlType(name = "", propOrder = {
     417   @@ -898,6 +898,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement.html index 81cd458d0..17b8e73c5 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.DistributionManagement.html @@ -119,7 +119,7 @@
     })
     51  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  52  9
     public class DistributionManagement {
    +  52  3
     public class DistributionManagement {
     53  
     
     54   @@ -446,6 +446,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Exclusion.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Exclusion.html index eb068cd06..8053b41be 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Exclusion.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Exclusion.html @@ -103,7 +103,7 @@
     })
     43  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  44  12
     public class Exclusion {
    +  44  4
     public class Exclusion {
     45  
     
     46   @@ -218,6 +218,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Extension.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Extension.html index 26c1a39cf..6518899f2 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Extension.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Extension.html @@ -273,6 +273,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement.html index e78835fd3..67c3ecbd1 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.IssueManagement.html @@ -107,7 +107,7 @@
     })
     45  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  46  6
     public class IssueManagement {
    +  46  2
     public class IssueManagement {
     47  
     
     48   @@ -222,6 +222,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.License.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.License.html index d3512da64..c25c44663 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.License.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.License.html @@ -115,7 +115,7 @@
     })
     49  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  50  3
     public class License {
    +  50  1
     public class License {
     51  
     
     52   @@ -156,7 +156,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     70  
         public String getName() {
    -  71  6
             return name;
    +  71  2
             return name;
     72  
         }
     73   @@ -205,7 +205,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     96  
         public String getUrl() {
    -  97  6
             return url;
    +  97  2
             return url;
     98  
         }
     99   @@ -336,6 +336,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.MailingList.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.MailingList.html index c53b2e970..812b9075a 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.MailingList.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.MailingList.html @@ -588,6 +588,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Model.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Model.html index 845508d78..6190768a8 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Model.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Model.html @@ -406,7 +406,7 @@
     })
     189  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  190  12
     public class Model {
    +  190  5
     public class Model {
     191  
     
     192   @@ -651,7 +651,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     315  
         public String getGroupId() {
    -  316  12
             return groupId;
    +  316  5
             return groupId;
     317  
         }
     318   @@ -700,7 +700,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     341  
         public String getArtifactId() {
    -  342  12
             return artifactId;
    +  342  5
             return artifactId;
     343  
         }
     344   @@ -798,7 +798,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     393  
         public String getName() {
    -  394  12
             return name;
    +  394  5
             return name;
     395  
         }
     396   @@ -847,7 +847,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     419  
         public String getVersion() {
    -  420  12
             return version;
    +  420  5
             return version;
     421  
         }
     422   @@ -896,7 +896,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     445  
         public String getDescription() {
    -  446  18
             return description;
    +  446  7
             return description;
     447  
         }
     448   @@ -1337,7 +1337,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     679  
         public Model.Licenses getLicenses() {
    -  680  15
             return licenses;
    +  680  6
             return licenses;
     681  
         }
     682   @@ -1435,7 +1435,7 @@
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     731  
         public Organization getOrganization() {
    -  732  12
             return organization;
    +  732  5
             return organization;
     733  
         }
     734   @@ -2053,7 +2053,7 @@
         })
     1058  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1059  3
         public static class Contributors {
    +  1059  1
         public static class Contributors {
     1060  
     
     1061   @@ -2173,7 +2173,7 @@
         })
     1120  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1121  12
         public static class Dependencies {
    +  1121  5
         public static class Dependencies {
     1122  
     
     1123   @@ -2293,7 +2293,7 @@
         })
     1182  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1183  3
         public static class Developers {
    +  1183  1
         public static class Developers {
     1184  
     
     1185   @@ -2413,7 +2413,7 @@
         })
     1244  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1245  3
         public static class Licenses {
    +  1245  1
         public static class Licenses {
     1246  
     
     1247   @@ -2470,11 +2470,11 @@
             @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
     1273  
             public List<License> getLicense() {
    -  1274  3
                 if (license == null) {
    +  1274  1
                 if (license == null) {
     1275  0
                     license = new ArrayList<License>();
     1276  
                 }
    -  1277  3
                 return this.license;
    +  1277  1
                 return this.license;
     1278  
             }
     1279   @@ -2773,7 +2773,7 @@
         })
     1430  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1431  3
         public static class PluginRepositories {
    +  1431  1
         public static class PluginRepositories {
     1432  
     
     1433   @@ -2893,7 +2893,7 @@
         })
     1492  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1493  12
         public static class Profiles {
    +  1493  5
         public static class Profiles {
     1494  
     
     1495   @@ -3013,7 +3013,7 @@
         })
     1554  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1555  6
         public static class Properties {
    +  1555  3
         public static class Properties {
     1556  
     
     1557   @@ -3247,7 +3247,7 @@
          *
     1675  
          */
    -  1676  12
         @XmlAccessorType(XmlAccessType.FIELD)
    +  1676  5
         @XmlAccessorType(XmlAccessType.FIELD)
     1677  
         @XmlType(name = "", propOrder = {
     1678   @@ -3256,7 +3256,7 @@
         })
     1680  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  1681  3
         public static class Repositories {
    +  1681  1
         public static class Repositories {
     1682  
     
     1683   @@ -3330,6 +3330,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Notifier.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Notifier.html index 3909b1cd6..a5419cd02 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Notifier.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Notifier.html @@ -659,6 +659,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory.html index 55fe5e958..b26268df0 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ObjectFactory.html @@ -1394,6 +1394,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Organization.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Organization.html index 26ebf09fe..79e0af7cf 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Organization.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Organization.html @@ -218,6 +218,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Parent.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Parent.html index ea37ffef6..ac41b4a22 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Parent.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Parent.html @@ -109,7 +109,7 @@
     })
     46  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  47  12
     public class Parent {
    +  47  5
     public class Parent {
     48  
     
     49   @@ -332,6 +332,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Plugin.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Plugin.html index c53bd2e89..aaebd09f9 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Plugin.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Plugin.html @@ -211,7 +211,7 @@
     })
     95  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  96  60
     public class Plugin {
    +  96  31
     public class Plugin {
     97  
     
     98   @@ -747,7 +747,7 @@
         })
     377  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  378  36
         public static class Configuration {
    +  378  19
         public static class Configuration {
     379  
     
     380   @@ -989,7 +989,7 @@
         })
     502  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  503  48
         public static class Executions {
    +  503  21
         public static class Executions {
     504  
     
     505   @@ -1099,7 +1099,7 @@
          *
     559  
          */
    -  560  60
         @XmlAccessorType(XmlAccessType.FIELD)
    +  560  31
         @XmlAccessorType(XmlAccessType.FIELD)
     561  
         @XmlType(name = "", propOrder = {
     562   @@ -1184,6 +1184,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.html index dff982c7c..519375db6 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginExecution.html @@ -161,7 +161,7 @@
     })
     71  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  72  54
     public class PluginExecution {
    +  72  23
     public class PluginExecution {
     73  
     
     74   @@ -483,7 +483,7 @@
         })
     240  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  241  24
         public static class Configuration {
    +  241  10
         public static class Configuration {
     242  
     
     243   @@ -595,7 +595,7 @@
          *
     298  
          */
    -  299  54
         @XmlAccessorType(XmlAccessType.FIELD)
    +  299  23
         @XmlAccessorType(XmlAccessType.FIELD)
     300  
         @XmlType(name = "", propOrder = {
     301   @@ -604,7 +604,7 @@
         })
     303  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  304  54
         public static class Goals {
    +  304  23
         public static class Goals {
     305  
     
     306   @@ -678,6 +678,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.html index b1a1d8b64..6f743bd83 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.PluginManagement.html @@ -311,6 +311,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites.html index 6ae909334..d99df9f0e 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Prerequisites.html @@ -167,6 +167,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Profile.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Profile.html index d72dad564..d5b27756a 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Profile.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Profile.html @@ -261,7 +261,7 @@
     })
     119  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  120  18
     public class Profile {
    +  120  9
     public class Profile {
     121  
     
     122   @@ -952,7 +952,7 @@
         })
     483  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  484  6
         public static class Dependencies {
    +  484  2
         public static class Dependencies {
     485  
     
     486   @@ -1546,7 +1546,7 @@
          *
     790  
          */
    -  791  18
         @XmlAccessorType(XmlAccessType.FIELD)
    +  791  9
         @XmlAccessorType(XmlAccessType.FIELD)
     792  
         @XmlType(name = "", propOrder = {
     793   @@ -1629,6 +1629,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Relocation.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Relocation.html index 4a9fc8b54..108d7b2f6 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Relocation.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Relocation.html @@ -330,6 +330,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.html index c4e69b5e1..7f9df4bdc 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportPlugin.html @@ -163,7 +163,7 @@
     })
     72  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  73  36
     public class ReportPlugin {
    +  73  12
     public class ReportPlugin {
     74  
     
     75   @@ -538,7 +538,7 @@
         })
     269  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  270  30
         public static class Configuration {
    +  270  10
         public static class Configuration {
     271  
     
     272   @@ -650,7 +650,7 @@
          *
     327  
          */
    -  328  36
         @XmlAccessorType(XmlAccessType.FIELD)
    +  328  12
         @XmlAccessorType(XmlAccessType.FIELD)
     329  
         @XmlType(name = "", propOrder = {
     330   @@ -659,7 +659,7 @@
         })
     332  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  333  9
         public static class ReportSets {
    +  333  3
         public static class ReportSets {
     334  
     
     335   @@ -733,6 +733,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.html index c9655dd5e..773b566c2 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.ReportSet.html @@ -159,7 +159,7 @@
     })
     70  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  71  9
     public class ReportSet {
    +  71  3
     public class ReportSet {
     72  
     
     73   @@ -540,7 +540,7 @@
          *
     269  
          */
    -  270  9
         @XmlAccessorType(XmlAccessType.FIELD)
    +  270  3
         @XmlAccessorType(XmlAccessType.FIELD)
     271  
         @XmlType(name = "", propOrder = {
     272   @@ -549,7 +549,7 @@
         })
     274  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  275  9
         public static class Reports {
    +  275  3
         public static class Reports {
     276  
     
     277   @@ -623,6 +623,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Reporting.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Reporting.html index b721bc80d..2af1d8ab0 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Reporting.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Reporting.html @@ -132,7 +132,7 @@
     })
     57  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  58  12
     public class Reporting {
    +  58  4
     public class Reporting {
     59  
     
     60   @@ -338,7 +338,7 @@
          *
     165  
          */
    -  166  12
         @XmlAccessorType(XmlAccessType.FIELD)
    +  166  4
         @XmlAccessorType(XmlAccessType.FIELD)
     167  
         @XmlType(name = "", propOrder = {
     168   @@ -347,7 +347,7 @@
         })
     170  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  171  12
         public static class Plugins {
    +  171  4
         public static class Plugins {
     172  
     
     173   @@ -421,6 +421,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Repository.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Repository.html index 71f5d4fe9..1e939a5ae 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Repository.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Repository.html @@ -117,7 +117,7 @@
     })
     50  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  51  9
     public class Repository {
    +  51  3
     public class Repository {
     52  
     
     53   @@ -446,6 +446,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy.html index d76eb18cd..cf2b26cea 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.RepositoryPolicy.html @@ -107,7 +107,7 @@
     })
     45  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  46  18
     public class RepositoryPolicy {
    +  46  6
     public class RepositoryPolicy {
     47  
     
     48   @@ -277,6 +277,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Resource.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Resource.html index 600959b77..38b83f7ae 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Resource.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Resource.html @@ -163,7 +163,7 @@
     })
     72  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  73  18
     public class Resource {
    +  73  6
     public class Resource {
     74  
     
     75   @@ -595,7 +595,7 @@
          *
     298  
          */
    -  299  18
         @XmlAccessorType(XmlAccessType.FIELD)
    +  299  6
         @XmlAccessorType(XmlAccessType.FIELD)
     300  
         @XmlType(name = "", propOrder = {
     301   @@ -604,7 +604,7 @@
         })
     303  
         @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  304  6
         public static class Includes {
    +  304  2
         public static class Includes {
     305  
     
     306   @@ -678,6 +678,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Scm.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Scm.html index 9d42b18a6..4b600e40f 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Scm.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Scm.html @@ -109,7 +109,7 @@
     })
     46  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  47  12
     public class Scm {
    +  47  4
     public class Scm {
     48  
     
     49   @@ -332,6 +332,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Site.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Site.html index 02a6fb44b..501dda993 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Site.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.Site.html @@ -109,7 +109,7 @@
     })
     46  
     @Generated(value = "com.sun.tools.internal.xjc.Driver", date = "2012-11-09T12:33:57-05:00", comments = "JAXB RI vJAXB 2.1.10 in JDK 6")
    -  47  9
     public class Site {
    +  47  3
     public class Site {
     48  
     
     49   @@ -277,6 +277,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.package-info.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.package-info.html index 520de4bcd..623ba08cf 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.package-info.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.jaxb.pom.generated.package-info.html @@ -37,6 +37,6 @@
     package org.owasp.dependencycheck.jaxb.pom.generated;
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.ReportGenerator.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.ReportGenerator.html index 343ce9b95..3c0235130 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.ReportGenerator.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.ReportGenerator.html @@ -437,6 +437,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.VelocityLoggerRedirect.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.VelocityLoggerRedirect.html index 9b851c2ea..4b7bac202 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.VelocityLoggerRedirect.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.reporting.VelocityLoggerRedirect.html @@ -221,6 +221,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Checksum.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Checksum.html index 1a29bd15f..f4540f753 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Checksum.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Checksum.html @@ -88,36 +88,36 @@
          */
     36  
         public static byte[] getChecksum(String algorithm, File file) throws NoSuchAlgorithmException, IOException {
    -  37  471
             InputStream fis = null;
    -  38  471
             byte[] buffer = new byte[1024];
    -  39  471
             MessageDigest complete = MessageDigest.getInstance(algorithm);
    +  37  53
             InputStream fis = null;
    +  38  53
             byte[] buffer = new byte[1024];
    +  39  53
             MessageDigest complete = MessageDigest.getInstance(algorithm);
     40  
             int numRead;
     41  
             try {
    -  42  468
                 fis = new FileInputStream(file);
    +  42  52
                 fis = new FileInputStream(file);
     43  
                 do {
    -  44  896628
                     numRead = fis.read(buffer);
    -  45  896628
                     if (numRead > 0) {
    -  46  896163
                         complete.update(buffer, 0, numRead);
    +  44  26914
                     numRead = fis.read(buffer);
    +  45  26914
                     if (numRead > 0) {
    +  46  26863
                         complete.update(buffer, 0, numRead);
     47  
                     }
    -  48  896628
                 } while (numRead != -1);
    +  48  26914
                 } while (numRead != -1);
     49  
             } finally {
    -  50  468
                 if (fis != null) {
    +  50  52
                 if (fis != null) {
     51  
                     try {
    -  52  465
                         fis.close();
    +  52  51
                         fis.close();
     53  0
                     } catch (IOException ex) {
     54  0
                         Logger.getLogger(Checksum.class.getName()).log(Level.FINEST, "Error closing file '" + file.getName() + "'.", ex);
    -  55  468
                     }
    +  55  52
                     }
     56  
                 }
     57  
             }
    -  58  465
             return complete.digest();
    +  58  51
             return complete.digest();
     59  
         }
     60   @@ -140,8 +140,8 @@
          */
     69  
         public static String getMD5Checksum(File file) throws IOException, NoSuchAlgorithmException {
    -  70  231
             byte[] b = getChecksum("MD5", file);
    -  71  231
             return getHex(b);
    +  70  25
             byte[] b = getChecksum("MD5", file);
    +  71  25
             return getHex(b);
     72  
         }
     73   @@ -164,8 +164,8 @@
          */
     82  
         public static String getSHA1Checksum(File file) throws IOException, NoSuchAlgorithmException {
    -  83  231
             byte[] b = getChecksum("SHA1", file);
    -  84  231
             return getHex(b);
    +  83  25
             byte[] b = getChecksum("SHA1", file);
    +  84  25
             return getHex(b);
     85  
         }
     86   @@ -192,22 +192,22 @@
          */
     97  
         public static String getHex(byte[] raw) {
    -  98  465
             if (raw == null) {
    +  98  51
             if (raw == null) {
     99  0
                 return null;
     100  
             }
    -  101  465
             final StringBuilder hex = new StringBuilder(2 * raw.length);
    -  102  8832
             for (final byte b : raw) {
    -  103  8367
                 hex.append(HEXES.charAt((b & 0xF0) >> 4)).append(HEXES.charAt((b & 0x0F)));
    +  101  51
             final StringBuilder hex = new StringBuilder(2 * raw.length);
    +  102  968
             for (final byte b : raw) {
    +  103  917
                 hex.append(HEXES.charAt((b & 0xF0) >> 4)).append(HEXES.charAt((b & 0x0F)));
     104  
             }
    -  105  465
             return hex.toString();
    +  105  51
             return hex.toString();
     106  
         }
     107  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersion.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersion.html index abefff363..5afb215ef 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersion.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersion.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    DependencyVersion
    92%
    76/82
    77%
    48/62
    5.091
    DependencyVersion
    92%
    76/82
    80%
    50/62
    5.091
     
    @@ -97,7 +97,7 @@
      * @author Jeremy Long (jeremy.long@owasp.org)
     40  
      */
    -  41  39
     public class DependencyVersion implements Iterable, Comparable<DependencyVersion> {
    +  41  13
     public class DependencyVersion implements Iterable, Comparable<DependencyVersion> {
     42  
     
     43   @@ -106,8 +106,8 @@
          * Constructor for a empty DependencyVersion.
     45  
          */
    -  46  6
         public DependencyVersion() {
    -  47  6
         }
    +  46  2
         public DependencyVersion() {
    +  47  2
         }
     48  
     
     49   @@ -126,9 +126,9 @@
          * @param version the well formated version number to parse
     56  
          */
    -  57  4199
         public DependencyVersion(String version) {
    -  58  4199
             parseVersion(version);
    -  59  4199
         }
    +  57  4748
         public DependencyVersion(String version) {
    +  58  4748
             parseVersion(version);
    +  59  4748
         }
     60  
     
     61   @@ -147,21 +147,21 @@
          */
     68  
         public final void parseVersion(String version) {
    -  69  4205
             versionParts = new ArrayList<String>();
    -  70  4205
             if (version != null) {
    -  71  4205
                 final Pattern rx = Pattern.compile("(\\d+|[a-z]+\\d+|(release|beta|alpha)$)");
    -  72  4205
                 final Matcher matcher = rx.matcher(version.toLowerCase());
    -  73  17264
                 while (matcher.find()) {
    -  74  13059
                     versionParts.add(matcher.group());
    +  69  4750
             versionParts = new ArrayList<String>();
    +  70  4750
             if (version != null) {
    +  71  4750
                 final Pattern rx = Pattern.compile("(\\d+|[a-z]+\\d+|(release|beta|alpha)$)");
    +  72  4750
                 final Matcher matcher = rx.matcher(version.toLowerCase());
    +  73  19747
                 while (matcher.find()) {
    +  74  14997
                     versionParts.add(matcher.group());
     75  
                 }
    -  76  4205
                 if (versionParts.isEmpty()) {
    -  77  47
                     versionParts.add(version);
    +  76  4750
                 if (versionParts.isEmpty()) {
    +  77  30
                     versionParts.add(version);
     78  
                 }
     79  
             }
    -  80  4205
         }
    +  80  4750
         }
     81  
         /**
     82   @@ -184,7 +184,7 @@
          */
     91  
         public List<String> getVersionParts() {
    -  92  5664
             return versionParts;
    +  92  8414
             return versionParts;
     93  
         }
     94   @@ -201,8 +201,8 @@
          */
     100  
         public void setVersionParts(List<String> versionParts) {
    -  101  3
             this.versionParts = versionParts;
    -  102  3
         }
    +  101  1
             this.versionParts = versionParts;
    +  102  1
         }
     103  
     
     104   @@ -217,7 +217,7 @@
          */
     109  
         public Iterator iterator() {
    -  110  3
             return versionParts.iterator();
    +  110  1
             return versionParts.iterator();
     111  
         }
     112   @@ -236,7 +236,7 @@
         @Override
     119  
         public String toString() {
    -  120  1244
             return StringUtils.join(versionParts.toArray(), ".");
    +  120  430
             return StringUtils.join(versionParts.toArray(), ".");
     121  
         }
     122   @@ -257,33 +257,33 @@
         @Override
     130  
         public boolean equals(Object obj) {
    -  131  3911
             if (obj == null) {
    +  131  4595
             if (obj == null) {
     132  0
                 return false;
     133  
             }
    -  134  3911
             if (getClass() != obj.getClass()) {
    +  134  4595
             if (getClass() != obj.getClass()) {
     135  0
                 return false;
     136  
             }
    -  137  3911
             final DependencyVersion other = (DependencyVersion) obj;
    -  138  3911
             final int max = (this.versionParts.size() < other.versionParts.size())
    +  137  4595
             final DependencyVersion other = (DependencyVersion) obj;
    +  138  4595
             final int max = (this.versionParts.size() < other.versionParts.size())
     139  
                     ? this.versionParts.size() : other.versionParts.size();
     140  
             //TODO steal better version of code from compareTo
    -  141  7904
             for (int i = 0; i < max; i++) {
    -  142  7517
                 final String thisPart = this.versionParts.get(i);
    -  143  7517
                 final String otherPart = other.versionParts.get(i);
    -  144  7517
                 if (!thisPart.equals(otherPart)) {
    -  145  3524
                     return false;
    +  141  7572
             for (int i = 0; i < max; i++) {
    +  142  7227
                 final String thisPart = this.versionParts.get(i);
    +  143  7227
                 final String otherPart = other.versionParts.get(i);
    +  144  7227
                 if (!thisPart.equals(otherPart)) {
    +  145  4250
                     return false;
     146  
                 }
     147  
             }
    -  148  387
             if (this.versionParts.size() > max) {
    -  149  42
                 for (int i = max; i < this.versionParts.size(); i++) {
    -  150  42
                     if (!"0".equals(this.versionParts.get(i))) {
    -  151  42
                         return false;
    +  148  345
             if (this.versionParts.size() > max) {
    +  149  21
                 for (int i = max; i < this.versionParts.size(); i++) {
    +  150  21
                     if (!"0".equals(this.versionParts.get(i))) {
    +  151  21
                         return false;
     152  
                     }
     153   @@ -292,10 +292,10 @@
             }
     155  
     
    -  156  345
             if (other.versionParts.size() > max) {
    -  157  201
                 for (int i = max; i < other.versionParts.size(); i++) {
    -  158  201
                     if (!"0".equals(other.versionParts.get(i))) {
    -  159  201
                         return false;
    +  156  324
             if (other.versionParts.size() > max) {
    +  157  258
                 for (int i = max; i < other.versionParts.size(); i++) {
    +  158  250
                     if (!"0".equals(other.versionParts.get(i))) {
    +  159  234
                         return false;
     160  
                     }
     161   @@ -314,7 +314,7 @@
              *  }
     168  
              */
    -  169  144
             return true;
    +  169  90
             return true;
     170  
         }
     171   @@ -333,9 +333,9 @@
         @Override
     178  
         public int hashCode() {
    -  179  3
             int hash = 5;
    -  180  3
             hash = 71 * hash + (this.versionParts != null ? this.versionParts.hashCode() : 0);
    -  181  3
             return hash;
    +  179  1
             int hash = 5;
    +  180  1
             hash = 71 * hash + (this.versionParts != null ? this.versionParts.hashCode() : 0);
    +  181  1
             return hash;
     182  
         }
     183   @@ -358,35 +358,35 @@
          */
     192  
         public boolean matchesAtLeastThreeLevels(DependencyVersion version) {
    -  193  2472
             if (version == null) {
    +  193  3971
             if (version == null) {
     194  0
                 return false;
     195  
             }
     196  
     
    -  197  2472
             boolean ret = true;
    -  198  2472
             int max = (this.versionParts.size() < version.versionParts.size())
    +  197  3971
             boolean ret = true;
    +  198  3971
             int max = (this.versionParts.size() < version.versionParts.size())
     199  
                     ? this.versionParts.size() : version.versionParts.size();
     200  
     
    -  201  2472
             if (max > 3) {
    -  202  6
                 max = 3;
    +  201  3971
             if (max > 3) {
    +  202  2
                 max = 3;
     203  
             }
     204  
     
    -  205  4779
             for (int i = 0; i < max; i++) {
    -  206  4578
                 if (this.versionParts.get(i) == null || !this.versionParts.get(i).equals(version.versionParts.get(i))) {
    -  207  2271
                     ret = false;
    -  208  2271
                     break;
    +  205  6258
             for (int i = 0; i < max; i++) {
    +  206  6024
                 if (this.versionParts.get(i) == null || !this.versionParts.get(i).equals(version.versionParts.get(i))) {
    +  207  3737
                     ret = false;
    +  208  3737
                     break;
     209  
                 }
     210  
             }
     211  
     
    -  212  2472
             return ret;
    +  212  3971
             return ret;
     213  
         }
     214   @@ -395,50 +395,50 @@
         @Override
     216  
         public int compareTo(DependencyVersion version) {
    -  217  66
             if (version == null) {
    +  217  22
             if (version == null) {
     218  0
                 return 1;
     219  
             }
    -  220  66
             final List<String> left = this.getVersionParts();
    -  221  66
             final List<String> right = version.getVersionParts();
    -  222  66
             final int max = left.size() < right.size() ? left.size() : right.size();
    +  220  22
             final List<String> left = this.getVersionParts();
    +  221  22
             final List<String> right = version.getVersionParts();
    +  222  22
             final int max = left.size() < right.size() ? left.size() : right.size();
     223  
     
    -  224  138
             for (int i = 0; i < max; i++) {
    -  225  117
                 final String lStr = left.get(i);
    -  226  117
                 final String rStr = right.get(i);
    -  227  117
                 if (lStr.equals(rStr)) {
    -  228  72
                     continue;
    +  224  46
             for (int i = 0; i < max; i++) {
    +  225  39
                 final String lStr = left.get(i);
    +  226  39
                 final String rStr = right.get(i);
    +  227  39
                 if (lStr.equals(rStr)) {
    +  228  24
                     continue;
     229  
                 }
     230  
                 try {
    -  231  45
                     final int l = Integer.parseInt(lStr);
    -  232  42
                     final int r = Integer.parseInt(rStr);
    -  233  27
                     if (l < r) {
    -  234  9
                         return -1;
    -  235  18
                     } else if (l > r) {
    -  236  18
                         return 1;
    +  231  15
                     final int l = Integer.parseInt(lStr);
    +  232  14
                     final int r = Integer.parseInt(rStr);
    +  233  9
                     if (l < r) {
    +  234  3
                         return -1;
    +  235  6
                     } else if (l > r) {
    +  236  6
                         return 1;
     237  
                     }
    -  238  18
                 } catch (NumberFormatException ex) {
    -  239  18
                     final int comp = left.get(i).compareTo(right.get(i));
    -  240  18
                     if (comp < 0) {
    +  238  6
                 } catch (NumberFormatException ex) {
    +  239  6
                     final int comp = left.get(i).compareTo(right.get(i));
    +  240  6
                     if (comp < 0) {
     241  0
                         return -1;
    -  242  18
                     } else if (comp > 0) {
    -  243  18
                         return 1;
    +  242  6
                     } else if (comp > 0) {
    +  243  6
                         return 1;
     244  
                     }
     245  0
                 }
     246  
             }
    -  247  21
             if (left.size() < right.size()) {
    -  248  9
                 return -1;
    -  249  12
             } else if (left.size() > right.size()) {
    -  250  9
                 return 1;
    +  247  7
             if (left.size() < right.size()) {
    +  248  3
                 return -1;
    +  249  4
             } else if (left.size() > right.size()) {
    +  250  3
                 return 1;
     251  
             } else {
    -  252  3
                 return 0;
    +  252  1
                 return 0;
     253  
             }
     254   @@ -447,6 +447,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersionUtil.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersionUtil.html index d34b5d88e..06cfa9259 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersionUtil.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DependencyVersionUtil.html @@ -87,7 +87,7 @@
          * Regular expression to extract version numbers from file names.
     35  
          */
    -  36  3
         private static final Pattern RX_VERSION = Pattern.compile("\\d+(\\.\\d{1,6})+(\\.?([_-](release|beta|alpha)|[a-zA-Z_-]{1,3}\\d{1,8}))?");
    +  36  1
         private static final Pattern RX_VERSION = Pattern.compile("\\d+(\\.\\d{1,6})+(\\.?([_-](release|beta|alpha)|[a-zA-Z_-]{1,3}\\d{1,8}))?");
     37  
         /**
     38   @@ -98,7 +98,7 @@
          * version number using the previous regex.
     41  
          */
    -  42  3
         private static final Pattern RX_SINGLE_VERSION = Pattern.compile("\\d+(\\.?([_-](release|beta|alpha)|[a-zA-Z_-]{1,3}\\d{1,8}))?");
    +  42  1
         private static final Pattern RX_SINGLE_VERSION = Pattern.compile("\\d+(\\.?([_-](release|beta|alpha)|[a-zA-Z_-]{1,3}\\d{1,8}))?");
     43  
     
     44   @@ -133,56 +133,56 @@
          */
     60  
         public static DependencyVersion parseVersion(String text) {
    -  61  4104
             if (text == null) {
    -  62  18
                 return null;
    +  61  4708
             if (text == null) {
    +  62  12
                 return null;
     63  
             }
     64  
             //'-' is a special case used within the CVE entries, just include it as the version.
    -  65  4086
             if ("-".equals(text)) {
    -  66  3
                 final DependencyVersion dv = new DependencyVersion();
    -  67  3
                 final ArrayList<String> list = new ArrayList<String>();
    -  68  3
                 list.add(text);
    -  69  3
                 dv.setVersionParts(list);
    -  70  3
                 return dv;
    +  65  4696
             if ("-".equals(text)) {
    +  66  1
                 final DependencyVersion dv = new DependencyVersion();
    +  67  1
                 final ArrayList<String> list = new ArrayList<String>();
    +  68  1
                 list.add(text);
    +  69  1
                 dv.setVersionParts(list);
    +  70  1
                 return dv;
     71  
             }
    -  72  4083
             String version = null;
    -  73  4083
             Matcher matcher = RX_VERSION.matcher(text);
    -  74  4083
             if (matcher.find()) {
    -  75  4020
                 version = matcher.group();
    +  72  4695
             String version = null;
    +  73  4695
             Matcher matcher = RX_VERSION.matcher(text);
    +  74  4695
             if (matcher.find()) {
    +  75  4674
                 version = matcher.group();
     76  
             }
     77  
             //throw away the results if there are two things that look like version numbers
    -  78  4083
             if (matcher.find()) {
    -  79  6
                 return null;
    +  78  4695
             if (matcher.find()) {
    +  79  2
                 return null;
     80  
             }
    -  81  4077
             if (version == null) {
    -  82  63
                 matcher = RX_SINGLE_VERSION.matcher(text);
    -  83  63
                 if (matcher.find()) {
    -  84  54
                     version = matcher.group();
    +  81  4693
             if (version == null) {
    +  82  21
                 matcher = RX_SINGLE_VERSION.matcher(text);
    +  83  21
                 if (matcher.find()) {
    +  84  18
                     version = matcher.group();
     85  
                 } else {
    -  86  9
                     return null;
    +  86  3
                     return null;
     87  
                 }
     88  
                 //throw away the results if there are two things that look like version numbers
    -  89  54
                 if (matcher.find()) {
    -  90  3
                     return null;
    +  89  18
                 if (matcher.find()) {
    +  90  1
                     return null;
     91  
                 }
     92  
             }
    -  93  4065
             return new DependencyVersion(version);
    +  93  4689
             return new DependencyVersion(version);
     94  
         }
     95  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DownloadFailedException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DownloadFailedException.html index 7a344cdad..6b88dfaa7 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DownloadFailedException.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.DownloadFailedException.html @@ -149,6 +149,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Downloader.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Downloader.html index 1379aca9a..9835fc60c 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Downloader.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Downloader.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    Downloader
    0%
    0/84
    0%
    0/24
    4.143
    Downloader
    8%
    7/83
    4%
    1/24
    7
     
    @@ -76,331 +76,284 @@  29  
     import java.net.SocketAddress;
     30   -
     import java.net.URL;
    +
     import java.net.URISyntaxException;
     31   -
     import java.util.logging.Level;
    +
     import java.net.URL;
     32   -
     import java.util.logging.Logger;
    +
     import java.util.logging.Level;
     33   -
     import java.util.zip.GZIPInputStream;
    +
     import java.util.logging.Logger;
     34   -
     import java.util.zip.InflaterInputStream;
    +
     import java.util.zip.GZIPInputStream;
     35   -
     
    +
     import java.util.zip.InflaterInputStream;
     36   -
     /**
    +
     
     37   -
      * A utility to download files from the Internet.
    +
     /**
     38   -
      *
    +
      * A utility to download files from the Internet.
     39   -
      * @author Jeremy Long (jeremy.long@owasp.org)
    +
      *
     40   -
      */
    +
      * @author Jeremy Long (jeremy.long@owasp.org)
     41   -
     public final class Downloader {
    +
      */
     42   -
     
    +
     public final class Downloader {
     43   -
         /**
    +
     
     44   -
          * Private constructor for utility class.
    +
         /**
     45   +
          * Private constructor for utility class.
    +  46  
          */
    -  46  0
         private Downloader() {
    -  47  0
         }
    -  48   -
     
    +  47  0
         private Downloader() {
    +  48  0
         }
     49   -
         /**
    -  50   -
          * Retrieves a file from a given URL and saves it to the outputPath.
    -  51   -
          *
    -  52   -
          * @param url the URL of the file to download.
    -  53   -
          * @param outputPath the path to the save the file to.
    -  54   -
          * @throws DownloadFailedException is thrown if there is an error
    -  55   -
          * downloading the file.
    -  56   -
          */
    -  57   -
         public static void fetchFile(URL url, String outputPath) throws DownloadFailedException {
    -  58  0
             fetchFile(url, outputPath, false);
    -  59  0
         }
    -  60  
     
    -  61   +  50  
         /**
    -  62   +  51  
          * Retrieves a file from a given URL and saves it to the outputPath.
    -  63   +  52  
          *
    -  64   +  53  
          * @param url the URL of the file to download.
    -  65   +  54  
          * @param outputPath the path to the save the file to.
    -  66   -
          * @param unzip true/false indicating that the file being retrieved is
    -  67   -
          * gzipped and if true, should be uncompressed before writing to the file.
    -  68   +  55  
          * @throws DownloadFailedException is thrown if there is an error
    -  69   +  56  
          * downloading the file.
    -  70   +  57  
          */
    -  71   -
         public static void fetchFile(URL url, String outputPath, boolean unzip) throws DownloadFailedException {
    -  72  0
             final File f = new File(outputPath);
    -  73  0
             fetchFile(url, f, unzip);
    -  74  0
         }
    +  58   +
         public static void fetchFile(URL url, File outputPath) throws DownloadFailedException {
    +  59  0
             HttpURLConnection conn = null;
    +  60   +
             try {
    +  61  0
                 conn = Downloader.getConnection(url);
    +  62  0
                 conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
    +  63  0
                 conn.connect();
    +  64  0
             } catch (IOException ex) {
    +  65   +
                 try {
    +  66  0
                     if (conn != null) {
    +  67  0
                         conn.disconnect();
    +  68   +
                     }
    +  69   +
                 } finally {
    +  70  0
                     conn = null;
    +  71  0
                 }
    +  72  0
                 throw new DownloadFailedException("Error downloading file.", ex);
    +  73  0
             }
    +  74  0
             final String encoding = conn.getContentEncoding();
     75  
     
    -  76   -
         /**
    -  77   -
          * Retrieves a file from a given URL and saves it to the outputPath.
    +  76  0
             BufferedOutputStream writer = null;
    +  77  0
             InputStream reader = null;
     78   -
          *
    -  79   -
          * @param url the URL of the file to download.
    -  80   -
          * @param outputPath the path to the save the file to.
    -  81   -
          * @throws DownloadFailedException is thrown if there is an error
    -  82   -
          * downloading the file.
    +
             try {
    +  79  0
                 if (encoding != null && "gzip".equalsIgnoreCase(encoding)) {
    +  80  0
                     reader = new GZIPInputStream(conn.getInputStream());
    +  81  0
                 } else if (encoding != null && "deflate".equalsIgnoreCase(encoding)) {
    +  82  0
                     reader = new InflaterInputStream(conn.getInputStream());
     83   -
          */
    -  84   -
         public static void fetchFile(URL url, File outputPath) throws DownloadFailedException {
    -  85  0
             fetchFile(url, outputPath, false);
    -  86  0
         }
    -  87   -
     
    -  88   -
         /**
    -  89   -
          * Retrieves a file from a given URL and saves it to the outputPath.
    -  90   -
          *
    -  91   -
          * @param url the URL of the file to download.
    -  92   -
          * @param outputPath the path to the save the file to.
    -  93   -
          * @param unzip true/false indicating that the file being retrieved is
    -  94   -
          * gzipped and if true, should be uncompressed before writing to the file.
    -  95   -
          * @throws DownloadFailedException is thrown if there is an error
    -  96   -
          * downloading the file.
    -  97   -
          */
    -  98   -
         public static void fetchFile(URL url, File outputPath, boolean unzip) throws DownloadFailedException {
    -  99  0
             HttpURLConnection conn = null;
    -  100   -
             try {
    -  101  0
                 conn = Downloader.getConnection(url);
    -  102  0
                 conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
    -  103  0
                 conn.connect();
    -  104  0
             } catch (IOException ex) {
    -  105   -
                 try {
    -  106  0
                     if (conn != null) {
    -  107  0
                         conn.disconnect();
    -  108   -
                     }
    -  109   -
                 } finally {
    -  110  0
                     conn = null;
    -  111  0
                 }
    -  112  0
                 throw new DownloadFailedException("Error downloading file.", ex);
    -  113  0
             }
    -  114  0
             final String encoding = conn.getContentEncoding();
    -  115   -
     
    -  116  0
             BufferedOutputStream writer = null;
    -  117  0
             InputStream reader = null;
    -  118   -
             try {
    -  119  0
                 if (unzip || (encoding != null && "gzip".equalsIgnoreCase(encoding))) {
    -  120  0
                     reader = new GZIPInputStream(conn.getInputStream());
    -  121  0
                 } else if (encoding != null && "deflate".equalsIgnoreCase(encoding)) {
    -  122  0
                     reader = new InflaterInputStream(conn.getInputStream());
    -  123  
                 } else {
    -  124  0
                     reader = conn.getInputStream();
    -  125   +  84  0
                     reader = conn.getInputStream();
    +  85  
                 }
    -  126   +  86  
     
    -  127  0
                 writer = new BufferedOutputStream(new FileOutputStream(outputPath));
    -  128  0
                 final byte[] buffer = new byte[4096];
    -  129   +  87  0
                 writer = new BufferedOutputStream(new FileOutputStream(outputPath));
    +  88  0
                 final byte[] buffer = new byte[4096];
    +  89  
                 int bytesRead;
    -  130  0
                 while ((bytesRead = reader.read(buffer)) > 0) {
    -  131  0
                     writer.write(buffer, 0, bytesRead);
    -  132   +  90  0
                 while ((bytesRead = reader.read(buffer)) > 0) {
    +  91  0
                     writer.write(buffer, 0, bytesRead);
    +  92  
                 }
    -  133  0
             } catch (Exception ex) {
    -  134  0
                 throw new DownloadFailedException("Error saving downloaded file.", ex);
    -  135   +  93  0
             } catch (Exception ex) {
    +  94  0
                 throw new DownloadFailedException("Error saving downloaded file.", ex);
    +  95  
             } finally {
    -  136  0
                 if (writer != null) {
    -  137   +  96  0
                 if (writer != null) {
    +  97  
                     try {
    -  138  0
                         writer.close();
    -  139  0
                         writer = null;
    -  140  0
                     } catch (Exception ex) {
    -  141  0
                         Logger.getLogger(Downloader.class.getName()).log(Level.FINEST,
    -  142   +  98  0
                         writer.close();
    +  99  0
                     } catch (Exception ex) {
    +  100  0
                         Logger.getLogger(Downloader.class.getName()).log(Level.FINEST,
    +  101  
                                 "Error closing the writer in Downloader.", ex);
    -  143  0
                     }
    -  144   +  102  0
                     }
    +  103  
                 }
    -  145  0
                 if (reader != null) {
    -  146   +  104  0
                 if (reader != null) {
    +  105  
                     try {
    -  147  0
                         reader.close();
    -  148  0
                         reader = null;
    -  149  0
                     } catch (Exception ex) {
    -  150   -
     
    -  151  0
                         Logger.getLogger(Downloader.class.getName()).log(Level.FINEST,
    -  152   +  106  0
                         reader.close();
    +  107  0
                     } catch (Exception ex) {
    +  108  0
                         Logger.getLogger(Downloader.class.getName()).log(Level.FINEST,
    +  109  
                                 "Error closing the reader in Downloader.", ex);
    -  153  0
                     }
    -  154   +  110  0
                     }
    +  111  
                 }
    -  155   +  112  
                 try {
    -  156  0
                     conn.disconnect();
    -  157   +  113  0
                     conn.disconnect();
    +  114  
                 } finally {
    -  158  0
                     conn = null;
    -  159  0
                 }
    -  160  0
             }
    -  161  0
         }
    -  162   +  115  0
                     conn = null;
    +  116  0
                 }
    +  117  0
             }
    +  118  0
         }
    +  119  
     
    -  163   +  120  
         /**
    -  164   +  121  
          * Makes an HTTP Head request to retrieve the last modified date of the
    -  165   -
          * given URL.
    -  166   +  122   +
          * given URL. If the file:// protocol is specified, then the lastTimestamp
    +  123   +
          * of the file is returned.
    +  124  
          *
    -  167   +  125  
          * @param url the URL to retrieve the timestamp from
    -  168   +  126  
          * @return an epoch timestamp
    -  169   +  127  
          * @throws DownloadFailedException is thrown if an exception occurs making
    -  170   +  128  
          * the HTTP request
    -  171   +  129  
          */
    -  172   +  130  
         public static long getLastModified(URL url) throws DownloadFailedException {
    -  173  0
             HttpURLConnection conn = null;
    -  174  0
             long timestamp = 0;
    -  175   -
             try {
    -  176  0
                 conn = Downloader.getConnection(url);
    -  177  0
                 conn.setRequestMethod("HEAD");
    -  178  0
                 conn.connect();
    -  179  0
                 timestamp = conn.getLastModified();
    -  180  0
             } catch (Exception ex) {
    -  181  0
                 throw new DownloadFailedException("Error making HTTP HEAD request.", ex);
    -  182   -
             } finally {
    -  183  0
                 if (conn != null) {
    -  184   -
                     try {
    -  185  0
                         conn.disconnect();
    -  186   -
                     } finally {
    -  187  0
                         conn = null;
    -  188  0
                     }
    -  189   +  131  3
             long timestamp = 0;
    +  132   +
             //TODO add the FPR protocol?
    +  133  3
             if ("file".equalsIgnoreCase(url.getProtocol())) {
    +  134   +
                 File lastModifiedFile;
    +  135   +
                 try {
    +  136   +
     //                if (System.getProperty("os.name").toLowerCase().startsWith("windows")) {
    +  137   +
     //                    String filePath = url.toString();
    +  138   +
     //                    if (filePath.matches("file://[a-zA-Z]:.*")) {
    +  139   +
     //                        f = new File(filePath.substring(7));
    +  140   +
     //                    } else {
    +  141   +
     //                        f = new File(url.toURI());
    +  142   +
     //                    }
    +  143   +
     //                } else {
    +  144  3
                     lastModifiedFile = new File(url.toURI());
    +  145   +
     //                }
    +  146  0
                 } catch (URISyntaxException ex) {
    +  147  0
                     final String msg = String.format("Unable to locate '%s'; is the cve.url-2.0.modified property set correctly?", url.toString());
    +  148  0
                     throw new DownloadFailedException(msg);
    +  149  3
                 }
    +  150  3
                 timestamp = lastModifiedFile.lastModified();
    +  151  3
             } else {
    +  152  0
                 HttpURLConnection conn = null;
    +  153   +
                 try {
    +  154  0
                     conn = Downloader.getConnection(url);
    +  155  0
                     conn.setRequestMethod("HEAD");
    +  156  0
                     conn.connect();
    +  157  0
                     timestamp = conn.getLastModified();
    +  158  0
                 } catch (Exception ex) {
    +  159  0
                     throw new DownloadFailedException("Error making HTTP HEAD request.", ex);
    +  160   +
                 } finally {
    +  161  0
                     if (conn != null) {
    +  162   +
                         try {
    +  163  0
                             conn.disconnect();
    +  164   +
                         } finally {
    +  165  0
                             conn = null;
    +  166  0
                         }
    +  167   +
                     }
    +  168  
                 }
    -  190   +  169  
             }
    -  191  0
             return timestamp;
    -  192   +  170  3
             return timestamp;
    +  171  
         }
    -  193   +  172  
     
    -  194   +  173  
         /**
    -  195   +  174  
          * Utility method to get an HttpURLConnection. If the app is configured to
    -  196   +  175  
          * use a proxy this method will retrieve the proxy settings and use them
    -  197   +  176  
          * when setting up the connection.
    -  198   +  177  
          *
    -  199   +  178  
          * @param url the url to connect to
    -  200   +  179  
          * @return an HttpURLConnection
    -  201   +  180  
          * @throws DownloadFailedException thrown if there is an exception
    -  202   +  181  
          */
    -  203   +  182  
         private static HttpURLConnection getConnection(URL url) throws DownloadFailedException {
    -  204  0
             HttpURLConnection conn = null;
    -  205  0
             Proxy proxy = null;
    -  206  0
             final String proxyUrl = Settings.getString(Settings.KEYS.PROXY_URL);
    -  207   +  183  0
             HttpURLConnection conn = null;
    +  184  0
             Proxy proxy = null;
    +  185  0
             final String proxyUrl = Settings.getString(Settings.KEYS.PROXY_URL);
    +  186  
             try {
    -  208  0
                 if (proxyUrl != null) {
    -  209  0
                     final int proxyPort = Settings.getInt(Settings.KEYS.PROXY_PORT);
    -  210  0
                     final SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort);
    -  211  0
                     proxy = new Proxy(Proxy.Type.HTTP, addr);
    -  212  0
                     conn = (HttpURLConnection) url.openConnection(proxy);
    -  213  0
                 } else {
    -  214  0
                     conn = (HttpURLConnection) url.openConnection();
    -  215   +  187  0
                 if (proxyUrl != null) {
    +  188  0
                     final int proxyPort = Settings.getInt(Settings.KEYS.PROXY_PORT);
    +  189  0
                     final SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort);
    +  190  0
                     proxy = new Proxy(Proxy.Type.HTTP, addr);
    +  191  0
                     conn = (HttpURLConnection) url.openConnection(proxy);
    +  192  0
                 } else {
    +  193  0
                     conn = (HttpURLConnection) url.openConnection();
    +  194  
                 }
    -  216   -
                 //added a default timeout of 20000
    -  217   -
                 //if (Settings.getString(Settings.KEYS.CONNECTION_TIMEOUT) != null) {
    -  218  0
                 final int timeout = Settings.getInt(Settings.KEYS.CONNECTION_TIMEOUT, 60000);
    -  219  0
                 conn.setConnectTimeout(timeout);
    -  220   -
                 //}
    -  221  0
             } catch (IOException ex) {
    -  222  0
                 if (conn != null) {
    -  223   +  195  0
                 final int timeout = Settings.getInt(Settings.KEYS.CONNECTION_TIMEOUT, 60000);
    +  196  0
                 conn.setConnectTimeout(timeout);
    +  197  0
             } catch (IOException ex) {
    +  198  0
                 if (conn != null) {
    +  199  
                     try {
    -  224  0
                         conn.disconnect();
    -  225   +  200  0
                         conn.disconnect();
    +  201  
                     } finally {
    -  226  0
                         conn = null;
    -  227  0
                     }
    -  228   +  202  0
                         conn = null;
    +  203  0
                     }
    +  204  
                 }
    -  229  0
                 throw new DownloadFailedException("Error getting connection.", ex);
    -  230  0
             }
    -  231  0
             return conn;
    -  232   +  205  0
                 throw new DownloadFailedException("Error getting connection.", ex);
    +  206  0
             }
    +  207  0
             return conn;
    +  208  
         }
    -  233   +  209  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.ExtractionException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.ExtractionException.html new file mode 100644 index 000000000..57767a294 --- /dev/null +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.ExtractionException.html @@ -0,0 +1,154 @@ + + + + +Coverage Report + + + + +
    Coverage Report - org.owasp.dependencycheck.utils.ExtractionException
    +
     
    + + + + +
    Classes in this File Line Coverage Branch Coverage Complexity
    ExtractionException
    0%
    0/8
    N/A
    1
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     1  
     /*
     2  
      * This file is part of dependency-check-core.
     3  
      *
     4  
      * Dependency-check-core is free software: you can redistribute it and/or modify it
     5  
      * under the terms of the GNU General Public License as published by the Free
     6  
      * Software Foundation, either version 3 of the License, or (at your option) any
     7  
      * later version.
     8  
      *
     9  
      * Dependency-check-core is distributed in the hope that it will be useful, but
     10  
      * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  
      * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
     12  
      * details.
     13  
      *
     14  
      * You should have received a copy of the GNU General Public License along with
     15  
      * dependency-check-core. If not, see http://www.gnu.org/licenses/.
     16  
      *
     17  
      * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
     18  
      */
     19  
     package org.owasp.dependencycheck.utils;
     20  
     
     21  
     import java.io.IOException;
     22  
     
     23  
     /**
     24  
      * An exception used when a file is unable to be un-zipped.
     25  
      *
     26  
      * @author Jeremy Long (jeremy.long@owasp.org)
     27  
      */
     28  
     public class ExtractionException extends IOException {
     29  
     
     30  
         /**
     31  
          * The serial version UID.
     32  
          */
     33  
         private static final long serialVersionUID = 1L;
     34  
     
     35  
         /**
     36  
          * Creates a new ExtractionException.
     37  
          */
     38  
         public ExtractionException() {
     39  0
             super();
     40  0
         }
     41  
     
     42  
         /**
     43  
          * Creates a new ExtractionException.
     44  
          *
     45  
          * @param msg a message for the exception.
     46  
          */
     47  
         public ExtractionException(String msg) {
     48  0
             super(msg);
     49  0
         }
     50  
     
     51  
         /**
     52  
          * Creates a new ExtractionException.
     53  
          *
     54  
          * @param ex the cause of the download failure.
     55  
          */
     56  
         public ExtractionException(Throwable ex) {
     57  0
             super(ex);
     58  0
         }
     59  
     
     60  
         /**
     61  
          * Creates a new ExtractionException.
     62  
          *
     63  
          * @param msg a message for the exception.
     64  
          * @param ex the cause of the download failure.
     65  
          */
     66  
         public ExtractionException(String msg, Throwable ex) {
     67  0
             super(msg, ex);
     68  0
         }
     69  
     }
    + + + + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.FileUtils.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.FileUtils.html index a0a175c66..f10c7f892 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.FileUtils.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.FileUtils.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    FileUtils
    36%
    8/22
    33%
    4/12
    2.6
    FileUtils
    48%
    41/85
    50%
    20/40
    5.375
     
    @@ -58,179 +58,394 @@  20  
     
     21   -
     import java.io.File;
    +
     import java.io.BufferedInputStream;
     22   -
     import java.io.FileNotFoundException;
    +
     import java.io.BufferedOutputStream;
     23   -
     import java.io.IOException;
    +
     import java.io.File;
     24   -
     import java.io.UnsupportedEncodingException;
    +
     import java.io.FileInputStream;
     25   -
     import java.net.URLDecoder;
    +
     import java.io.FileNotFoundException;
     26   -
     
    +
     import java.io.FileOutputStream;
     27   -
     /**
    +
     import java.io.IOException;
     28   -
      * A collection of utilities for processing information about files.
    +
     import java.io.UnsupportedEncodingException;
     29   -
      *
    +
     import java.net.URLDecoder;
     30   -
      * @author Jeremy Long (jeremy.long@owasp.org)
    +
     import java.util.logging.Level;
     31   -
      */
    +
     import java.util.logging.Logger;
     32   -
     public final class FileUtils {
    +
     import java.util.zip.ZipEntry;
     33   -
     
    +
     import java.util.zip.ZipInputStream;
     34   -
         /**
    +
     import org.owasp.dependencycheck.Engine;
     35   -
          * Private constructor for a utility class.
    -  36   -
          */
    -  37  0
         private FileUtils() {
    -  38  0
         }
    -  39  
     
    +  36   +
     /**
    +  37   +
      * A collection of utilities for processing information about files.
    +  38   +
      *
    +  39   +
      * @author Jeremy Long (jeremy.long@owasp.org)
     40   -
         /**
    +
      */
     41   -
          * Returns the (lowercase) file extension for a specified file.
    +
     public final class FileUtils {
     42   -
          *
    +
     
     43   -
          * @param fileName the file name to retrieve the file extension from.
    +
         /**
     44   -
          * @return the file extension.
    +
          * The buffer size to use when extracting files from the archive.
     45  
          */
     46   -
         public static String getFileExtension(String fileName) {
    -  47  18102
             String ret = null;
    -  48  18102
             final int pos = fileName.lastIndexOf(".");
    -  49  18102
             if (pos >= 0) {
    -  50  17871
                 ret = fileName.substring(pos + 1, fileName.length()).toLowerCase();
    -  51   -
             }
    -  52  18102
             return ret;
    +
         private static final int BUFFER_SIZE = 4096;
    +  47   +
     
    +  48   +
         /**
    +  49   +
          * Private constructor for a utility class.
    +  50   +
          */
    +  51  0
         private FileUtils() {
    +  52  0
         }
     53   -
         }
    +
     
     54   -
     
    +
         /**
     55   -
         /**
    +
          * Returns the (lowercase) file extension for a specified file.
     56   -
          * Deletes a file. If the File is a directory it will recursively delete the
    +
          *
     57   -
          * contents.
    +
          * @param fileName the file name to retrieve the file extension from.
     58   -
          *
    +
          * @return the file extension.
     59   -
          * @param file the File to delete
    +
          */
     60   -
          * @throws IOException is thrown if the file could not be deleted
    -  61   -
          */
    -  62   -
         public static void delete(File file) throws IOException {
    -  63  3
             if (file.isDirectory()) {
    -  64  0
                 for (File c : file.listFiles()) {
    -  65  0
                     delete(c);
    -  66   -
                 }
    +
         public static String getFileExtension(String fileName) {
    +  61  199
             String ret = null;
    +  62  199
             final int pos = fileName.lastIndexOf(".");
    +  63  199
             if (pos >= 0) {
    +  64  189
                 ret = fileName.substring(pos + 1, fileName.length()).toLowerCase();
    +  65   +
             }
    +  66  199
             return ret;
     67   -
             }
    -  68  3
             if (!file.delete()) {
    -  69  0
                 throw new FileNotFoundException("Failed to delete file: " + file);
    +
         }
    +  68   +
     
    +  69   +
         /**
     70   -
             }
    -  71  3
         }
    +
          * Deletes a file. If the File is a directory it will recursively delete the
    +  71   +
          * contents.
     72   -
     
    +
          *
     73   -
         /**
    +
          * @param file the File to delete
     74   -
          * Returns the data directory. If a path was specified in
    +
          * @throws IOException is thrown if the file could not be deleted
     75   -
          * dependencycheck.properties or was specified using the Settings object,
    +
          */
     76   -
          * and the path exists, that path will be returned as a File object. If it
    -  77   -
          * does not exist, then a File object will be created based on the file
    -  78   -
          * location of the JAR containing the specified class.
    -  79   -
          *
    +
         public static void delete(File file) throws IOException {
    +  77  35
             if (file.isDirectory()) {
    +  78  32
                 for (File c : file.listFiles()) {
    +  79  28
                     delete(c);
     80   -
          * @param configuredFilePath the configured relative or absolute path
    +
                 }
     81   -
          * @param clazz the class whos path will be resolved
    -  82   -
          * @return a File object
    -  83   -
          * @throws IOException is thrown if the path could not be decoded
    -  84   -
          * @deprecated This method should no longer be used. See the implementation
    -  85   -
          * in dependency-check-cli/App.java to see how the data directory should be
    -  86   -
          * set.
    -  87   -
          */
    -  88   -
         @java.lang.Deprecated
    -  89   -
         public static File getDataDirectory(String configuredFilePath, Class clazz) throws IOException {
    -  90  0
             final File file = new File(configuredFilePath);
    -  91  0
             if (file.isDirectory() && file.canWrite()) {
    -  92  0
                 return new File(file.getCanonicalPath());
    -  93   -
             } else {
    -  94  0
                 final File exePath = getPathToJar(clazz);
    -  95  0
                 return new File(exePath, configuredFilePath);
    -  96  
             }
    -  97   -
         }
    -  98   +  82  35
             if (!org.apache.commons.io.FileUtils.deleteQuietly(file)) {
    +  83   +
                 //if (!file.delete()) {
    +  84  0
                 throw new FileNotFoundException("Failed to delete file: " + file);
    +  85   +
             } else {
    +  86  35
                 file.deleteOnExit();
    +  87   +
             }
    +  88  35
         }
    +  89  
     
    -  99   +  90  
         /**
    -  100   -
          * Retrieves the physical path to the parent directory containing the
    -  101   -
          * provided class. For example, if a JAR file contained a class
    -  102   -
          * org.something.clazz this method would return the parent directory of the
    -  103   -
          * JAR file.
    -  104   +  91   +
          * Deletes a file. If the File is a directory it will recursively delete the
    +  92   +
          * contents.
    +  93  
          *
    -  105   -
          * @param clazz the class to determine the parent directory of
    -  106   -
          * @return the parent directory of the file containing the specified class.
    -  107   -
          * @throws UnsupportedEncodingException thrown if UTF-8 is not supported.
    -  108   -
          * @deprecated this should no longer be used.
    -  109   +  94   +
          * @param file the File to delete
    +  95   +
          * @param deleteOnExit setting this to true will cause errors to be ignored
    +  96   +
          * and if there is an error deleting the file it will be setup to be deleted
    +  97   +
          * when the JVM exits.
    +  98   +
          * @throws IOException is thrown if the file could not be deleted
    +  99  
          */
    +  100   +
         public static void delete(File file, boolean deleteOnExit) throws IOException {
    +  101  0
             if (file.isDirectory()) {
    +  102  0
                 for (File c : file.listFiles()) {
    +  103  0
                     delete(c);
    +  104   +
                 }
    +  105   +
             }
    +  106  0
             if (!org.apache.commons.io.FileUtils.deleteQuietly(file)) {
    +  107   +
                 //if (!file.delete()) {
    +  108  0
                 if (deleteOnExit) {
    +  109  0
                     file.deleteOnExit();
     110   -
         @java.lang.Deprecated
    -  111   -
         public static File getPathToJar(Class clazz) throws UnsupportedEncodingException {
    -  112  0
             final String filePath = clazz.getProtectionDomain().getCodeSource().getLocation().getPath();
    -  113  0
             final String decodedPath = URLDecoder.decode(filePath, "UTF-8");
    -  114  0
             final File jarPath = new File(decodedPath);
    -  115  0
             return jarPath.getParentFile();
    +
                 } else {
    +  111  0
                     throw new FileNotFoundException("Failed to delete file: " + file);
    +  112   +
                 }
    +  113   +
             }
    +  114  0
         }
    +  115   +
     
     116   -
         }
    +
         /**
     117   +
          * Returns the data directory. If a path was specified in
    +  118   +
          * dependencycheck.properties or was specified using the Settings object,
    +  119   +
          * and the path exists, that path will be returned as a File object. If it
    +  120   +
          * does not exist, then a File object will be created based on the file
    +  121   +
          * location of the JAR containing the specified class.
    +  122   +
          *
    +  123   +
          * @param configuredFilePath the configured relative or absolute path
    +  124   +
          * @param clazz the class whos path will be resolved
    +  125   +
          * @return a File object
    +  126   +
          * @throws IOException is thrown if the path could not be decoded
    +  127   +
          * @deprecated This method should no longer be used. See the implementation
    +  128   +
          * in dependency-check-cli/App.java to see how the data directory should be
    +  129   +
          * set.
    +  130   +
          */
    +  131   +
         @java.lang.Deprecated
    +  132   +
         public static File getDataDirectory(String configuredFilePath, Class clazz) throws IOException {
    +  133  0
             final File file = new File(configuredFilePath);
    +  134  0
             if (file.isDirectory() && file.canWrite()) {
    +  135  0
                 return new File(file.getCanonicalPath());
    +  136   +
             } else {
    +  137  0
                 final File exePath = getPathToJar(clazz);
    +  138  0
                 return new File(exePath, configuredFilePath);
    +  139   +
             }
    +  140   +
         }
    +  141   +
     
    +  142   +
         /**
    +  143   +
          * Retrieves the physical path to the parent directory containing the
    +  144   +
          * provided class. For example, if a JAR file contained a class
    +  145   +
          * org.something.clazz this method would return the parent directory of the
    +  146   +
          * JAR file.
    +  147   +
          *
    +  148   +
          * @param clazz the class to determine the parent directory of
    +  149   +
          * @return the parent directory of the file containing the specified class.
    +  150   +
          * @throws UnsupportedEncodingException thrown if UTF-8 is not supported.
    +  151   +
          * @deprecated this should no longer be used.
    +  152   +
          */
    +  153   +
         @java.lang.Deprecated
    +  154   +
         public static File getPathToJar(Class clazz) throws UnsupportedEncodingException {
    +  155  0
             final String filePath = clazz.getProtectionDomain().getCodeSource().getLocation().getPath();
    +  156  0
             final String decodedPath = URLDecoder.decode(filePath, "UTF-8");
    +  157  0
             final File jarPath = new File(decodedPath);
    +  158  0
             return jarPath.getParentFile();
    +  159   +
         }
    +  160   +
     
    +  161   +
         /**
    +  162   +
          * Extracts the contents of an archive into the specified directory.
    +  163   +
          *
    +  164   +
          * @param archive an archive file such as a WAR or EAR
    +  165   +
          * @param extractTo a directory to extract the contents to
    +  166   +
          * @throws ExtractionException thrown if an exception occurs while
    +  167   +
          * extracting the files
    +  168   +
          */
    +  169   +
         public static void extractFiles(File archive, File extractTo) throws ExtractionException {
    +  170  2
             extractFiles(archive, extractTo, null);
    +  171  2
         }
    +  172   +
     
    +  173   +
         /**
    +  174   +
          * Extracts the contents of an archive into the specified directory. The
    +  175   +
          * files are only extracted if they are supported by the analyzers loaded
    +  176   +
          * into the specified engine. If the engine is specified as null then all
    +  177   +
          * files are extracted.
    +  178   +
          *
    +  179   +
          * @param archive an archive file such as a WAR or EAR
    +  180   +
          * @param extractTo a directory to extract the contents to
    +  181   +
          * @param engine the scanning engine
    +  182   +
          * @throws ExtractionException thrown if there is an error extracting the
    +  183   +
          * files
    +  184   +
          */
    +  185   +
         public static void extractFiles(File archive, File extractTo, Engine engine) throws ExtractionException {
    +  186  2
             if (archive == null || extractTo == null) {
    +  187  0
                 return;
    +  188   +
             }
    +  189   +
     
    +  190  2
             FileInputStream fis = null;
    +  191  2
             ZipInputStream zis = null;
    +  192   +
     
    +  193   +
             try {
    +  194  2
                 fis = new FileInputStream(archive);
    +  195  0
             } catch (FileNotFoundException ex) {
    +  196  0
                 Logger.getLogger(FileUtils.class.getName()).log(Level.INFO, null, ex);
    +  197  0
                 throw new ExtractionException("Archive file was not found.", ex);
    +  198  2
             }
    +  199  2
             zis = new ZipInputStream(new BufferedInputStream(fis));
    +  200   +
             ZipEntry entry;
    +  201   +
             try {
    +  202  36
                 while ((entry = zis.getNextEntry()) != null) {
    +  203  34
                     if (entry.isDirectory()) {
    +  204  4
                         final File d = new File(extractTo, entry.getName());
    +  205  4
                         if (!d.exists() && !d.mkdirs()) {
    +  206  0
                             final String msg = String.format("Unable to create '%s'.", d.getAbsolutePath());
    +  207  0
                             throw new ExtractionException(msg);
    +  208   +
                         }
    +  209  4
                     } else {
    +  210  30
                         final File file = new File(extractTo, entry.getName());
    +  211  30
                         final String ext = getFileExtension(file.getName());
    +  212  30
                         if (engine == null || engine.supportsExtension(ext)) {
    +  213  30
                             BufferedOutputStream bos = null;
    +  214   +
                             FileOutputStream fos;
    +  215   +
                             try {
    +  216  30
                                 fos = new FileOutputStream(file);
    +  217  30
                                 bos = new BufferedOutputStream(fos, BUFFER_SIZE);
    +  218   +
                                 int count;
    +  219  30
                                 final byte data[] = new byte[BUFFER_SIZE];
    +  220  191432
                                 while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) {
    +  221  191402
                                     bos.write(data, 0, count);
    +  222   +
                                 }
    +  223  30
                                 bos.flush();
    +  224  0
                             } catch (FileNotFoundException ex) {
    +  225  0
                                 Logger.getLogger(FileUtils.class.getName()).log(Level.FINE, null, ex);
    +  226  0
                                 final String msg = String.format("Unable to find file '%s'.", file.getName());
    +  227  0
                                 throw new ExtractionException(msg, ex);
    +  228  0
                             } catch (IOException ex) {
    +  229  0
                                 Logger.getLogger(FileUtils.class.getName()).log(Level.FINE, null, ex);
    +  230  0
                                 final String msg = String.format("IO Exception while parsing file '%s'.", file.getName());
    +  231  0
                                 throw new ExtractionException(msg, ex);
    +  232   +
                             } finally {
    +  233  30
                                 if (bos != null) {
    +  234   +
                                     try {
    +  235  30
                                         bos.close();
    +  236  0
                                     } catch (IOException ex) {
    +  237  0
                                         Logger.getLogger(FileUtils.class.getName()).log(Level.FINEST, null, ex);
    +  238  30
                                     }
    +  239   +
                                 }
    +  240   +
                             }
    +  241   +
                         }
    +  242  30
                     }
    +  243   +
                 }
    +  244  0
             } catch (IOException ex) {
    +  245  0
                 final String msg = String.format("Exception reading archive '%s'.", archive.getName());
    +  246  0
                 Logger.getLogger(FileUtils.class.getName()).log(Level.FINE, msg, ex);
    +  247  0
                 throw new ExtractionException(msg, ex);
    +  248   +
             } finally {
    +  249  0
                 try {
    +  250  2
                     zis.close();
    +  251  0
                 } catch (IOException ex) {
    +  252  0
                     Logger.getLogger(FileUtils.class.getName()).log(Level.FINEST, null, ex);
    +  253  2
                 }
    +  254  0
             }
    +  255  2
         }
    +  256  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Filter.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Filter.html index 32aab8cc9..f632201ef 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Filter.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Filter.html @@ -47,7 +47,7 @@
      * https://plus.google.com/115403795880834599019/?rel=author
     14  
      */
    -  15  18
     public abstract class Filter<T> {
    +  15  6
     public abstract class Filter<T> {
     16  
     
     17   @@ -56,19 +56,19 @@
     
     19  
         public Iterator<T> filter(Iterator<T> iterator) {
    -  20  1275
             return new FilterIterator(iterator);
    +  20  957
             return new FilterIterator(iterator);
     21  
         }
     22  
     
     23  
         public Iterable<T> filter(final Iterable<T> iterable) {
    -  24  1275
             return new Iterable<T>() {
    +  24  957
             return new Iterable<T>() {
     25  
     
     26  
                 public Iterator<T> iterator() {
    -  27  1275
                     return filter(iterable.iterator());
    +  27  957
                     return filter(iterable.iterator());
     28  
                 }
     29   @@ -77,7 +77,7 @@
         }
     31  
     
    -  32  18
         private class FilterIterator implements Iterator<T> {
    +  32  6
         private class FilterIterator implements Iterator<T> {
     33  
     
     34   @@ -86,28 +86,28 @@
             private T next;
     36  
     
    -  37  1275
             private FilterIterator(Iterator<T> iterator) {
    -  38  1275
                 this.iterator = iterator;
    -  39  1275
                 toNext();
    -  40  1275
             }
    +  37  957
             private FilterIterator(Iterator<T> iterator) {
    +  38  957
                 this.iterator = iterator;
    +  39  957
                 toNext();
    +  40  957
             }
     41  
     
     42  
             public boolean hasNext() {
    -  43  5766
                 return next != null;
    +  43  5124
                 return next != null;
     44  
             }
     45  
     
     46  
             public T next() {
    -  47  4875
                 if (next == null) {
    +  47  4436
                 if (next == null) {
     48  0
                     throw new NoSuchElementException();
     49  
                 }
    -  50  4875
                 T returnValue = next;
    -  51  4875
                 toNext();
    -  52  4875
                 return returnValue;
    +  50  4436
                 T returnValue = next;
    +  51  4436
                 toNext();
    +  52  4436
                 return returnValue;
     53  
             }
     54   @@ -121,22 +121,22 @@
     
     59  
             private void toNext() {
    -  60  6150
                 next = null;
    -  61  10092
                 while (iterator.hasNext()) {
    -  62  9186
                     T item = iterator.next();
    -  63  9186
                     if (item != null && passes(item)) {
    -  64  5244
                         next = item;
    -  65  5244
                         break;
    +  60  5393
                 next = null;
    +  61  8216
                 while (iterator.hasNext()) {
    +  62  7514
                     T item = iterator.next();
    +  63  7514
                     if (item != null && passes(item)) {
    +  64  4691
                         next = item;
    +  65  4691
                         break;
     66  
                     }
    -  67  3942
                 }
    -  68  6150
             }
    +  67  2823
                 }
    +  68  5393
             }
     69  
         }
     70  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.InvalidSettingException.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.InvalidSettingException.html index e992dbbe9..70cbb7428 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.InvalidSettingException.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.InvalidSettingException.html @@ -149,6 +149,6 @@
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.NonClosingStream.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.NonClosingStream.html index 5394d4fa1..0b788ea06 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.NonClosingStream.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.NonClosingStream.html @@ -93,8 +93,8 @@
          */
     38  
         public NonClosingStream(InputStream in) {
    -  39  12
             super(in);
    -  40  12
         }
    +  39  5
             super(in);
    +  40  5
         }
     41  
     
     42   @@ -109,11 +109,11 @@
         public void close() {
     47  
             // don't close the stream.
    -  48  12
         }
    +  48  5
         }
     49  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Settings.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Settings.html index bf1593cdf..2329c3f49 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Settings.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.Settings.html @@ -12,8 +12,8 @@
     
    - - + +
    Classes in this File Line Coverage Branch Coverage Complexity
    Settings
    63%
    48/76
    41%
    5/12
    2.333
    Settings$KEYS
    0%
    0/2
    N/A
    2.333
    Settings
    62%
    49/78
    42%
    6/14
    2.375
    Settings$KEYS
    0%
    0/2
    N/A
    2.375
     
    @@ -157,621 +157,623 @@  70  
             /**
     71   -
              * The properties key for the path where the CPE Lucene Index will be
    +
              * The location of the batch update URL. This is a zip file that
     72   -
              * stored.
    +
              * contains the contents of the data directory.
     73  
              */
     74   -
             public static final String CPE_DATA_DIRECTORY = "data.cpe";
    +
             public static final String BATCH_UPDATE_URL = "batch.update.url";
     75  
             /**
     76   -
              * The properties key for the path where the CVE H2 database will be
    +
              * The properties key for the path where the CPE Lucene Index will be
     77  
              * stored.
     78  
              */
     79   -
             public static final String CVE_DATA_DIRECTORY = "data.cve";
    +
             public static final String CPE_DATA_DIRECTORY = "data.cpe";
     80  
             /**
     81   -
              * The properties key for the URL to the CPE.
    +
              * The properties key for the path where the CVE H2 database will be
     82   -
              */
    +
              * stored.
     83   -
             public static final String CPE_URL = "cpe.url";
    +
              */
     84   -
             /**
    +
             public static final String CVE_DATA_DIRECTORY = "data.cve";
     85   -
              * The properties key for the URL to the CPE.
    +
             /**
     86   -
              */
    -  87   -
             public static final String CPE_META_URL = "cpe.meta.url";
    -  88   -
             /**
    -  89  
              * The properties key for the URL to retrieve the "meta" data from about
    -  90   +  87  
              * the CVE entries.
    -  91   +  88  
              */
    -  92   +  89  
             public static final String CVE_META_URL = "cve.url.meta";
    -  93   +  90  
             /**
    -  94   +  91  
              * The properties key for the URL to retrieve the recently modified and
    -  95   +  92  
              * added CVE entries (last 8 days) using the 2.0 schema.
    -  96   +  93  
              */
    -  97   +  94  
             public static final String CVE_MODIFIED_20_URL = "cve.url-2.0.modified";
    -  98   +  95  
             /**
    -  99   +  96  
              * The properties key for the URL to retrieve the recently modified and
    -  100   +  97  
              * added CVE entries (last 8 days) using the 1.2 schema.
    -  101   +  98  
              */
    -  102   +  99  
             public static final String CVE_MODIFIED_12_URL = "cve.url-1.2.modified";
    -  103   +  100  
             /**
    -  104   +  101  
              * The properties key for the URL to retrieve the recently modified and
    -  105   +  102  
              * added CVE entries (last 8 days).
    -  106   +  103  
              */
    -  107   +  104  
             public static final String CVE_MODIFIED_VALID_FOR_DAYS = "cve.url.modified.validfordays";
    -  108   +  105  
             /**
    -  109   +  106  
              * The properties key for the telling us how many cvr.url.* URLs exists.
    -  110   +  107  
              * This is used in combination with CVE_BASE_URL to be able to retrieve
    -  111   +  108  
              * the URLs for all of the files that make up the NVD CVE listing.
    -  112   +  109  
              */
    -  113   +  110  
             public static final String CVE_START_YEAR = "cve.startyear";
    -  114   +  111  
             /**
    -  115   +  112  
              * The properties key for the CVE schema version 1.2.
    -  116   +  113  
              */
    -  117   +  114  
             public static final String CVE_SCHEMA_1_2 = "cve.url-1.2.base";
    -  118   +  115  
             /**
    -  119   +  116  
              * The properties key for the CVE schema version 2.0.
    -  120   +  117  
              */
    -  121   +  118  
             public static final String CVE_SCHEMA_2_0 = "cve.url-2.0.base";
    -  122   +  119  
             /**
    -  123   +  120  
              * The properties key for the proxy url.
    -  124   +  121  
              */
    -  125   +  122  
             public static final String PROXY_URL = "proxy.url";
    -  126   +  123  
             /**
    -  127   +  124  
              * The properties key for the proxy port - this must be an integer
    -  128   +  125  
              * value.
    -  129   +  126  
              */
    -  130   +  127  
             public static final String PROXY_PORT = "proxy.port";
    -  131   +  128  
             /**
    -  132   +  129  
              * The properties key for the connection timeout.
    -  133   +  130  
              */
    -  134   +  131  
             public static final String CONNECTION_TIMEOUT = "connection.timeout";
    -  135   +  132  
             /**
    -  136   +  133  
              * The location of the temporary directory.
    -  137   +  134  
              */
    -  138   +  135  
             public static final String TEMP_DIRECTORY = "temp.directory";
    -  139   +  136  
         }
    -  140   +  137  
         /**
    -  141   +  138  
          * The properties file location.
    -  142   +  139  
          */
    -  143   +  140  
         private static final String PROPERTIES_FILE = "dependencycheck.properties";
    -  144   +  141  
         /**
    -  145   +  142  
          * The singleton instance variable.
    +  143   +
          */
    +  144  1
         private static final Settings INSTANCE = new Settings();
    +  145   +
         /**
     146   -
          */
    -  147  3
         private static final Settings INSTANCE = new Settings();
    -  148   -
         /**
    -  149  
          * The properties.
    +  147   +
          */
    +  148  1
         private Properties props = null;
    +  149   +
     
     150   -
          */
    -  151  3
         private Properties props = null;
    -  152   -
     
    -  153  
         /**
    -  154   +  151  
          * Private constructor for the Settings class. This class loads the
    -  155   +  152  
          * properties files.
    -  156   +  153  
          */
    -  157  3
         private Settings() {
    -  158  3
             InputStream in = null;
    -  159  3
             props = new Properties();
    -  160   +  154  1
         private Settings() {
    +  155  1
             InputStream in = null;
    +  156  1
             props = new Properties();
    +  157  
             try {
    -  161  3
                 in = this.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE);
    -  162  3
                 props.load(in);
    -  163  0
             } catch (IOException ex) {
    -  164  0
                 Logger.getLogger(Settings.class.getName()).log(Level.SEVERE, "Unable to load default settings.");
    -  165  0
                 Logger.getLogger(Settings.class.getName()).log(Level.FINE, null, ex);
    -  166   +  158  1
                 in = this.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE);
    +  159  1
                 props.load(in);
    +  160  0
             } catch (IOException ex) {
    +  161  0
                 Logger.getLogger(Settings.class.getName()).log(Level.SEVERE, "Unable to load default settings.");
    +  162  0
                 Logger.getLogger(Settings.class.getName()).log(Level.FINE, null, ex);
    +  163  
             } finally {
    -  167  3
                 if (in != null) {
    -  168   +  164  1
                 if (in != null) {
    +  165  
                     try {
    -  169  3
                         in.close();
    -  170  0
                     } catch (IOException ex) {
    -  171  0
                         Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex);
    -  172  3
                     }
    -  173   +  166  1
                         in.close();
    +  167  0
                     } catch (IOException ex) {
    +  168  0
                         Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex);
    +  169  1
                     }
    +  170  
                 }
    +  171   +
             }
    +  172  1
         }
    +  173   +
     
     174   -
             }
    -  175  3
         }
    +
         /**
    +  175   +
          * Sets a property value.
     176   -
     
    +
          *
     177   -
         /**
    +
          * @param key the key for the property
     178   -
          * Sets a property value.
    +
          * @param value the value for the property
     179   -
          *
    +
          */
     180   -
          * @param key the key for the property
    -  181   -
          * @param value the value for the property
    -  182   -
          */
    -  183  
         public static void setString(String key, String value) {
    -  184  12
             INSTANCE.props.setProperty(key, value);
    -  185  12
         }
    -  186   +  181  14
             INSTANCE.props.setProperty(key, value);
    +  182  14
         }
    +  183  
     
    -  187   +  184  
         /**
    -  188   +  185  
          * Sets a property value.
    -  189   +  186  
          *
    -  190   +  187  
          * @param key the key for the property
    -  191   +  188  
          * @param value the value for the property
    -  192   +  189  
          */
    -  193   +  190  
         public static void setBoolean(String key, boolean value) {
    -  194  3
             if (value) {
    -  195  0
                 INSTANCE.props.setProperty(key, Boolean.TRUE.toString());
    -  196   +  191  2
             if (value) {
    +  192  0
                 INSTANCE.props.setProperty(key, Boolean.TRUE.toString());
    +  193  
             } else {
    -  197  3
                 INSTANCE.props.setProperty(key, Boolean.FALSE.toString());
    -  198   +  194  2
                 INSTANCE.props.setProperty(key, Boolean.FALSE.toString());
    +  195  
             }
    -  199  3
         }
    +  196  2
         }
    +  197   +
     
    +  198   +
         /**
    +  199   +
          * Merges a new properties file into the current properties. This method
     200   -
     
    +
          * allows for the loading of a user provided properties file.<br/><br/>
     201   -
         /**
    +
          * Note: even if using this method - system properties will be loaded before
     202   -
          * Merges a new properties file into the current properties. This method
    +
          * properties loaded from files.
     203   -
          * allows for the loading of a user provided properties file.<br/><br/>
    +
          *
     204   -
          * Note: even if using this method - system properties will be loaded before
    -  205   -
          * properties loaded from files.
    -  206   -
          *
    -  207  
          * @param filePath the path to the properties file to merge.
    -  208   +  205  
          * @throws FileNotFoundException is thrown when the filePath points to a
    -  209   +  206  
          * non-existent file
    +  207   +
          * @throws IOException is thrown when there is an exception loading/merging
    +  208   +
          * the properties
    +  209   +
          */
     210   -
          * @throws IOException is thrown when there is an exception loading/merging
    -  211   -
          * the properties
    -  212   -
          */
    -  213  
         public static void mergeProperties(String filePath) throws FileNotFoundException, IOException {
    -  214  3
             final FileInputStream fis = new FileInputStream(filePath);
    -  215  3
             mergeProperties(fis);
    -  216  3
         }
    -  217   +  211  1
             final FileInputStream fis = new FileInputStream(filePath);
    +  212  1
             mergeProperties(fis);
    +  213  1
         }
    +  214  
     
    -  218   +  215  
         /**
    -  219   +  216  
          * Merges a new properties file into the current properties. This method
    -  220   +  217  
          * allows for the loading of a user provided properties file.<br/><br/>
    -  221   +  218  
          * Note: even if using this method - system properties will be loaded before
    -  222   +  219  
          * properties loaded from files.
    -  223   +  220  
          *
    -  224   +  221  
          * @param stream an Input Stream pointing at a properties file to merge
    -  225   +  222  
          * @throws IOException is thrown when there is an exception loading/merging
    -  226   +  223  
          * the properties
    -  227   +  224  
          */
    -  228   +  225  
         public static void mergeProperties(InputStream stream) throws IOException {
    -  229  3
             INSTANCE.props.load(stream);
    -  230  3
         }
    -  231   +  226  1
             INSTANCE.props.load(stream);
    +  227  1
         }
    +  228  
     
    -  232   +  229  
         /**
    -  233   +  230  
          * Returns a value from the properties file as a File object. If the value
    -  234   +  231  
          * was specified as a system property or passed in via the -Dprop=value
    -  235   +  232  
          * argument - this method will return the value from the system properties
    -  236   +  233  
          * before the values in the contained configuration file.
    +  234   +
          *
    +  235   +
          * This method will also replace a leading "[JAR]\" sequence with the path
    +  236   +
          * to the folder containing the JAR file containing this class.
     237  
          *
     238  
          * @param key the key to lookup within the properties file
     239   -
          * @param defaultValue the default value for the requested property
    -  240   -
          * @return the property from the properties file as a File object
    -  241   -
          */
    -  242   -
         public static File getFile(String key, String defaultValue) {
    -  243  3
             final String baseDir = getString(Settings.KEYS.DATA_DIRECTORY);
    -  244  3
             final String str = getString(key, defaultValue);
    -  245  3
             if (baseDir != null) {
    -  246  3
                 return new File(baseDir, str);
    -  247   -
             }
    -  248  0
             return new File(str);
    -  249   -
         }
    -  250   -
     
    -  251   -
         /**
    -  252   -
          * Returns a value from the properties file as a File object. If the value
    -  253   -
          * was specified as a system property or passed in via the -Dprop=value
    -  254   -
          * argument - this method will return the value from the system properties
    -  255   -
          * before the values in the contained configuration file.
    -  256   -
          *
    -  257   -
          * This method will also replace a leading "[JAR]\" sequence with the path
    -  258   -
          * to the folder containing the JAR file containing this class.
    -  259   -
          *
    -  260   -
          * @param key the key to lookup within the properties file
    -  261  
          * @return the property from the properties file converted to a File object
    -  262   -
          * @throws IOException thrown if the file path to the JAR cannot be found
    -  263   +  240  
          */
    -  264   -
         public static File getFile(String key) throws IOException {
    -  265  66
             final String file = getString(key);
    -  266  66
             final String baseDir = getString(Settings.KEYS.DATA_DIRECTORY);
    -  267  66
             if (baseDir != null) {
    -  268  66
                 if (baseDir.startsWith("[JAR]/")) {
    -  269  0
                     final File jarPath = getJarPath();
    -  270  0
                     final File newBase = new File(jarPath.getCanonicalPath(), baseDir.substring(6));
    -  271  0
                     return new File(newBase, file);
    -  272   +  241   +
         public static File getFile(String key) {
    +  242  53
             final String file = getString(key);
    +  243  53
             final String baseDir = getString(Settings.KEYS.DATA_DIRECTORY);
    +  244  53
             if (baseDir != null) {
    +  245  53
                 if (baseDir.startsWith("[JAR]/")) {
    +  246  0
                     final File jarPath = getJarPath();
    +  247  0
                     final File newBase = new File(jarPath, baseDir.substring(6));
    +  248  0
                     if (Settings.KEYS.DATA_DIRECTORY.equals(key)) {
    +  249  0
                         return newBase;
    +  250   +
                     }
    +  251  0
                     return new File(newBase, file);
    +  252  
                 }
    -  273  66
                 return new File(baseDir, file);
    -  274   +  253  53
                 if (Settings.KEYS.DATA_DIRECTORY.equals(key)) {
    +  254  16
                     return new File(baseDir);
    +  255   +
                 }
    +  256  37
                 return new File(baseDir, file);
    +  257  
             }
    -  275  0
             return new File(file);
    -  276   +  258  0
             return new File(file);
    +  259  
         }
    -  277   +  260  
     
    -  278   +  261  
         /**
    -  279   +  262  
          * Attempts to retrieve the folder containing the Jar file containing the
    -  280   +  263  
          * Settings class.
    -  281   +  264  
          *
    -  282   +  265  
          * @return a File object
    -  283   +  266  
          */
    -  284   +  267  
         private static File getJarPath() {
    -  285  0
             final String jarPath = Settings.class.getProtectionDomain().getCodeSource().getLocation().getPath();
    -  286  0
             String decodedPath = ".";
    -  287   +  268  0
             final String jarPath = Settings.class.getProtectionDomain().getCodeSource().getLocation().getPath();
    +  269  0
             String decodedPath = ".";
    +  270  
             try {
    -  288  0
                 decodedPath = URLDecoder.decode(jarPath, "UTF-8");
    -  289  0
             } catch (UnsupportedEncodingException ex) {
    -  290  0
                 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex);
    -  291  0
             }
    -  292   +  271  0
                 decodedPath = URLDecoder.decode(jarPath, "UTF-8");
    +  272  0
             } catch (UnsupportedEncodingException ex) {
    +  273  0
                 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex);
    +  274  0
             }
    +  275  
     
    -  293  0
             final File path = new File(decodedPath);
    -  294  0
             if (path.getName().toLowerCase().endsWith(".jar")) {
    -  295  0
                 return path.getParentFile();
    -  296   +  276  0
             final File path = new File(decodedPath);
    +  277  0
             if (path.getName().toLowerCase().endsWith(".jar")) {
    +  278  0
                 return path.getParentFile();
    +  279  
             } else {
    -  297  0
                 return new File(".");
    -  298   +  280  0
                 return new File(".");
    +  281  
             }
    -  299   +  282  
         }
    -  300   +  283  
     
    -  301   +  284  
         /**
    -  302   +  285  
          * Returns a value from the properties file. If the value was specified as a
    -  303   +  286  
          * system property or passed in via the -Dprop=value argument - this method
    -  304   +  287  
          * will return the value from the system properties before the values in the
    -  305   +  288  
          * contained configuration file.
    -  306   +  289  
          *
    -  307   +  290  
          * @param key the key to lookup within the properties file
    -  308   +  291  
          * @param defaultValue the default value for the requested property
    -  309   +  292  
          * @return the property from the properties file
    -  310   +  293  
          */
    -  311   +  294  
         public static String getString(String key, String defaultValue) {
    -  312  12
             final String str = System.getProperty(key, INSTANCE.props.getProperty(key, defaultValue));
    -  313  12
             return str;
    -  314   +  295  9
             final String str = System.getProperty(key, INSTANCE.props.getProperty(key, defaultValue));
    +  296  9
             return str;
    +  297  
         }
    -  315   +  298  
     
    -  316   +  299  
         /**
    -  317   +  300   +
          * Returns the temporary directory.
    +  301   +
          *
    +  302   +
          * @return the temporary directory
    +  303   +
          */
    +  304   +
         public static File getTempDirectory() {
    +  305  5
             return new File(Settings.getString(Settings.KEYS.TEMP_DIRECTORY, System.getProperty("java.io.tmpdir")));
    +  306   +
         }
    +  307   +
     
    +  308   +
         /**
    +  309  
          * Returns a value from the properties file. If the value was specified as a
    -  318   +  310  
          * system property or passed in via the -Dprop=value argument - this method
    -  319   +  311  
          * will return the value from the system properties before the values in the
    -  320   +  312  
          * contained configuration file.
    -  321   +  313  
          *
    -  322   +  314  
          * @param key the key to lookup within the properties file
    -  323   +  315  
          * @return the property from the properties file
    -  324   +  316  
          */
    -  325   +  317  
         public static String getString(String key) {
    -  326  246
             return System.getProperty(key, INSTANCE.props.getProperty(key));
    +  318  129
             return System.getProperty(key, INSTANCE.props.getProperty(key));
    +  319   +
         }
    +  320   +
     
    +  321   +
         /**
    +  322   +
          * Removes a property from the local properties collection. This is mainly
    +  323   +
          * used in test cases.
    +  324   +
          *
    +  325   +
          * @param key the property key to remove
    +  326   +
          */
     327   -
         }
    -  328   -
     
    -  329   -
         /**
    +
         public static void removeProperty(String key) {
    +  328  4
             INSTANCE.props.remove(key);
    +  329  4
         }
     330   -
          * Returns an int value from the properties file. If the value was specified
    +
     
     331   -
          * as a system property or passed in via the -Dprop=value argument - this
    +
         /**
     332   -
          * method will return the value from the system properties before the values
    -  333   -
          * in the contained configuration file.
    -  334   -
          *
    -  335   -
          * @param key the key to lookup within the properties file
    -  336   -
          * @return the property from the properties file
    -  337   -
          * @throws InvalidSettingException is thrown if there is an error retrieving
    -  338   -
          * the setting
    -  339   -
          */
    -  340   -
         public static int getInt(String key) throws InvalidSettingException {
    -  341   -
             int value;
    -  342   -
             try {
    -  343  3
                 value = Integer.parseInt(Settings.getString(key));
    -  344  0
             } catch (NumberFormatException ex) {
    -  345  0
                 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex);
    -  346  3
             }
    -  347  3
             return value;
    -  348   -
         }
    -  349   -
     
    -  350   -
         /**
    -  351  
          * Returns an int value from the properties file. If the value was specified
    -  352   +  333  
          * as a system property or passed in via the -Dprop=value argument - this
    -  353   +  334  
          * method will return the value from the system properties before the values
    -  354   +  335  
          * in the contained configuration file.
    -  355   +  336  
          *
    -  356   +  337  
          * @param key the key to lookup within the properties file
    -  357   -
          * @param defaultValue the default value to return
    -  358   -
          * @return the property from the properties file or the defaultValue if the
    -  359   -
          * property does not exist or cannot be converted to an integer
    -  360   +  338   +
          * @return the property from the properties file
    +  339   +
          * @throws InvalidSettingException is thrown if there is an error retrieving
    +  340   +
          * the setting
    +  341  
          */
    -  361   -
         public static int getInt(String key, int defaultValue) {
    -  362   +  342   +
         public static int getInt(String key) throws InvalidSettingException {
    +  343  
             int value;
    -  363   +  344  
             try {
    -  364  3
                 value = Integer.parseInt(Settings.getString(key));
    -  365  3
             } catch (NumberFormatException ex) {
    -  366  3
                 final String msg = String.format("Could not convert property '%s' to an int.", key);
    -  367  3
                 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, msg, ex);
    -  368  3
                 value = defaultValue;
    -  369  0
             }
    -  370  3
             return value;
    -  371   +  345  1
                 value = Integer.parseInt(Settings.getString(key));
    +  346  0
             } catch (NumberFormatException ex) {
    +  347  0
                 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex);
    +  348  1
             }
    +  349  1
             return value;
    +  350  
         }
    -  372   +  351  
     
    -  373   +  352  
         /**
    -  374   -
          * Returns a long value from the properties file. If the value was specified
    -  375   +  353   +
          * Returns an int value from the properties file. If the value was specified
    +  354  
          * as a system property or passed in via the -Dprop=value argument - this
    -  376   +  355  
          * method will return the value from the system properties before the values
    -  377   +  356  
          * in the contained configuration file.
    -  378   +  357  
          *
    -  379   +  358  
          * @param key the key to lookup within the properties file
    -  380   -
          * @return the property from the properties file
    -  381   -
          * @throws InvalidSettingException is thrown if there is an error retrieving
    -  382   -
          * the setting
    -  383   +  359   +
          * @param defaultValue the default value to return
    +  360   +
          * @return the property from the properties file or the defaultValue if the
    +  361   +
          * property does not exist or cannot be converted to an integer
    +  362  
          */
    -  384   -
         public static long getLong(String key) throws InvalidSettingException {
    -  385   -
             long value;
    -  386   +  363   +
         public static int getInt(String key, int defaultValue) {
    +  364   +
             int value;
    +  365  
             try {
    -  387  3
                 value = Long.parseLong(Settings.getString(key));
    -  388  0
             } catch (NumberFormatException ex) {
    -  389  0
                 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex);
    -  390  3
             }
    -  391  3
             return value;
    -  392   +  366  1
                 value = Integer.parseInt(Settings.getString(key));
    +  367  1
             } catch (NumberFormatException ex) {
    +  368  1
                 final String msg = String.format("Could not convert property '%s' to an int.", key);
    +  369  1
                 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, msg, ex);
    +  370  1
                 value = defaultValue;
    +  371  0
             }
    +  372  1
             return value;
    +  373  
         }
    -  393   +  374  
     
    -  394   +  375  
         /**
    -  395   -
          * Returns a boolean value from the properties file. If the value was
    -  396   -
          * specified as a system property or passed in via the
    -  397   -
          * <code>-Dprop=value</code> argument this method will return the value from
    -  398   -
          * the system properties before the values in the contained configuration
    -  399   -
          * file.
    -  400   +  376   +
          * Returns a long value from the properties file. If the value was specified
    +  377   +
          * as a system property or passed in via the -Dprop=value argument - this
    +  378   +
          * method will return the value from the system properties before the values
    +  379   +
          * in the contained configuration file.
    +  380  
          *
    -  401   +  381  
          * @param key the key to lookup within the properties file
    -  402   +  382  
          * @return the property from the properties file
    -  403   +  383  
          * @throws InvalidSettingException is thrown if there is an error retrieving
    -  404   +  384  
          * the setting
    -  405   +  385  
          */
    -  406   -
         public static boolean getBoolean(String key) throws InvalidSettingException {
    -  407   -
             boolean value;
    -  408   +  386   +
         public static long getLong(String key) throws InvalidSettingException {
    +  387   +
             long value;
    +  388  
             try {
    -  409  6
                 value = Boolean.parseBoolean(Settings.getString(key));
    -  410  0
             } catch (NumberFormatException ex) {
    -  411  0
                 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex);
    -  412  6
             }
    -  413  6
             return value;
    -  414   +  389  1
                 value = Long.parseLong(Settings.getString(key));
    +  390  0
             } catch (NumberFormatException ex) {
    +  391  0
                 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex);
    +  392  1
             }
    +  393  1
             return value;
    +  394  
         }
    -  415   +  395   +
     
    +  396   +
         /**
    +  397   +
          * Returns a boolean value from the properties file. If the value was
    +  398   +
          * specified as a system property or passed in via the
    +  399   +
          * <code>-Dprop=value</code> argument this method will return the value from
    +  400   +
          * the system properties before the values in the contained configuration
    +  401   +
          * file.
    +  402   +
          *
    +  403   +
          * @param key the key to lookup within the properties file
    +  404   +
          * @return the property from the properties file
    +  405   +
          * @throws InvalidSettingException is thrown if there is an error retrieving
    +  406   +
          * the setting
    +  407   +
          */
    +  408   +
         public static boolean getBoolean(String key) throws InvalidSettingException {
    +  409   +
             boolean value;
    +  410   +
             try {
    +  411  3
                 value = Boolean.parseBoolean(Settings.getString(key));
    +  412  0
             } catch (NumberFormatException ex) {
    +  413  0
                 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex);
    +  414  3
             }
    +  415  3
             return value;
    +  416   +
         }
    +  417  
     }
    - + diff --git a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.UrlStringUtils.html b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.UrlStringUtils.html index c325148dd..862c4cd9e 100644 --- a/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.UrlStringUtils.html +++ b/dependency-check-core/cobertura/org.owasp.dependencycheck.utils.UrlStringUtils.html @@ -12,7 +12,7 @@
     
    - +
    Classes in this File Line Coverage Branch Coverage Complexity
    UrlStringUtils
    81%
    18/22
    66%
    8/12
    2.5
    UrlStringUtils
    82%
    19/23
    66%
    8/12
    2.5
     
    @@ -64,147 +64,160 @@  23  
     import java.util.ArrayList;
     24   -
     import java.util.List;
    +
     import java.util.Arrays;
     25   -
     import java.util.regex.Pattern;
    +
     import java.util.HashSet;
     26   -
     
    +
     import java.util.List;
     27   -
     /**
    +
     import java.util.regex.Pattern;
     28   -
      *
    +
     
     29   -
      * @author Jeremy Long (jeremy.long@owasp.org)
    +
     /**
     30   -
      */
    +
      *
     31   -
     public final class UrlStringUtils {
    +
      * @author Jeremy Long (jeremy.long@owasp.org)
     32   -
     
    +
      */
     33   -
         /**
    +
     public final class UrlStringUtils {
     34   -
          * Private constructor for a utility class.
    +
     
     35   -
          */
    -  36  0
         private UrlStringUtils() {
    -  37  0
         }
    -  38  
         /**
    -  39   -
          * A regular expression to test if a string contains a URL.
    +  36   +
          * Private constructor for a utility class.
    +  37   +
          */
    +  38  0
         private UrlStringUtils() {
    +  39  0
         }
     40   -
          */
    -  41  3
         private static final Pattern CONTAINS_URL_TEST = Pattern.compile("^.*(ht|f)tps?://.*$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
    +
         /**
    +  41   +
          * A regular expression to test if a string contains a URL.
     42   -
         /**
    -  43   -
          * A regular expression to test if a string is a URL.
    +
          */
    +  43  1
         private static final Pattern CONTAINS_URL_TEST = Pattern.compile("^.*(ht|f)tps?://.*$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
     44   -
          */
    -  45  3
         private static final Pattern IS_URL_TEST = Pattern.compile("^(ht|f)tps?://.*", Pattern.CASE_INSENSITIVE);
    +
         /**
    +  45   +
          * A regular expression to test if a string is a URL.
     46   -
     
    -  47   -
         /**
    +
          */
    +  47  1
         private static final Pattern IS_URL_TEST = Pattern.compile("^(ht|f)tps?://.*", Pattern.CASE_INSENSITIVE);
     48   -
          * Tests if the text provided contains a URL. This is somewhat limited
    +
     
     49   -
          * search in that it only looks for (ftp|http|https)://
    +
         /**
     50   -
          *
    +
          * Tests if the text provided contains a URL. This is somewhat limited
     51   -
          * @param text the text to search
    +
          * search in that it only looks for (ftp|http|https)://
     52   -
          * @return true if the text contains a url, otherwise false
    +
          *
     53   -
          */
    +
          * @param text the text to search
     54   -
         public static boolean containsUrl(String text) {
    -  55  59997
             return CONTAINS_URL_TEST.matcher(text).matches();
    +
          * @return true if the text contains a url, otherwise false
    +  55   +
          */
     56   -
         }
    -  57   -
     
    +
         public static boolean containsUrl(String text) {
    +  57  22799
             return CONTAINS_URL_TEST.matcher(text).matches();
     58   -
         /**
    -  59   -
          * Tests if the given text is url.
    -  60   -
          *
    -  61   -
          * @param text the string to test
    -  62   -
          * @return returns true if the text is a url, otherwise false
    -  63   -
          */
    -  64   -
         public static boolean isUrl(String text) {
    -  65  54
             return IS_URL_TEST.matcher(text).matches();
    -  66  
         }
    -  67   +  59  
     
    -  68   +  60  
         /**
    -  69   -
          * <p>Takes a URL, in String format, and adds the important parts of the URL
    -  70   -
          * to a list of strings.</p>
    -  71   -
          * <p>Example, given the following input:</p>
    -  72   -
          * <code>"https://www.somedomain.com/path1/path2/file.php?id=439"</code>
    -  73   -
          * <p>The function would return:</p>
    -  74   -
          * <code>{"somedomain", "path1", "path2", "file"}</code>
    -  75   +  61   +
          * Tests if the given text is url.
    +  62  
          *
    -  76   -
          * @param text a URL
    -  77   -
          * @return importantParts a list of the important parts of the URL
    -  78   -
          * @throws MalformedURLException thrown if the URL is malformed
    -  79   +  63   +
          * @param text the string to test
    +  64   +
          * @return returns true if the text is a url, otherwise false
    +  65  
          */
    +  66   +
         public static boolean isUrl(String text) {
    +  67  77
             return IS_URL_TEST.matcher(text).matches();
    +  68   +
         }
    +  69   +
         /**
    +  70   +
          * A listing of domain parts that shold not be used as evidence. Yes, this
    +  71   +
          * is an incomplete list.
    +  72   +
          */
    +  73  1
         private static final HashSet<String> IGNORE_LIST = new HashSet<String>(Arrays.asList("www", "com", "org", "gov", "info", "name", "net", "pro", "tel", "mobi", "xxx"));
    +  74   +
     
    +  75   +
         /**
    +  76   +
          * <p>Takes a URL, in String format, and adds the important parts of the URL
    +  77   +
          * to a list of strings.</p>
    +  78   +
          * <p>Example, given the following input:</p>
    +  79   +
          * <code>"https://www.somedomain.com/path1/path2/file.php?id=439"</code>
     80   -
         public static List<String> extractImportantUrlData(String text) throws MalformedURLException {
    -  81  54
             final ArrayList<String> importantParts = new ArrayList<String>();
    -  82  54
             final URL url = new URL(text);
    -  83  54
             final String[] domain = url.getHost().split("\\.");
    +
          * <p>The function would return:</p>
    +  81   +
          * <code>{"somedomain", "path1", "path2", "file"}</code>
    +  82   +
          *
    +  83   +
          * @param text a URL
     84   +
          * @return importantParts a list of the important parts of the URL
    +  85   +
          * @throws MalformedURLException thrown if the URL is malformed
    +  86   +
          */
    +  87   +
         public static List<String> extractImportantUrlData(String text) throws MalformedURLException {
    +  88  77
             final ArrayList<String> importantParts = new ArrayList<String>();
    +  89  77
             final URL url = new URL(text);
    +  90  77
             final String[] domain = url.getHost().split("\\.");
    +  91  
             //add the domain except www and the tld.
    -  85  159
             for (int i = 0; i < domain.length - 1; i++) {
    -  86  105
                 final String sub = domain[i];
    -  87  105
                 if (!"www".equalsIgnoreCase(sub)) {
    -  88  96
                     importantParts.add(sub);
    -  89   -
                 }
    -  90   -
             }
    -  91  54
             final String document = url.getPath();
    -  92  54
             final String[] pathParts = document.split("[\\//]");
    -  93  54
             for (int i = 0; i < pathParts.length - 2; i++) {
    -  94  0
                 if (!pathParts[i].isEmpty()) {
    -  95  0
                     importantParts.add(pathParts[i]);
    +  92  230
             for (int i = 0; i < domain.length - 1; i++) {
    +  93  153
                 final String sub = domain[i];
    +  94  153
                 if (!IGNORE_LIST.contains(sub.toLowerCase())) {
    +  95  125
                     importantParts.add(sub);
     96  
                 }
     97  
             }
    -  98  54
             if (pathParts.length > 0 && !pathParts[pathParts.length - 1].isEmpty()) {
    -  99  45
                 final String fileNameNoExt = pathParts[pathParts.length - 1].replaceAll("\\..*{0,5}$", "");
    -  100  45
                 importantParts.add(fileNameNoExt);
    -  101   -
             }
    -  102  54
             return importantParts;
    +  98  77
             final String document = url.getPath();
    +  99  77
             final String[] pathParts = document.split("[\\//]");
    +  100  77
             for (int i = 0; i < pathParts.length - 2; i++) {
    +  101  0
                 if (!pathParts[i].isEmpty()) {
    +  102  0
                     importantParts.add(pathParts[i]);
     103   -
         }
    +
                 }
     104   +
             }
    +  105  77
             if (pathParts.length > 0 && !pathParts[pathParts.length - 1].isEmpty()) {
    +  106  47
                 final String fileNameNoExt = pathParts[pathParts.length - 1].replaceAll("\\..*{0,5}$", "");
    +  107  47
                 importantParts.add(fileNameNoExt);
    +  108   +
             }
    +  109  77
             return importantParts;
    +  110   +
         }
    +  111  
     }
    - + diff --git a/dependency-check-core/cpd.html b/dependency-check-core/cpd.html index b88e46fe7..c8a15b356 100644 --- a/dependency-check-core/cpd.html +++ b/dependency-check-core/cpd.html @@ -1,13 +1,13 @@ - + dependency-check-core - CPD Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -225,23 +225,23 @@ File Line -org\owasp\dependencycheck\data\lucene\AbstractIndex.java -99 +org\owasp\dependencycheck\data\cpe\CpeIndexWriter.java +78 -org\owasp\dependencycheck\data\lucene\AbstractIndex.java -119 +org\owasp\dependencycheck\data\cpe\CpeIndexWriter.java +105
    -
                    indexWriter.commit();
    +
                    indexWriter.close(true);
                 } catch (CorruptIndexException ex) {
                     final String msg = "Unable to update database, there is a corrupt index.";
    -                Logger.getLogger(AbstractIndex.class.getName()).log(Level.SEVERE, msg);
    -                Logger.getLogger(AbstractIndex.class.getName()).log(Level.FINE, null, ex);
    +                Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
    +                Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
                 } catch (IOException ex) {
                     final String msg = "Unable to update database due to an IO error.";
    -                Logger.getLogger(AbstractIndex.class.getName()).log(Level.SEVERE, msg);
    -                Logger.getLogger(AbstractIndex.class.getName()).log(Level.FINE, null, ex);
    -            }
    + Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg); + Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex); + } finally {
    diff --git a/dependency-check-core/dependency-updates-report.html b/dependency-check-core/dependency-updates-report.html index d6f4f74b9..884f04c8e 100644 --- a/dependency-check-core/dependency-updates-report.html +++ b/dependency-check-core/dependency-updates-report.html @@ -1,13 +1,13 @@ - + dependency-check-core - Dependency Updates Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -222,19 +222,19 @@ # of dependencies using the latest version available -7 +10 # of dependencies where the next version available is smaller than an incremental version update -0 +1 # of dependencies where the next version available is an incremental version update -1 +5 # of dependencies where the next version available is a minor version update -5 +8 # of dependencies where the next version available is a major version update @@ -262,7 +262,7 @@ com.google.code.findbugs annotations 2.0.1 -provided +compile jar @@ -282,6 +282,18 @@ + +com.hazelcast +hazelcast +2.5 +provided + +jar + +2.5.1 +2.6 +3.0 + commons-cli commons-cli @@ -293,7 +305,7 @@ - + commons-io commons-io @@ -305,7 +317,7 @@ - + commons-lang commons-lang @@ -317,7 +329,7 @@ 2.6 - + junit junit @@ -329,6 +341,66 @@ + + +net.sf.ehcache +ehcache-core +2.2.0 +provided + +jar + + +2.3.0 + + + +org.apache.axis2 +axis2-adb +1.4.1 +provided + +jar + + +1.5 + + + +org.apache.axis2 +axis2-spring +1.4.1 +provided + +jar + + +1.5 + + + +org.apache.commons +commons-compress +1.5 +compile + +jar + + + + + + +org.apache.geronimo.daytrader +daytrader-ear +2.1.7 +provided + +ear + + + + org.apache.lucene @@ -378,6 +450,18 @@ 4.4.0 + +org.apache.struts +struts2-core +2.1.2 +provided + +jar + +2.1.6 +2.2.1 + + org.apache.velocity velocity @@ -389,7 +473,7 @@ - + org.apache.velocity velocity-tools @@ -401,8 +485,32 @@ + + +org.dojotoolkit +dojo-war +1.3.0 +provided + +war + +1.3.1 +1.4.2 + +org.glassfish.main.admingui +war +4.0 +provided + +war + + + + + + org.jsoup jsoup 1.7.2 @@ -413,7 +521,31 @@ + + +org.mortbay.jetty +jetty +6.1.0 +provided + +jar +6.1H.22 +6.1.17 + + + +org.springframework +spring-webmvc +2.5.5 +provided + +jar + +2.5.6 + +3.0.0.RELEASE + Status Group Id Artifact Id @@ -431,25 +563,25 @@

    com.google.code.findbugs:annotations

    - + - + - + - + - - - + + + - +
    Status  No newer versions available.
    Group Id com.google.code.findbugs
    Artifact Id annotations
    Current Version 2.0.1
    Scopeprovided
    Scopecompile
    Classifier
    Type jar
    @@ -480,6 +612,33 @@ Newer versions 1.3.173 Next Incremental
    +

    com.hazelcast:hazelcast

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer incremental version available. Incremental updates are typically passive.
    Group Idcom.hazelcast
    Artifact Idhazelcast
    Current Version2.5
    Scopeprovided
    Classifier
    Typejar
    Newer versions2.5.1 Next Incremental
    2.6 Next Minor
    2.6.1
    2.6.2
    3.0-RC1
    3.0-RC2 Latest Minor
    3.0 Next Major
    3.0.1 Latest Major
    +

    commons-cli:commons-cli

    @@ -579,6 +738,135 @@
    Type jar
    +

    net.sf.ehcache:ehcache-core

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Idnet.sf.ehcache
    Artifact Idehcache-core
    Current Version2.2.0
    Scopeprovided
    Classifier
    Typejar
    Newer versions2.3.0 Next Minor
    2.3.1
    2.3.2
    2.3.3
    2.4.0
    2.4.1
    2.4.2
    2.4.3
    2.4.4
    2.4.5
    2.4.6
    2.4.7
    2.4.8
    2.5.0
    2.5.1
    2.5.2
    2.5.3
    2.5.4
    2.5.5
    2.5.6
    2.5.7
    2.6.0
    2.6.2
    2.6.3
    2.6.5
    2.6.6 Latest Minor
    +
    +

    org.apache.axis2:axis2-adb

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Idorg.apache.axis2
    Artifact Idaxis2-adb
    Current Version1.4.1
    Scopeprovided
    Classifier
    Typejar
    Newer versions1.5 Next Minor
    1.5.1
    1.5.2
    1.5.3
    1.5.4
    1.5.5
    1.5.6
    1.6.0
    1.6.1
    1.6.2 Latest Minor
    +
    +

    org.apache.axis2:axis2-spring

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Idorg.apache.axis2
    Artifact Idaxis2-spring
    Current Version1.4.1
    Scopeprovided
    Classifier
    Typejar
    Newer versions1.5 Next Minor
    1.5.1
    1.5.2
    1.5.3
    1.5.4
    1.5.5
    1.5.6
    1.6.0
    1.6.1
    1.6.2 Latest Minor
    +
    +

    org.apache.commons:commons-compress

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.apache.commons
    Artifact Idcommons-compress
    Current Version1.5
    Scopecompile
    Classifier
    Typejar
    +
    +

    org.apache.geronimo.daytrader:daytrader-ear

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.apache.geronimo.daytrader
    Artifact Iddaytrader-ear
    Current Version2.1.7
    Scopeprovided
    Classifier
    Typeear
    +

    org.apache.lucene:lucene-analyzers-common

    @@ -687,6 +975,33 @@
    Newer versions 4.4.0 Next Minor
    +

    org.apache.struts:struts2-core

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer incremental version available. Incremental updates are typically passive.
    Group Idorg.apache.struts
    Artifact Idstruts2-core
    Current Version2.1.2
    Scopeprovided
    Classifier
    Typejar
    Newer versions2.1.6 Next Incremental
    2.1.8
    2.1.8.1 Latest Incremental
    2.2.1 Next Minor
    2.2.1.1
    2.2.3
    2.2.3.1
    2.3.1
    2.3.1.1
    2.3.1.2
    2.3.3
    2.3.4
    2.3.4.1
    2.3.7
    2.3.8
    2.3.12
    2.3.14
    2.3.14.1
    2.3.14.2
    2.3.14.3
    2.3.15
    2.3.15.1 Latest Minor
    +

    org.apache.velocity:velocity

    @@ -735,6 +1050,57 @@
    Type jar
    +

    org.dojotoolkit:dojo-war

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer incremental version available. Incremental updates are typically passive.
    Group Idorg.dojotoolkit
    Artifact Iddojo-war
    Current Version1.3.0
    Scopeprovided
    Classifier
    Typewar
    Newer versions1.3.1 Next Incremental
    1.3.2 Latest Incremental
    1.4.2 Next Minor
    1.4.3
    1.5.0
    1.6.0
    1.6.1
    1.7.0
    1.7.1
    1.7.2
    1.8.0
    1.8.1
    1.8.2
    1.8.3
    1.9.0b2
    1.9.0 Latest Minor
    +
    +

    org.glassfish.main.admingui:war

    + + + + + + + + + + + + + + + + + + + + + +
    Status No newer versions available.
    Group Idorg.glassfish.main.admingui
    Artifact Idwar
    Current Version4.0
    Scopeprovided
    Classifier
    Typewar
    +

    org.jsoup:jsoup

    @@ -757,7 +1123,61 @@ -
    Typejar
    +jar +
    +

    org.mortbay.jetty:jetty

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer version available.
    Group Idorg.mortbay.jetty
    Artifact Idjetty
    Current Version6.1.0
    Scopeprovided
    Classifier
    Typejar
    Newer versions6.1H.22 Next Version
    6.1.17 Next Incremental
    6.1.18
    6.1.19
    6.1.20
    6.1.21
    6.1.22
    6.1.23
    6.1.24
    6.1.25
    6.1.26RC0
    6.1.26 Latest Incremental
    +
    +

    org.springframework:spring-webmvc

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Status There is at least one newer incremental version available. Incremental updates are typically passive.
    Group Idorg.springframework
    Artifact Idspring-webmvc
    Current Version2.5.5
    Scopeprovided
    Classifier
    Typejar
    Newer versions2.5.6 Next Incremental
    2.5.6.SEC01
    2.5.6.SEC02
    2.5.6.SEC03 Latest Incremental
    3.0.0.RELEASE Next Major
    3.0.1.RELEASE
    3.0.2.RELEASE
    3.0.3.RELEASE
    3.0.4.RELEASE
    3.0.5.RELEASE
    3.0.6.RELEASE
    3.0.7.RELEASE
    3.1.0.RELEASE
    3.1.1.RELEASE
    3.1.2.RELEASE
    3.2.0.RELEASE
    3.2.1.RELEASE
    3.2.2.RELEASE
    3.2.3.RELEASE
    3.2.4.RELEASE Latest Major
    diff --git a/dependency-check-core/failsafe-report.html b/dependency-check-core/failsafe-report.html index 7edf0166f..baa5439d6 100644 --- a/dependency-check-core/failsafe-report.html +++ b/dependency-check-core/failsafe-report.html @@ -1,13 +1,13 @@ - + dependency-check-core - Surefire Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -251,7 +251,7 @@ function toggleDisplay(elementId) { 0 0 100% -43.435
    +387.58

    Note: failures are anticipated and checked for with assertions while errors are unanticipated.


    Package List

    @@ -266,29 +266,29 @@ function toggleDisplay(elementId) { Success Rate Time -org.owasp.dependencycheck.data.nvdcve.xml -1 -0 -0 -0 -100% -3.123 - org.owasp.dependencycheck 1 0 0 0 100% -17.671 - +11.066 + org.owasp.dependencycheck.utils 2 0 0 0 100% -22.638 +0.681 + +org.owasp.dependencycheck.data.update +1 +0 +0 +0 +100% +375.83 org.owasp.dependencycheck.data.cpe 2 @@ -299,27 +299,6 @@ function toggleDisplay(elementId) { 0.003

    Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.

    -

    org.owasp.dependencycheck.data.nvdcve.xml

    - - - - - - - - - - - - - - - - - - -
    ClassTestsErrors FailuresSkippedSuccess RateTime
    DatabaseUpdaterIntegrationTest1000100%3.123
    -

    org.owasp.dependencycheck

    @@ -339,7 +318,7 @@ function toggleDisplay(elementId) { -
    0 0 100%17.671
    +11.066

    org.owasp.dependencycheck.utils

    @@ -360,7 +339,28 @@ function toggleDisplay(elementId) { -
    0 0 100%22.638
    +0.681 +
    +

    org.owasp.dependencycheck.data.update

    + + + + + + + + + + + + + + + + + + +
    ClassTestsErrors FailuresSkippedSuccess RateTime
    DatabaseUpdaterIntegrationTest1000100%375.83

    org.owasp.dependencycheck.data.cpe

    @@ -397,30 +397,30 @@ function toggleDisplay(elementId) {
    testUpdate 0
    -

    DatabaseUpdaterIntegrationTest

    +

    DatabaseUpdaterIntegrationTest

    -
    testUpdate3.123
    +375.83

    EngineIntegrationTest

    -
    testScan17.671
    +11.066

    DownloaderIntegrationTest

    - + -
    testGetLastModified0.384
    0.053
    testFetchFile22.254

    +0.628
    diff --git a/dependency-check-core/findbugs.html b/dependency-check-core/findbugs.html index 711db6dd9..059e3e7be 100644 --- a/dependency-check-core/findbugs.html +++ b/dependency-check-core/findbugs.html @@ -1,13 +1,13 @@ - + dependency-check-core - FindBugs Bug Detector Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -230,8 +230,8 @@ Errors Missing Classes -167 -5 +173 +8 0 0 - +
    +

    org.owasp.dependencycheck.analyzer.ArchiveAnalyzer

    + + + + + + + +
    Bug Category Details Line Priority
    exceptional return value of java.io.File.mkdirs() ignored in org.owasp.dependencycheck.analyzer.ArchiveAnalyzer.initialize()BAD_PRACTICERV_RETURN_VALUE_IGNORED_BAD_PRACTICE148Medium
    +
    +

    org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer

    + + + + + + + - + @@ -273,32 +297,62 @@

    org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer

    BugCategoryDetailsLinePriority
    Possible null pointer dereference of currentVersion on branch that might be infeasible in org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer.removeSpuriousCPE(Dependency) STYLE NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE 162 Medium
    Possible null pointer dereference of nextVersion on branch that might be infeasible in org.owasp.dependencycheck.analyzer.FalsePositiveAnalyzer.removeSpuriousCPE(Dependency) STYLE NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE
    - + - + -
    Bug Category Details Line Priority
    Dead store to extractComments in org.owasp.dependencycheck.analyzer.JavaScriptAnalyzer.analyze(Dependency, Engine) STYLE DLS_DEAD_LOCAL_STORE 99Medium
    +Medium
    -

    org.owasp.dependencycheck.utils.Downloader

    +

    org.owasp.dependencycheck.concurrency.DirectorySpinLock

    - + + + + + + +
    Bug Category Details Line Priority
    exceptional return value of java.io.File.delete() ignored in org.owasp.dependencycheck.concurrency.DirectorySpinLock.close()BAD_PRACTICERV_RETURN_VALUE_IGNORED_BAD_PRACTICE247Medium
    +
    +

    org.owasp.dependencycheck.data.update.DatabaseUpdater

    + + + + + + + + + + + +
    BugCategoryDetailsLinePriority
    Null passed for nonnull parameter of new java.net.URL(String) in org.owasp.dependencycheck.data.update.DatabaseUpdater.retrieveCurrentTimestampsFromWeb()CORRECTNESSNP_NULL_PARAM_DEREF550Medium
    +
    +

    org.owasp.dependencycheck.utils.Downloader

    + + + + + + + + - +
    BugCategoryDetailsLinePriority
    Redundant nullcheck of conn which is known to be null in org.owasp.dependencycheck.utils.Downloader.getConnection(URL) STYLE RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE222198 Medium
    diff --git a/dependency-check-core/index.html b/dependency-check-core/index.html index ab597c58c..2a1a93147 100644 --- a/dependency-check-core/index.html +++ b/dependency-check-core/index.html @@ -1,13 +1,13 @@ - + dependency-check-core - @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-06
  • |
  • -
  • Version: 1.0.1-SNAPSHOT
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -158,7 +158,7 @@
  • Ant Task
  • -
  • Jenkins Plugin
  • +
  • Jenkins Plugin
  • diff --git a/dependency-check-core/license.html b/dependency-check-core/license.html index eeda27086..66e3303d4 100644 --- a/dependency-check-core/license.html +++ b/dependency-check-core/license.html @@ -1,13 +1,13 @@ - + dependency-check-core - Project License @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-core/plugin-updates-report.html b/dependency-check-core/plugin-updates-report.html index 7c5612a3f..0bd762cc7 100644 --- a/dependency-check-core/plugin-updates-report.html +++ b/dependency-check-core/plugin-updates-report.html @@ -1,13 +1,13 @@ - + dependency-check-core - Plugin Updates Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -222,7 +222,7 @@ # of plugins using the latest version available -5 +3 # of plugins where the next version available is smaller than an incremental version update @@ -234,7 +234,7 @@ # of plugins where the next version available is a minor version update -8 +9 # of plugins where the next version available is a major version update @@ -380,16 +380,6 @@ - -org.apache.maven.plugins -maven-gpg-plugin -1.4 - - - - - - org.apache.maven.plugins maven-install-plugin @@ -399,7 +389,7 @@ 2.4 - + org.apache.maven.plugins maven-jar-plugin @@ -409,7 +399,7 @@ - + org.apache.maven.plugins maven-javadoc-plugin @@ -419,7 +409,7 @@ - + org.apache.maven.plugins maven-resources-plugin @@ -429,7 +419,7 @@ 2.6 - + org.apache.maven.plugins maven-site-plugin @@ -439,7 +429,7 @@ - + org.apache.maven.plugins maven-surefire-plugin @@ -449,17 +439,17 @@ 2.15 - - + + org.codehaus.mojo cobertura-maven-plugin -2.5.2 - +2.5.2 +2.6 - + Status Group Id Artifact Id @@ -475,19 +465,19 @@

    Plugin com.github.github:site-maven-plugin

    - + - + - + - + - +
    Status  There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Id com.github.github
    Artifact Id site-maven-plugin
    Current Version 0.7
    Newer versions 0.8 Next Minor
    @@ -630,22 +620,7 @@ 2.14 Newer versions -2.14.1 Next Incremental
    2.15 Next Minor
    -
    -

    Plugin org.apache.maven.plugins:maven-gpg-plugin

    - - - - - - - - - - - - -
    Status No newer versions available.
    Group Idorg.apache.maven.plugins
    Artifact Idmaven-gpg-plugin
    Current Version1.4
    +2.14.1 Next Incremental
    2.15 Next Minor
    2.16 Latest Minor

    Plugin org.apache.maven.plugins:maven-install-plugin

    @@ -822,13 +797,13 @@ -
    2.14
    Newer versions2.14.1 Next Incremental
    2.15 Next Minor
    +2.14.1 Next Incremental
    2.15 Next Minor
    2.16 Latest Minor

    Plugin org.codehaus.mojo:cobertura-maven-plugin

    - + @@ -837,7 +812,10 @@ -
    Status No newer versions available.
     There is at least one newer minor version available. Minor updates are sometimes passive.
    Group Id org.codehaus.mojo
    cobertura-maven-plugin
    Current Version2.5.2
    +2.5.2 + +Newer versions +2.6 Next Minor diff --git a/dependency-check-core/pmd.html b/dependency-check-core/pmd.html index 6c1224df1..cb50b9133 100644 --- a/dependency-check-core/pmd.html +++ b/dependency-check-core/pmd.html @@ -1,13 +1,13 @@ - + dependency-check-core - PMD Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -221,6 +221,27 @@

    Files

    +

    org/owasp/dependencycheck/analyzer/CPEAnalyzer.java

    + + + + + + + + + + + + + + + + + + +
    ViolationLine
    Useless parentheses.136
    Useless parentheses.207
    These nested if statements could be combined585 - 590
    These nested if statements could be combined586 - 589
    These nested if statements could be combined595 - 598
    +

    org/owasp/dependencycheck/analyzer/DependencyBundlingAnalyzer.java

    @@ -269,35 +290,32 @@
    Avoid unused local variables such as 'extractComments'. 99
    -

    org/owasp/dependencycheck/data/cpe/CPEAnalyzer.java

    +

    org/owasp/dependencycheck/analyzer/NvdCveAnalyzer.java

    - - - - - - - - - - - - -
    Violation Line
    Useless parentheses.132
    Useless parentheses.211
    These nested if statements could be combined579 - 584
    These nested if statements could be combined580 - 583
    These nested if statements could be combined589 - 592
    +78
    -

    org/owasp/dependencycheck/data/cpe/Index.java

    +

    org/owasp/dependencycheck/concurrency/DirectorySpinLock.java

    -
    Violation Line
    These nested if statements could be combined71 - 73
    +243 - 248 +
    +

    org/owasp/dependencycheck/data/cpe/BaseIndex.java

    + + + + + + +
    ViolationLine
    These nested if statements could be combined111 - 113

    org/owasp/dependencycheck/data/cpe/IndexEntry.java

    @@ -318,19 +336,10 @@ - + -
    Line
    These nested if statements could be combined528 - 530
    517 - 519
    Useless parentheses.675
    -
    -

    org/owasp/dependencycheck/data/nvdcve/NvdCveAnalyzer.java

    - - - - - - -
    ViolationLine
    Useless parentheses.79
    +664

    org/owasp/dependencycheck/dependency/Dependency.java

    @@ -441,16 +450,7 @@ -
    138
    Useless parentheses.198
    -
    -

    org/owasp/dependencycheck/utils/Downloader.java

    - - - - - - -
    ViolationLine
    Useless parentheses.119
    +198 diff --git a/dependency-check-core/project-info.html b/dependency-check-core/project-info.html index a80b5fe54..1412d5986 100644 --- a/dependency-check-core/project-info.html +++ b/dependency-check-core/project-info.html @@ -1,13 +1,13 @@ - + dependency-check-core - Project Information @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-core/project-reports.html b/dependency-check-core/project-reports.html index 62584cd49..2fe5daf51 100644 --- a/dependency-check-core/project-reports.html +++ b/dependency-check-core/project-reports.html @@ -1,13 +1,13 @@ - + dependency-check-core - Generated Reports @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-core/project-summary.html b/dependency-check-core/project-summary.html index cb61c5dbe..3b6df0b38 100644 --- a/dependency-check-core/project-summary.html +++ b/dependency-check-core/project-summary.html @@ -1,13 +1,13 @@ - + dependency-check-core - Project Summary @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -155,7 +155,7 @@ Value Name -dependency-check-core +Dependency-Check Core Description Dependency-check is a utility that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries. @@ -188,7 +188,7 @@ dependency-check-core Version -1.0.1 +1.0.2 Type jar diff --git a/dependency-check-core/surefire-report.html b/dependency-check-core/surefire-report.html index f7a1185ae..726218d23 100644 --- a/dependency-check-core/surefire-report.html +++ b/dependency-check-core/surefire-report.html @@ -1,13 +1,13 @@ - + dependency-check-core - Surefire Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -246,12 +246,12 @@ function toggleDisplay(elementId) { Success Rate Time -95 +102 0 0 0 100% -14.225
    +57.107

    Note: failures are anticipated and checked for with assertions while errors are unanticipated.


    Package List

    @@ -266,14 +266,6 @@ function toggleDisplay(elementId) { Success Rate Time -org.owasp.dependencycheck.data.nvdcve.xml -2 -0 -0 -0 -100% -0.326 - org.owasp.dependencycheck.reporting 1 0 @@ -281,94 +273,80 @@ function toggleDisplay(elementId) { 0 100% 0 - + org.owasp.dependencycheck.data.cwe 1 0 0 0 100% -0.024 - +0.016 + org.owasp.dependencycheck.dependency 23 0 0 0 100% -0.002 - -org.owasp.dependencycheck.utils -27 -0 -0 -0 -100% -0.001 +0.037 -org.owasp.dependencycheck.analyzer -20 +org.owasp.dependencycheck.utils +29 0 0 0 100% -7.447 +0.015 -org.owasp.dependencycheck.data.nvdcve +org.owasp.dependencycheck.concurrency 3 0 0 0 100% -0.998 +9.54 +org.owasp.dependencycheck.analyzer +26 +0 +0 +0 +100% +15.236 + +org.owasp.dependencycheck.data.update +2 +0 +0 +0 +100% +29.882 + +org.owasp.dependencycheck.data.nvdcve +5 +0 +0 +0 +100% +1.435 + org.owasp.dependencycheck.data.lucene 10 0 0 0 100% -0.833 - +0.946 + org.owasp.dependencycheck.data.cpe -8 +2 0 0 0 100% -4.594
    +0

    Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.

    -

    org.owasp.dependencycheck.data.nvdcve.xml

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassTestsErrors FailuresSkippedSuccess RateTime
    NvdCve_1_2_HandlerTest1000100%0.085
    NvdCve_2_0_HandlerTest1000100%0.241
    -

    org.owasp.dependencycheck.reporting

    @@ -409,7 +387,7 @@ function toggleDisplay(elementId) { -
    0 0 100%0.024
    +0.016

    org.owasp.dependencycheck.dependency

    @@ -430,7 +408,7 @@ function toggleDisplay(elementId) { - + @@ -460,7 +438,7 @@ function toggleDisplay(elementId) { - + @@ -480,6 +458,15 @@ function toggleDisplay(elementId) { + + + + + + + + + @@ -488,7 +475,7 @@ function toggleDisplay(elementId) { - + @@ -497,16 +484,37 @@ function toggleDisplay(elementId) { - + - +
    0 0 100%0.002
    0.037
    VulnerableSoftwareTest0 0 100%0
    0.014
    DependencyVersionTest100% 0
    DownloaderTest1000100%0
    FileUtilsTest 20 100% 0
    FilterTest 20 100% 0
    SettingsTest910 0 0 0 100% 0
    +

    org.owasp.dependencycheck.concurrency

    + + + + + + + + + + + + + + + + + + +
    ClassTestsErrors FailuresSkippedSuccess RateTime
    DirectorySpinLockTest3000100%9.54
    +

    org.owasp.dependencycheck.analyzer

    @@ -526,7 +534,7 @@ function toggleDisplay(elementId) { - + @@ -535,17 +543,26 @@ function toggleDisplay(elementId) { - + - + - + + + + + + + + + + @@ -553,8 +570,8 @@ function toggleDisplay(elementId) { - - + + @@ -562,7 +579,37 @@ function toggleDisplay(elementId) { -
    0 0 100%0.011
    0.014
    AnalyzerServiceTest0 0 100%0.447
    0.493
    ArchiveAnalyzerTest67 0 0 0 100%5.501
    0.493
    CPEAnalyzerTest5000100%12.73
    FileNameAnalyzerTest 70 0 100%0.073
    0.027
    JarAnalyzerTest 50 0 100%1.415
    +1.479 +
    +

    org.owasp.dependencycheck.data.update

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassTestsErrors FailuresSkippedSuccess RateTime
    DatabaseUpdater_1_Test1000100%18.812
    DatabaseUpdater_2_Test1000100%11.07

    org.owasp.dependencycheck.data.nvdcve

    @@ -583,7 +630,25 @@ function toggleDisplay(elementId) { -
    0 0 100%0.998
    +1.15 + + +NvdCve_1_2_HandlerTest +1 +0 +0 +0 +100% +0.03 + + +NvdCve_2_0_HandlerTest +1 +0 +0 +0 +100% +0.255

    org.owasp.dependencycheck.data.lucene

    @@ -604,7 +669,7 @@ function toggleDisplay(elementId) { - + @@ -622,7 +687,7 @@ function toggleDisplay(elementId) { - + @@ -631,7 +696,7 @@ function toggleDisplay(elementId) { -
    0 0 100%0.091
    0.101
    LuceneUtilsTest0 0 100%0.057
    0.041
    UrlTokenizingFilterTest0 0 100%0.685
    +0.804

    org.owasp.dependencycheck.data.cpe

    @@ -645,27 +710,18 @@ function toggleDisplay(elementId) { - - - - - - - - - - - + + - - - - + + + + @@ -680,21 +736,21 @@ function toggleDisplay(elementId) { -
    Success Rate Time
    CPEAnalyzerTest5000100%4.594
    IndexEntryTestBaseIndexTest 1 0 0 0 100% 0
    IndexTest2
    IndexEntryTest1 0 0 0
    testNewHashSet0.011
    +0.014

    AnalyzerServiceTest

    -
    testGetAnalyzers0.447
    +0.493

    ArchiveAnalyzerTest

    - + @@ -702,26 +758,53 @@ function toggleDisplay(elementId) { - - - - - - - - + + + + + + + + + + + +
    testAnalyze5.499
    0.486
    testGetAnalysisPhase
    testGetName0.001
    testInitialize0.001
    testSupportsExtension 0
    testAnalyze_badZip0.004
    testInitialize0.002
    testSupportsExtension0.001
    testGetSupportedExtensions 0
    +

    CPEAnalyzerTest

    + + + + + + + + + + + + + + + + + + + + +
    testSearchCPE1.697
    testDetermineCPE2.496
    testOpen1.451
    testDetermineCPE_full7.085
    testBuildSearch0.001
    +

    FileNameAnalyzerTest

    - + @@ -729,7 +812,7 @@ function toggleDisplay(elementId) { - + @@ -752,46 +835,45 @@ function toggleDisplay(elementId) { - + - + - + - + -
    testAnalyze0.072
    0.027
    testClose
    testGetAnalysisPhase0.001
    0
    testGetName
    testAnalyze0.459
    0.287
    testGetName0.21
    0.288
    testInterpolateString0.229
    0.289
    testSupportsExtension0.227
    0.263
    testGetSupportedExtensions0.29
    +0.352
    -

    CPEAnalyzerTest

    +

    DirectorySpinLockTest

    - - + + - - + + - - - - - - + +
    testSearchCPE0.663
    testObtainSharedLock2.014
    testDetermineCPE1.525
    testObtainSharedLock_withContention6.024
    testOpen0.12
    testDetermineCPE_full2.284
    testObtainExclusiveLock1.502
    +
    +

    BaseIndexTest

    + - -
    testBuildSearch0.002
    +testGetDataDirectory +0

    IndexEntryTest

    @@ -800,30 +882,19 @@ function toggleDisplay(elementId) {
    testSetName 0
    -

    IndexTest

    - - - - - - - - -
    testOpen0
    testGetDirectory0
    -

    CweDBTest

    -
    testGetCweName0.024
    +0.016

    FieldAnalyzerTest

    -
    testAnalyzers0.091
    +0.101

    LuceneUtilsTest

    @@ -849,55 +920,69 @@ function toggleDisplay(elementId) { - + -
    testExamples0.047
    0.034
    testClear0.01
    +0.007

    UrlTokenizingFilterTest

    - - + + - - + + -
    testRandomStrings0.666
    testEmptyTerm0.011
    testEmptyTerm0.008
    testRandomStrings0.788
    testExamples0.011
    +0.005

    CveDBTest

    - + - + -
    testOpen0.068
    0.214
    testGetCPEs0.133
    0.299
    testGetVulnerabilities0.797
    +0.637
    -

    NvdCve_1_2_HandlerTest

    +

    NvdCve_1_2_HandlerTest

    -
    testParse0.085
    +0.03
    -

    NvdCve_2_0_HandlerTest

    +

    NvdCve_2_0_HandlerTest

    -
    testParse0.241
    +0.255 +
    +

    DatabaseUpdater_1_Test

    + + + + +
    testBatchUpdate18.812
    +
    +

    DatabaseUpdater_2_Test

    + + + + +
    testBatchUpdateWithoutModified11.07

    DependencyTest

    @@ -908,7 +993,7 @@ function toggleDisplay(elementId) { - + @@ -940,7 +1025,7 @@ function toggleDisplay(elementId) { - + @@ -948,11 +1033,11 @@ function toggleDisplay(elementId) { - + - + @@ -964,7 +1049,7 @@ function toggleDisplay(elementId) { - + @@ -1009,7 +1094,7 @@ function toggleDisplay(elementId) { - + @@ -1017,11 +1102,11 @@ function toggleDisplay(elementId) { - + - + @@ -1056,11 +1141,11 @@ function toggleDisplay(elementId) { - + -
    testGetSha1sum0
    0.017
    testGetProductEvidence
    testSetFileName0.002
    0
    testSetFilePath
    testGetFileName0
    0.001
    testGetFilePath0
    0.001
    testGetFileExtension
    testGetMd5sum0
    0.018
    testGetEvidence
    testGetChecksum_NoSuchAlgorithm0
    0.012
    testGetChecksum
    testGetMD5Checksum0
    0.001
    testGetChecksum_FileNotFound0
    0.001
    testGetHex
    testEquals0.001
    0
    testIterator0
    +0.001

    DependencyVersionUtilTest

    @@ -1069,6 +1154,13 @@ function toggleDisplay(elementId) {
    testParseVersionFromFileName 0
    +

    DownloaderTest

    + + + + +
    testGetLastModified_file0
    +

    FileUtilsTest

    @@ -1111,21 +1203,25 @@ function toggleDisplay(elementId) { - + + + + + - + - + - +
    0
    testSetStringtestRemoveProperty 0
    testSetString0
    testGetInt 0
    testGetString_String 0
    testGetString 0
    testGetString_String_String 0

    diff --git a/dependency-check-core/taglist.html b/dependency-check-core/taglist.html index 5ac7b69d8..25c03c89e 100644 --- a/dependency-check-core/taglist.html +++ b/dependency-check-core/taglist.html @@ -1,13 +1,13 @@ - + dependency-check-core - Tag List report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -225,19 +225,37 @@ Tag strings used by tag class Todo Work -28 +33 todo, FIXME

    Each tag is detailed below:

    Todo Work

    -

    Number of occurrences found in the code: 28

    +

    Number of occurrences found in the code: 33

    - + + + + + + + + + + + + + + + + + + + @@ -278,89 +296,98 @@ - + - - + + - - + + - + + + + + + + - - + + - - + + - + + + + + + + - - + + + + + - + - + - + - + - + - + - + - + - - - - + - + - - + + - - - - - - - - - - + - + - + -
    org.owasp.dependencycheck.analyzer.ArchiveAnalyzer Line
    - can we get more evidence from the parent? EAR contains module name, etc.204
    209
    org.owasp.dependencycheck.analyzer.CPEAnalyzerLine
    - likely need to change the split... not sure if this will work for CPE with special chars446
    the following isn't quite right is it? need to think about this guessing game a bit more.582
    org.owasp.dependencycheck.analyzer.CPEAnalyzerTestLine
    - yeah, not a very good test as the results are the same with or without weighting...243
    fix this assert Assert.assertEquals(expResult, result.get(0).getName());251
    org.owasp.dependencycheck.analyzer.DependencyBundlingAnalyzer Line
    add logging to FINE possiblePoms.add(entry); } } List<String> retValue; if (usePoms.isEmpty()) { if (possiblePoms.isEmpty()) { retValue = pomEntries; } else { retValue = possiblePoms; } } else { retValue = new ArrayList<String>(); int maxCount = 0; for (Map.Entry<String, Integer> entry : usePoms.entrySet()) { final int current = entry.getValue().intValue(); if (current > maxCount) { maxCount = current; retValue.clear(); retValue.add(entry.getKey()); } else if (current == maxCount) { retValue.add(entry.getKey()); } } } return retValue; 990
    org.owasp.dependencycheck.data.cpe.CPEAnalyzerorg.owasp.dependencycheck.analyzer.NvdCveAnalyzer Line
    - likely need to change the split... not sure if this will work for CPE with special chars441
    - remove this comment block after additional testing is completed note - valid match functionality has been moved into the CveDB class. // for (Vulnerability v : vulns) { // if (isValidMatch(dependency, v)) { // dependency.addVulnerability(v); // } // }110
    the following isn't quite right is it? need to think about this guessing game a bit more.576
    - remove this comment block after additional testing is completed The following check has been moved into the CveDB class. // /** // * <p>Determines if this is a valid vulnerability match for the given // * dependency. Specifically, this is concerned with ensuring the version // * numbers are correct.</p> // * <p>Currently, this is focused on the issues with the versions for Struts // * 1 and Struts 2. In the future this will due better matching on more // * version numbers.</p> // * // * @param dependency the dependency // * @param v the vulnerability // * @return returns true if the vulnerability is for the given dependency // */ // private boolean isValidMatch(final Dependency dependency, final Vulnerability v) { // //right now I only know of the issue with Struts1/2 // // start with fixing this problem. // // //TODO extend this solution to do better version matching for the vulnerable software. // boolean struts1 = false; // boolean struts2 = false; // for (Identifier i : dependency.getIdentifiers()) { // if (i.getValue().startsWith("cpe:/a:apache:struts:")) { // final char version = i.getValue().charAt(21); // if (version == '1') { // struts1 = true; // } // if (version == '2') { // struts2 = true; // } // } // } // if (!struts1 && !struts2) { // return true; //we are not looking at struts, so return true. // } // if (struts1 && struts2) { // return true; //there is a mismatch here, but we can't solve it here so we return valid. // } // if (struts1) { // boolean hasStruts1Vuln = false; // boolean hasStruts2PreviousVersion = false; // for (VulnerableSoftware vs : v.getVulnerableSoftware()) { // //TODO FIX THIS // //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2'; // //hasStruts1Vuln |= vs.getName().charAt(21) == '1'; // } // if (!hasStruts1Vuln && hasStruts2PreviousVersion) { // return false; // } // } // // return true; // }169
    org.owasp.dependencycheck.data.cpe.CPEAnalyzerTestextend this solution to do better version matching for the vulnerable software. // boolean struts1 = false; // boolean struts2 = false; // for (Identifier i : dependency.getIdentifiers()) { // if (i.getValue().startsWith("cpe:/a:apache:struts:")) { // final char version = i.getValue().charAt(21); // if (version == '1') { // struts1 = true; // } // if (version == '2') { // struts2 = true; // } // } // } // if (!struts1 && !struts2) { // return true; //we are not looking at struts, so return true. // } // if (struts1 && struts2) { // return true; //there is a mismatch here, but we can't solve it here so we return valid. // } // if (struts1) { // boolean hasStruts1Vuln = false; // boolean hasStruts2PreviousVersion = false; // for (VulnerableSoftware vs : v.getVulnerableSoftware()) { // //TODO FIX THIS // //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2'; // //hasStruts1Vuln |= vs.getName().charAt(21) == '1'; // } // if (!hasStruts1Vuln && hasStruts2PreviousVersion) { // return false; // } // } // // return true; // }187
    FIX THIS // //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2'; // //hasStruts1Vuln |= vs.getName().charAt(21) == '1'; // } // if (!hasStruts1Vuln && hasStruts2PreviousVersion) { // return false; // } // } // // return true; // }211
    org.owasp.dependencycheck.concurrency.DirectorySpinLock Line
    - yeah, not a very good test as the results are the same with or without weighting...240
    uncomment this once support for 1.6 is dropped. if (lock != null) { try { lock.close(); } catch (IOException ex) { Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to close file lock due to IO Exception", ex); } }227
    fix this assert Assert.assertEquals(expResult, result.get(0).getName());248
    org.owasp.dependencycheck.data.cpe.CpeIndexReaderLine
    org.owasp.dependencycheck.data.cpe.IndexTestadd spinlock (shared)80
    remove spinlock (shared)93
    org.owasp.dependencycheck.data.cpe.CpeIndexWriter Line
    research why are we getting multiple documents for the same documentId. is the update method not working? try { instance.createSearchingAnalyzer(); TopDocs docs = instance.search("product:( project\\-open )", 20); for (ScoreDoc d : docs.scoreDocs) { final Document doc = instance.getDocument(d.doc); String vendor = doc.getField(Fields.VENDOR).stringValue(); String product = doc.getField(Fields.PRODUCT).stringValue(); System.out.print(d.doc); System.out.print(" : "); System.out.print(vendor + ":"); System.out.println(product); } } catch (ParseException ex) { Logger.getLogger(IndexTest.class.getName()).log(Level.SEVERE, null, ex); }68
    add spinlock62
    remove spinlock74
    org.owasp.dependencycheck.data.lucene.SearchVersionAnalyzer Line
    consider implementing payloads/custom attributes... use custom attributes for major, minor, x, x, x, rcx these can then be used to weight the score for searches on the version. see http://lucene.apache.org/core/3_6_1/api/core/org/apache/lucene/analysis/package-summary.html#package_description look at this article to implement http://www.codewrecks.com/blog/index.php/2012/08/25/index-your-blog-using-tags-and-lucene-net/ 38
    org.owasp.dependencycheck.data.lucene.TokenPairConcatenatingFilterTest Line
    figure outwhy I am getting "Failed: incrementtoken() called while in wrong state" String[] expected = new String[3]; expected[0] = "one"; expected[1] = "onetwo"; expected[2] = "two"; checkOneTerm(analyzer, "one", "one"); assertAnalyzesTo(analyzer, "two", new String[]{"onetwo", "two"}); checkOneTerm(analyzer, "two", "onetwo"); checkOneTerm(analyzer, "three", "two"); 63
    org.owasp.dependencycheck.data.lucene.VersionAnalyzer Line
    consider implementing payloads/custom attributes... use custom attributes for major, minor, x, x, x, rcx these can then be used to weight the score for searches on the version. see http://lucene.apache.org/core/3_6_1/api/core/org/apache/lucene/analysis/package-summary.html#package_description look at this article to implement http://www.codewrecks.com/blog/index.php/2012/08/25/index-your-blog-using-tags-and-lucene-net/ 37
    org.owasp.dependencycheck.data.lucene.VersionTokenizingFilter Line
    should we also be splitting on dash or underscore? we would need to incorporate the dash or underscore back in... 83
    org.owasp.dependencycheck.data.nvdcve.CveDB Line
    - make it so we can exteralize the database (lucene index is a problem), could I store it as a blob and just download it when needed?166
    consider utilizing the matchThreeVersion method to get additional results. However, this might also introduce false positives.685
    674
    org.owasp.dependencycheck.data.nvdcve.NvdCveAnalyzerorg.owasp.dependencycheck.data.update.DatabaseUpdater Line
    - remove this comment block after additional testing is completed note - valid match functionality has been moved into the CveDB class. // for (Vulnerability v : vulns) { // if (isValidMatch(dependency, v)) { // dependency.addVulnerability(v); // } // }111
    add FTP?296
    - remove this comment block after additional testing is completed The following check has been moved into the CveDB class. // /** // * <p>Determines if this is a valid vulnerability match for the given // * dependency. Specifically, this is concerned with ensuring the version // * numbers are correct.</p> // * <p>Currently, this is focused on the issues with the versions for Struts // * 1 and Struts 2. In the future this will due better matching on more // * version numbers.</p> // * // * @param dependency the dependency // * @param v the vulnerability // * @return returns true if the vulnerability is for the given dependency // */ // private boolean isValidMatch(final Dependency dependency, final Vulnerability v) { // //right now I only know of the issue with Struts1/2 // // start with fixing this problem. // // //TODO extend this solution to do better version matching for the vulnerable software. // boolean struts1 = false; // boolean struts2 = false; // for (Identifier i : dependency.getIdentifiers()) { // if (i.getValue().startsWith("cpe:/a:apache:struts:")) { // final char version = i.getValue().charAt(21); // if (version == '1') { // struts1 = true; // } // if (version == '2') { // struts2 = true; // } // } // } // if (!struts1 && !struts2) { // return true; //we are not looking at struts, so return true. // } // if (struts1 && struts2) { // return true; //there is a mismatch here, but we can't solve it here so we return valid. // } // if (struts1) { // boolean hasStruts1Vuln = false; // boolean hasStruts2PreviousVersion = false; // for (VulnerableSoftware vs : v.getVulnerableSoftware()) { // //TODO FIX THIS // //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2'; // //hasStruts1Vuln |= vs.getName().charAt(21) == '1'; // } // if (!hasStruts1Vuln && hasStruts2PreviousVersion) { // return false; // } // } // // return true; // }170
    extend this solution to do better version matching for the vulnerable software. // boolean struts1 = false; // boolean struts2 = false; // for (Identifier i : dependency.getIdentifiers()) { // if (i.getValue().startsWith("cpe:/a:apache:struts:")) { // final char version = i.getValue().charAt(21); // if (version == '1') { // struts1 = true; // } // if (version == '2') { // struts2 = true; // } // } // } // if (!struts1 && !struts2) { // return true; //we are not looking at struts, so return true. // } // if (struts1 && struts2) { // return true; //there is a mismatch here, but we can't solve it here so we return valid. // } // if (struts1) { // boolean hasStruts1Vuln = false; // boolean hasStruts2PreviousVersion = false; // for (VulnerableSoftware vs : v.getVulnerableSoftware()) { // //TODO FIX THIS // //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2'; // //hasStruts1Vuln |= vs.getName().charAt(21) == '1'; // } // if (!hasStruts1Vuln && hasStruts2PreviousVersion) { // return false; // } // } // // return true; // }188
    FIX THIS // //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2'; // //hasStruts1Vuln |= vs.getName().charAt(21) == '1'; // } // if (!hasStruts1Vuln && hasStruts2PreviousVersion) { // return false; // } // } // // return true; // }212
    org.owasp.dependencycheck.dependency.EvidenceCollection Line
    consider changing the regex to only compare alpha-numeric (i.e. strip everything else) 244
    org.owasp.dependencycheck.utils.DependencyVersion Line
    steal better version of code from compareTo140
    +140 + +org.owasp.dependencycheck.utils.Downloader +Line + +add the FPR protocol? +132 diff --git a/dependency-check-core/xref-test/allclasses-frame.html b/dependency-check-core/xref-test/allclasses-frame.html index e0e3e7156..f415f0e05 100644 --- a/dependency-check-core/xref-test/allclasses-frame.html +++ b/dependency-check-core/xref-test/allclasses-frame.html @@ -22,12 +22,15 @@
  • BaseDBTestCase +
  • +
  • + BaseIndexTest
  • BaseIndexTestCase
  • - CPEAnalyzerTest + CPEAnalyzerTest
  • ChecksumTest @@ -39,7 +42,13 @@ CweDBTest
  • - DatabaseUpdaterIntegrationTest + DatabaseUpdaterIntegrationTest +
  • +
  • + DatabaseUpdater_1_Test +
  • +
  • + DatabaseUpdater_2_Test
  • DependencyTest @@ -49,9 +58,15 @@
  • DependencyVersionUtilTest +
  • +
  • + DirectorySpinLockTest
  • DownloaderIntegrationTest +
  • +
  • + DownloaderTest
  • EngineIntegrationTest @@ -73,9 +88,6 @@
  • IndexIntegrationTest -
  • -
  • - IndexTest
  • JarAnalyzerTest @@ -84,16 +96,19 @@ LuceneUtilsTest
  • - NvdCve_1_2_HandlerTest + NvdCve_1_2_HandlerTest
  • - NvdCve_2_0_HandlerTest + NvdCve_2_0_HandlerTest
  • ReportGeneratorTest
  • SettingsTest +
  • +
  • + SpinLockTask
  • TokenPairConcatenatingFilterTest diff --git a/dependency-check-core/xref-test/index.html b/dependency-check-core/xref-test/index.html index e08a3b6b6..e259d86e9 100644 --- a/dependency-check-core/xref-test/index.html +++ b/dependency-check-core/xref-test/index.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference + Dependency-Check Core 1.0.2 Reference diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/EngineIntegrationTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/EngineIntegrationTest.html index 44f188fcf..9ac11c4b8 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/EngineIntegrationTest.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/EngineIntegrationTest.html @@ -54,30 +54,29 @@ 44 @Before 45 public void setUp() throws Exception { 46 org.owasp.dependencycheck.data.nvdcve.BaseDBTestCase.ensureDBExists(); -47 org.owasp.dependencycheck.data.cpe.BaseIndexTestCase.ensureIndexExists(); -48 } -49 -50 @After -51 public void tearDown() { -52 } -53 -54 /** -55 * Test of scan method, of class Engine. -56 * -57 * @throws Exception is thrown when an exception occurs. -58 */ -59 @Test -60 public void testScan() throws Exception { -61 String path = "target/test-classes"; -62 Engine instance = new Engine(); -63 instance.scan(path); -64 assertTrue(instance.getDependencies().size() > 0); -65 instance.analyzeDependencies(); -66 ReportGenerator rg = new ReportGenerator("DependencyCheck", -67 instance.getDependencies(), instance.getAnalyzers()); -68 rg.generateReports("./target/", "HTML"); -69 } -70 } +47 } +48 +49 @After +50 public void tearDown() { +51 } +52 +53 /** +54 * Test of scan method, of class Engine. +55 * +56 * @throws Exception is thrown when an exception occurs. +57 */ +58 @Test +59 public void testScan() throws Exception { +60 String testClasses = "target/test-classes"; +61 Engine instance = new Engine(); +62 instance.scan(testClasses); +63 assertTrue(instance.getDependencies().size() > 0); +64 instance.analyzeDependencies(); +65 ReportGenerator rg = new ReportGenerator("DependencyCheck", +66 instance.getDependencies(), instance.getAnalyzers()); +67 rg.generateReports("./target/", "HTML"); +68 } +69 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/ArchiveAnalyzerTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/ArchiveAnalyzerTest.html index 3eb12215d..d3eb5cfb7 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/ArchiveAnalyzerTest.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/ArchiveAnalyzerTest.html @@ -149,7 +149,7 @@ 139 try { 140 instance.initialize(); 141 -142 File file = new File(this.getClass().getClassLoader().getResource("opensso.war").getPath()); +142 File file = new File(this.getClass().getClassLoader().getResource("daytrader-ear-2.1.7.ear").getPath()); 143 Dependency dependency = new Dependency(file); 144 Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, false); 145 Engine engine = new Engine(); @@ -164,7 +164,32 @@ 154 instance.close(); 155 } 156 } -157 } +157 +158 /** +159 * Test of analyze method, of class ArchiveAnalyzer. +160 */ +161 @Test +162 public void testAnalyze_badZip() throws Exception { +163 ArchiveAnalyzer instance = new ArchiveAnalyzer(); +164 try { +165 instance.initialize(); +166 +167 File file = new File(this.getClass().getClassLoader().getResource("test.zip").getPath()); +168 Dependency dependency = new Dependency(file); +169 Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, false); +170 Engine engine = new Engine(); +171 +172 int initial_size = engine.getDependencies().size(); +173 instance.analyze(dependency, engine); +174 int ending_size = engine.getDependencies().size(); +175 +176 assertTrue(initial_size == ending_size); +177 +178 } finally { +179 instance.close(); +180 } +181 } +182 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/CPEAnalyzerTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/CPEAnalyzerTest.html new file mode 100644 index 000000000..a8f779674 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/CPEAnalyzerTest.html @@ -0,0 +1,271 @@ + + + + +CPEAnalyzerTest xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.analyzer;
    +20  
    +21  import org.owasp.dependencycheck.data.cpe.IndexEntry;
    +22  import org.owasp.dependencycheck.analyzer.CPEAnalyzer;
    +23  import java.io.File;
    +24  import java.io.IOException;
    +25  import java.util.HashSet;
    +26  import java.util.List;
    +27  import java.util.Set;
    +28  import org.apache.lucene.index.CorruptIndexException;
    +29  import org.apache.lucene.queryparser.classic.ParseException;
    +30  import org.junit.After;
    +31  import org.junit.AfterClass;
    +32  import org.owasp.dependencycheck.dependency.Dependency;
    +33  import org.junit.Assert;
    +34  import org.junit.Before;
    +35  import org.junit.BeforeClass;
    +36  import org.junit.Test;
    +37  import org.owasp.dependencycheck.data.cpe.BaseIndexTestCase;
    +38  import org.owasp.dependencycheck.data.cpe.IndexEntry;
    +39  import org.owasp.dependencycheck.dependency.Identifier;
    +40  
    +41  /**
    +42   *
    +43   * @author Jeremy Long (jeremy.long@owasp.org)
    +44   */
    +45  public class CPEAnalyzerTest extends BaseIndexTestCase {
    +46  
    +47      @BeforeClass
    +48      public static void setUpClass() throws Exception {
    +49      }
    +50  
    +51      @AfterClass
    +52      public static void tearDownClass() throws Exception {
    +53      }
    +54  
    +55      @Before
    +56      @Override
    +57      public void setUp() throws Exception {
    +58          super.setUp();
    +59      }
    +60  
    +61      @After
    +62      @Override
    +63      public void tearDown() throws Exception {
    +64          super.tearDown();
    +65      }
    +66  
    +67      /**
    +68       * Tests of buildSearch of class CPEAnalyzer.
    +69       *
    +70       * @throws IOException is thrown when an IO Exception occurs.
    +71       * @throws CorruptIndexException is thrown when the index is corrupt.
    +72       * @throws ParseException is thrown when a parse exception occurs
    +73       */
    +74      @Test
    +75      public void testBuildSearch() throws IOException, CorruptIndexException, ParseException {
    +76          Set<String> productWeightings = new HashSet<String>(1);
    +77          productWeightings.add("struts2");
    +78  
    +79          Set<String> vendorWeightings = new HashSet<String>(1);
    +80          vendorWeightings.add("apache");
    +81  
    +82          String vendor = "apache software foundation";
    +83          String product = "struts 2 core";
    +84          String version = "2.1.2";
    +85          CPEAnalyzer instance = new CPEAnalyzer();
    +86  
    +87          String queryText = instance.buildSearch(vendor, product, null, null);
    +88          String expResult = " product:( struts 2 core )  AND  vendor:( apache software foundation ) ";
    +89          Assert.assertTrue(expResult.equals(queryText));
    +90  
    +91          queryText = instance.buildSearch(vendor, product, null, productWeightings);
    +92          expResult = " product:(  struts^5 struts2^5 2 core )  AND  vendor:( apache software foundation ) ";
    +93          Assert.assertTrue(expResult.equals(queryText));
    +94  
    +95          queryText = instance.buildSearch(vendor, product, vendorWeightings, null);
    +96          expResult = " product:( struts 2 core )  AND  vendor:(  apache^5 software foundation ) ";
    +97          Assert.assertTrue(expResult.equals(queryText));
    +98  
    +99          queryText = instance.buildSearch(vendor, product, vendorWeightings, productWeightings);
    +100         expResult = " product:(  struts^5 struts2^5 2 core )  AND  vendor:(  apache^5 software foundation ) ";
    +101         Assert.assertTrue(expResult.equals(queryText));
    +102     }
    +103 
    +104     /**
    +105      * Test of open method, of class CPEAnalyzer.
    +106      *
    +107      * @throws Exception is thrown when an exception occurs
    +108      */
    +109     @Test
    +110     public void testOpen() throws Exception {
    +111         CPEAnalyzer instance = new CPEAnalyzer();
    +112         Assert.assertFalse(instance.isOpen());
    +113         instance.open();
    +114         Assert.assertTrue(instance.isOpen());
    +115         instance.close();
    +116         Assert.assertFalse(instance.isOpen());
    +117     }
    +118 
    +119     /**
    +120      * Test of determineCPE method, of class CPEAnalyzer.
    +121      *
    +122      * @throws Exception is thrown when an exception occurs
    +123      */
    +124     @Test
    +125     public void testDetermineCPE_full() throws Exception {
    +126         callDetermineCPE_full("hazelcast-2.5.jar", null);
    +127         callDetermineCPE_full("spring-context-support-2.5.5.jar", "cpe:/a:vmware:springsource_spring_framework:2.5.5");
    +128         callDetermineCPE_full("spring-core-3.0.0.RELEASE.jar", "cpe:/a:vmware:springsource_spring_framework:3.0.0");
    +129         callDetermineCPE_full("org.mortbay.jetty.jar", "cpe:/a:mortbay_jetty:jetty:4.2");
    +130         callDetermineCPE_full("jaxb-xercesImpl-1.5.jar", null);
    +131         callDetermineCPE_full("ehcache-core-2.2.0.jar", null);
    +132     }
    +133 
    +134     /**
    +135      * Test of determineCPE method, of class CPEAnalyzer.
    +136      *
    +137      * @throws Exception is thrown when an exception occurs
    +138      */
    +139     public void callDetermineCPE_full(String depName, String expResult) throws Exception {
    +140 
    +141         File file = new File(this.getClass().getClassLoader().getResource(depName).getPath());
    +142 
    +143         Dependency dep = new Dependency(file);
    +144 
    +145         FileNameAnalyzer fnAnalyzer = new FileNameAnalyzer();
    +146         fnAnalyzer.analyze(dep, null);
    +147 
    +148         JarAnalyzer jarAnalyzer = new JarAnalyzer();
    +149         jarAnalyzer.analyze(dep, null);
    +150         HintAnalyzer hAnalyzer = new HintAnalyzer();
    +151         hAnalyzer.analyze(dep, null);
    +152 
    +153 
    +154         CPEAnalyzer instance = new CPEAnalyzer();
    +155         instance.open();
    +156         instance.analyze(dep, null);
    +157         instance.close();
    +158         FalsePositiveAnalyzer fp = new FalsePositiveAnalyzer();
    +159         fp.analyze(dep, null);
    +160 
    +161 //        for (Identifier i : dep.getIdentifiers()) {
    +162 //            System.out.println(i.getValue());
    +163 //        }
    +164         if (expResult != null) {
    +165             Identifier expIdentifier = new Identifier("cpe", expResult, expResult);
    +166             Assert.assertTrue("Incorrect match: { dep:'" + dep.getFileName() + "' }", dep.getIdentifiers().contains(expIdentifier));
    +167         } else if (dep.getIdentifiers().isEmpty()) {
    +168             Assert.assertTrue("Match found when an Identifier should not have been found: { dep:'" + dep.getFileName() + "' }", dep.getIdentifiers().isEmpty());
    +169         } else {
    +170             Assert.assertTrue("Match found when an Identifier should not have been found: { dep:'" + dep.getFileName() + "', identifier:'" + dep.getIdentifiers().iterator().next().getValue() + "' }", dep.getIdentifiers().isEmpty());
    +171         }
    +172     }
    +173 
    +174     /**
    +175      * Test of determineCPE method, of class CPEAnalyzer.
    +176      *
    +177      * @throws Exception is thrown when an exception occurs
    +178      */
    +179     @Test
    +180     public void testDetermineCPE() throws Exception {
    +181         File file = new File(this.getClass().getClassLoader().getResource("struts2-core-2.1.2.jar").getPath());
    +182         //File file = new File(this.getClass().getClassLoader().getResource("axis2-adb-1.4.1.jar").getPath());
    +183         Dependency struts = new Dependency(file);
    +184 
    +185         FileNameAnalyzer fnAnalyzer = new FileNameAnalyzer();
    +186         fnAnalyzer.analyze(struts, null);
    +187 
    +188         JarAnalyzer jarAnalyzer = new JarAnalyzer();
    +189         jarAnalyzer.analyze(struts, null);
    +190 
    +191 
    +192         File fileCommonValidator = new File(this.getClass().getClassLoader().getResource("commons-validator-1.4.0.jar").getPath());
    +193         Dependency commonValidator = new Dependency(fileCommonValidator);
    +194         jarAnalyzer.analyze(commonValidator, null);
    +195 
    +196         File fileSpring = new File(this.getClass().getClassLoader().getResource("spring-core-2.5.5.jar").getPath());
    +197         Dependency spring = new Dependency(fileSpring);
    +198         jarAnalyzer.analyze(spring, null);
    +199 
    +200         File fileSpring3 = new File(this.getClass().getClassLoader().getResource("spring-core-3.0.0.RELEASE.jar").getPath());
    +201         Dependency spring3 = new Dependency(fileSpring3);
    +202         jarAnalyzer.analyze(spring3, null);
    +203 
    +204         CPEAnalyzer instance = new CPEAnalyzer();
    +205         instance.open();
    +206         instance.determineCPE(commonValidator);
    +207         instance.determineCPE(struts);
    +208         instance.determineCPE(spring);
    +209         instance.determineCPE(spring3);
    +210         instance.close();
    +211 
    +212         String expResult = "cpe:/a:apache:struts:2.1.2";
    +213         Identifier expIdentifier = new Identifier("cpe", expResult, expResult);
    +214         String expResultSpring = "cpe:/a:springsource:spring_framework:2.5.5";
    +215         String expResultSpring3 = "cpe:/a:vmware:springsource_spring_framework:3.0.0";
    +216 
    +217         Assert.assertTrue("Apache Common Validator - found an identifier?", commonValidator.getIdentifiers().isEmpty());
    +218         Assert.assertTrue("Incorrect match size - struts", struts.getIdentifiers().size() >= 1);
    +219         Assert.assertTrue("Incorrect match - struts", struts.getIdentifiers().contains(expIdentifier));
    +220         Assert.assertTrue("Incorrect match size - spring3 - " + spring3.getIdentifiers().size(), spring3.getIdentifiers().size() >= 1);
    +221 
    +222         //the following two only work if the HintAnalyzer is used.
    +223         //Assert.assertTrue("Incorrect match size - spring", spring.getIdentifiers().size() == 1);
    +224         //Assert.assertTrue("Incorrect match - spring", spring.getIdentifiers().get(0).getValue().equals(expResultSpring));
    +225 
    +226     }
    +227 
    +228     /**
    +229      * Test of searchCPE method, of class CPEAnalyzer.
    +230      *
    +231      * @throws Exception is thrown when an exception occurs
    +232      */
    +233     @Test
    +234     public void testSearchCPE() throws Exception {
    +235         String vendor = "apache software foundation";
    +236         String product = "struts 2 core";
    +237         String version = "2.1.2";
    +238         String expResult = "cpe:/a:apache:struts:2.1.2";
    +239 
    +240         CPEAnalyzer instance = new CPEAnalyzer();
    +241         instance.open();
    +242 
    +243         //TODO - yeah, not a very good test as the results are the same with or without weighting...
    +244         Set<String> productWeightings = new HashSet<String>(1);
    +245         productWeightings.add("struts2");
    +246 
    +247         Set<String> vendorWeightings = new HashSet<String>(1);
    +248         vendorWeightings.add("apache");
    +249 
    +250         List<IndexEntry> result = instance.searchCPE(vendor, product, productWeightings, vendorWeightings);
    +251         //TODO fix this assert
    +252         //Assert.assertEquals(expResult, result.get(0).getName());
    +253 
    +254 
    +255         instance.close();
    +256     }
    +257 }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/JarAnalyzerTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/JarAnalyzerTest.html index 5870b3d8b..4c0018846 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/JarAnalyzerTest.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/JarAnalyzerTest.html @@ -128,45 +128,46 @@ 118 JarAnalyzer instance = new JarAnalyzer(); 119 Set expResult = new HashSet(); 120 expResult.add("jar"); -121 Set result = instance.getSupportedExtensions(); -122 assertEquals(expResult, result); -123 } -124 -125 /** -126 * Test of getName method, of class JarAnalyzer. -127 */ -128 @Test -129 public void testGetName() { -130 JarAnalyzer instance = new JarAnalyzer(); -131 String expResult = "Jar Analyzer"; -132 String result = instance.getName(); -133 assertEquals(expResult, result); -134 } -135 -136 /** -137 * Test of supportsExtension method, of class JarAnalyzer. -138 */ -139 @Test -140 public void testSupportsExtension() { -141 String extension = "jar"; -142 JarAnalyzer instance = new JarAnalyzer(); -143 boolean expResult = true; -144 boolean result = instance.supportsExtension(extension); -145 assertEquals(expResult, result); -146 } -147 -148 @Test -149 public void testInterpolateString() { -150 Properties prop = new Properties(); -151 prop.setProperty("key", "value"); -152 prop.setProperty("nested", "nested ${key}"); -153 String text = "This is a test of '${key}' '${nested}'"; -154 String expResults = "This is a test of 'value' 'nested value'"; -155 JarAnalyzer instance = new JarAnalyzer(); -156 String results = instance.interpolateString(text, prop); -157 assertEquals(expResults, results); -158 } -159 } +121 expResult.add("war"); +122 Set result = instance.getSupportedExtensions(); +123 assertEquals(expResult, result); +124 } +125 +126 /** +127 * Test of getName method, of class JarAnalyzer. +128 */ +129 @Test +130 public void testGetName() { +131 JarAnalyzer instance = new JarAnalyzer(); +132 String expResult = "Jar Analyzer"; +133 String result = instance.getName(); +134 assertEquals(expResult, result); +135 } +136 +137 /** +138 * Test of supportsExtension method, of class JarAnalyzer. +139 */ +140 @Test +141 public void testSupportsExtension() { +142 String extension = "jar"; +143 JarAnalyzer instance = new JarAnalyzer(); +144 boolean expResult = true; +145 boolean result = instance.supportsExtension(extension); +146 assertEquals(expResult, result); +147 } +148 +149 @Test +150 public void testInterpolateString() { +151 Properties prop = new Properties(); +152 prop.setProperty("key", "value"); +153 prop.setProperty("nested", "nested ${key}"); +154 String text = "This is a test of '${key}' '${nested}'"; +155 String expResults = "This is a test of 'value' 'nested value'"; +156 JarAnalyzer instance = new JarAnalyzer(); +157 String results = instance.interpolateString(text, prop); +158 assertEquals(expResults, results); +159 } +160 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-frame.html index aeb6c99e3..98b9922a6 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.analyzer + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.analyzer @@ -23,6 +23,9 @@
  • ArchiveAnalyzerTest +
  • +
  • + CPEAnalyzerTest
  • FileNameAnalyzerTest diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-summary.html index f9eb7cc59..cf5daf799 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/analyzer/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.analyzer + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.analyzer @@ -49,6 +49,11 @@ ArchiveAnalyzerTest + + + + CPEAnalyzerTest + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/DirectorySpinLockTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/DirectorySpinLockTest.html new file mode 100644 index 000000000..bb9add306 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/DirectorySpinLockTest.html @@ -0,0 +1,130 @@ + + + + +DirectorySpinLockTest xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.concurrency;
    +20  
    +21  import java.io.File;
    +22  import java.net.URL;
    +23  import org.junit.After;
    +24  import org.junit.AfterClass;
    +25  import org.junit.Before;
    +26  import org.junit.BeforeClass;
    +27  import org.junit.Test;
    +28  import static org.junit.Assert.*;
    +29  
    +30  /**
    +31   *
    +32   * @author Jeremy Long (jeremy.long@owasp.org)
    +33   */
    +34  public class DirectorySpinLockTest {
    +35  
    +36      public DirectorySpinLockTest() {
    +37      }
    +38  
    +39      @BeforeClass
    +40      public static void setUpClass() {
    +41      }
    +42  
    +43      @AfterClass
    +44      public static void tearDownClass() {
    +45      }
    +46  
    +47      @Before
    +48      public void setUp() {
    +49      }
    +50  
    +51      @After
    +52      public void tearDown() {
    +53      }
    +54  
    +55      /**
    +56       * Test of obtainSharedLock method, of class DirectorySpinLock.
    +57       * Specifically, this test uses the SpinLockTask to obtain an exclusive lock
    +58       * that is held for 5 seconds. We then try to obtain a shared lock while
    +59       * that task is running. It should take longer then 5 seconds to obtain the
    +60       * shared lock.
    +61       */
    +62      @Test
    +63      public void testObtainSharedLock_withContention() throws Exception {
    +64          URL location = this.getClass().getProtectionDomain().getCodeSource().getLocation();
    +65          File directory = new File(location.getFile());
    +66          DirectorySpinLock instance = new DirectorySpinLock(directory);
    +67          SpinLockTask task = new SpinLockTask(directory, 5000, false, 2);
    +68          long start = System.currentTimeMillis();
    +69          task.run();
    +70          instance.obtainSharedLock();
    +71          long end = System.currentTimeMillis();
    +72          instance.close();
    +73          if (task.getException() != null) {
    +74              throw task.getException();
    +75          }
    +76          long timeElapsed = end - start;
    +77          assertTrue("no lock contention occured?", timeElapsed >= 5000);
    +78          //no exceptions means everything worked.
    +79      }
    +80  
    +81      /**
    +82       * Test of obtainSharedLock method, of class DirectorySpinLock. This method
    +83       * obtains two shared locks by using the SpinLockTask to obtain a lock in
    +84       * another thread.
    +85       */
    +86      @Test
    +87      public void testObtainSharedLock() throws Exception {
    +88          URL location = this.getClass().getProtectionDomain().getCodeSource().getLocation();
    +89          File directory = new File(location.getFile());
    +90          DirectorySpinLock instance = new DirectorySpinLock(directory);
    +91          SpinLockTask task = new SpinLockTask(directory, 1000, true, 2);
    +92          task.run();
    +93          instance.obtainSharedLock();
    +94          instance.close();
    +95          if (task.getException() != null) {
    +96              throw task.getException();
    +97          }
    +98          //no exceptions means everything worked.
    +99      }
    +100 
    +101     /**
    +102      * Test of obtainExclusiveLock method, of class DirectorySpinLock.
    +103      */
    +104     @Test
    +105     public void testObtainExclusiveLock() throws Exception {
    +106         URL location = this.getClass().getProtectionDomain().getCodeSource().getLocation();
    +107         File directory = new File(location.getFile());
    +108         DirectorySpinLock instance = new DirectorySpinLock(directory);
    +109         SpinLockTask task = new SpinLockTask(directory, 1000, true, 1);
    +110         instance.obtainExclusiveLock();
    +111         task.run();
    +112         instance.close();
    +113         assertNotNull("No exception thrown due to exclusive lock failure?", task.getException());
    +114         assertEquals("Incorrect exception when obtaining exclusive lock", "Unable to obtain lock", task.getException().getMessage());
    +115     }
    +116 }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/SpinLockTask.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/SpinLockTask.html new file mode 100644 index 000000000..5e5ff13ff --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/SpinLockTask.html @@ -0,0 +1,98 @@ + + + + +SpinLockTask xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.concurrency;
    +20  
    +21  import java.io.File;
    +22  import java.io.IOException;
    +23  import java.util.logging.Level;
    +24  import java.util.logging.Logger;
    +25  
    +26  /**
    +27   * A simple task that obtains a lock on a directory. This is used in testing of
    +28   * the shared and exclusive locks.
    +29   *
    +30   * @author Jeremy Long (jeremy.long@owasp.org)
    +31   */
    +32  public class SpinLockTask implements Runnable {
    +33  
    +34      DirectorySpinLock lock = null;
    +35      int holdLockFor;
    +36      long maxWait;
    +37      boolean shared;
    +38      private Exception exception = null;
    +39  
    +40      /**
    +41       * Get the value of exception
    +42       *
    +43       * @return the value of exception
    +44       */
    +45      public Exception getException() {
    +46          return exception;
    +47      }
    +48  
    +49      /**
    +50       * Set the value of exception
    +51       *
    +52       * @param exception new value of exception
    +53       */
    +54      public void setException(Exception exception) {
    +55          this.exception = exception;
    +56      }
    +57  
    +58      public SpinLockTask(File directory, int holdLockFor, boolean shared, long maxWait) throws InvalidDirectoryException, DirectoryLockException {
    +59          this.holdLockFor = holdLockFor;
    +60          this.shared = shared;
    +61          this.maxWait = maxWait;
    +62          lock = new DirectorySpinLock(directory);
    +63      }
    +64  
    +65      @Override
    +66      public void run() {
    +67          try {
    +68              lock.obtainLock(shared, maxWait);
    +69              Thread.sleep(holdLockFor);
    +70          } catch (DirectoryLockException ex) {
    +71              exception = ex;
    +72          } catch (InterruptedException ex) {
    +73              exception = ex;
    +74          } finally {
    +75              if (lock != null) {
    +76                  try {
    +77                      lock.close();
    +78                  } catch (IOException ex) {
    +79                      exception = ex;
    +80                  }
    +81              }
    +82          }
    +83      }
    +84  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/package-frame.html new file mode 100644 index 000000000..57cf0244c --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/package-frame.html @@ -0,0 +1,27 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.concurrency + + + + +

    + org.owasp.dependencycheck.concurrency +

    + +

    Classes

    + + + + + \ No newline at end of file diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/package-summary.html new file mode 100644 index 000000000..f3095efb4 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/concurrency/package-summary.html @@ -0,0 +1,72 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.concurrency + + + +
    + +
    +
    + +
    + +

    Package org.owasp.dependencycheck.concurrency

    + + + + + + + + + + + + + + + +
    Class Summary
    + DirectorySpinLockTest +
    + SpinLockTask +
    + +
    + +
    +
    + +
    +
    + Copyright © 2012-2013 OWASP. All Rights Reserved. + + \ No newline at end of file diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/BaseIndexTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/BaseIndexTest.html new file mode 100644 index 000000000..c8b547b73 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/BaseIndexTest.html @@ -0,0 +1,77 @@ + + + + +BaseIndexTest xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.cpe;
    +20  
    +21  import org.owasp.dependencycheck.data.cpe.BaseIndex;
    +22  import java.io.File;
    +23  import org.junit.After;
    +24  import org.junit.AfterClass;
    +25  import org.junit.Before;
    +26  import org.junit.BeforeClass;
    +27  import org.junit.Test;
    +28  import static org.junit.Assert.*;
    +29  
    +30  /**
    +31   *
    +32   * @author Jeremy Long (jeremy.long@owasp.org)
    +33   */
    +34  public class BaseIndexTest {
    +35  
    +36      @BeforeClass
    +37      public static void setUpClass() throws Exception {
    +38      }
    +39  
    +40      @AfterClass
    +41      public static void tearDownClass() throws Exception {
    +42      }
    +43  
    +44      @Before
    +45      public void setUp() {
    +46      }
    +47  
    +48      @After
    +49      public void tearDown() {
    +50      }
    +51  
    +52      /**
    +53       * Test of getDataDirectory method, of class BaseIndex.
    +54       *
    +55       * @throws Exception
    +56       */
    +57      @Test
    +58      public void testGetDataDirectory() throws Exception {
    +59          String file = BaseIndex.getDataDirectory().getPath();
    +60          String exp = File.separatorChar + "target" + File.separatorChar + "data" + File.separatorChar + "cpe";
    +61          assertTrue(file.contains(exp));
    +62      }
    +63  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.html index 978d1acef..736423a4d 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.html @@ -28,125 +28,40 @@ 18 */ 19 package org.owasp.dependencycheck.data.cpe; 20 -21 import java.io.BufferedInputStream; -22 import java.io.BufferedOutputStream; -23 import java.io.File; -24 import java.io.FileInputStream; -25 import java.io.FileOutputStream; -26 import java.io.IOException; -27 import java.util.logging.Level; -28 import java.util.logging.Logger; -29 import java.util.zip.ZipEntry; -30 import java.util.zip.ZipInputStream; -31 import org.junit.After; -32 import org.junit.AfterClass; -33 import org.junit.Before; -34 import org.junit.BeforeClass; -35 import org.owasp.dependencycheck.data.nvdcve.BaseDBTestCase; -36 import org.owasp.dependencycheck.utils.Settings; +21 import junit.framework.TestCase; +22 import org.junit.After; +23 import org.junit.AfterClass; +24 import org.junit.Before; +25 import org.junit.BeforeClass; +26 import org.owasp.dependencycheck.data.nvdcve.BaseDBTestCase; +27 +28 /** +29 * +30 * @author Jeremy Long (jeremy.long@owasp.org) +31 */ +32 public abstract class BaseIndexTestCase extends TestCase { +33 +34 @BeforeClass +35 public static void setUpClass() throws Exception { +36 } 37 -38 /** -39 * -40 * @author Jeremy Long (jeremy.long@owasp.org) -41 */ -42 public abstract class BaseIndexTestCase { -43 -44 protected static final int BUFFER_SIZE = 2048; -45 -46 @BeforeClass -47 public static void setUpClass() throws Exception { -48 } -49 -50 @AfterClass -51 public static void tearDownClass() throws Exception { -52 } -53 -54 @Before -55 public void setUp() throws Exception { -56 ensureIndexExists(); -57 BaseDBTestCase.ensureDBExists(); -58 } -59 -60 @After -61 public void tearDown() throws Exception { -62 } -63 -64 protected static File getDataDirectory() throws IOException { -65 final String fileName = Settings.getString(Settings.KEYS.CPE_DATA_DIRECTORY); -66 final String dataDirectory = Settings.getString(Settings.KEYS.DATA_DIRECTORY); -67 return new File(dataDirectory, fileName); -68 //return FileUtils.getDataDirectory(fileName, Index.class); -69 } -70 -71 public static void ensureIndexExists() throws Exception { -72 //String indexPath = Settings.getString(Settings.KEYS.CPE_DATA_DIRECTORY); -73 String indexPath = getDataDirectory().getCanonicalPath(); -74 java.io.File f = new File(indexPath); -75 -76 if (!f.exists() || (f.isDirectory() && f.listFiles().length == 0)) { -77 f.mkdirs(); -78 FileInputStream fis = null; -79 ZipInputStream zin = null; -80 try { -81 File path = new File(BaseIndexTestCase.class.getClassLoader().getResource("index.cpe.zip").getPath()); -82 fis = new FileInputStream(path); -83 zin = new ZipInputStream(new BufferedInputStream(fis)); -84 ZipEntry entry; -85 while ((entry = zin.getNextEntry()) != null) { -86 if (entry.isDirectory()) { -87 continue; -88 } -89 FileOutputStream fos = null; -90 BufferedOutputStream dest = null; -91 try { -92 File o = new File(indexPath, entry.getName()); -93 o.createNewFile(); -94 fos = new FileOutputStream(o, false); -95 dest = new BufferedOutputStream(fos, BUFFER_SIZE); -96 byte data[] = new byte[BUFFER_SIZE]; -97 int count; -98 while ((count = zin.read(data, 0, BUFFER_SIZE)) != -1) { -99 dest.write(data, 0, count); -100 } -101 } catch (Exception ex) { -102 Logger.getLogger(BaseIndexTestCase.class.getName()).log(Level.FINEST, null, ex); -103 } finally { -104 if (dest != null) { -105 try { -106 dest.flush(); -107 dest.close(); -108 } catch (Throwable ex) { -109 Logger.getLogger(BaseIndexTestCase.class.getName()).log(Level.FINEST, null, ex); -110 } -111 } -112 if (fos != null) { -113 try { -114 fos.close(); -115 } catch (Throwable ex) { -116 Logger.getLogger(BaseIndexTestCase.class.getName()).log(Level.FINEST, null, ex); -117 } -118 } -119 } -120 } -121 } finally { -122 try { -123 if (zin != null) { -124 zin.close(); -125 } -126 } catch (Throwable ex) { -127 Logger.getLogger(BaseIndexTestCase.class.getName()).log(Level.FINEST, null, ex); -128 } -129 try { -130 if (fis != null) { -131 fis.close(); -132 } -133 } catch (Throwable ex) { -134 Logger.getLogger(BaseIndexTestCase.class.getName()).log(Level.FINEST, null, ex); -135 } -136 } -137 } -138 } -139 } +38 @AfterClass +39 public static void tearDownClass() throws Exception { +40 } +41 +42 @Before +43 @Override +44 public void setUp() throws Exception { +45 BaseDBTestCase.ensureDBExists(); +46 super.setUp(); +47 } +48 +49 @After +50 @Override +51 public void tearDown() throws Exception { +52 super.tearDown(); +53 } +54 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/IndexEntryTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/IndexEntryTest.html index d3746ed75..ffa8085cf 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/IndexEntryTest.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/IndexEntryTest.html @@ -29,51 +29,56 @@ 19 package org.owasp.dependencycheck.data.cpe; 20 21 import org.owasp.dependencycheck.data.cpe.IndexEntry; -22 import org.junit.After; -23 import org.junit.AfterClass; -24 import org.junit.Before; -25 import org.junit.BeforeClass; -26 import org.junit.Test; -27 import org.junit.Assert; -28 -29 /** -30 * -31 * @author Jeremy Long (jeremy.long@owasp.org) -32 */ -33 public class IndexEntryTest { -34 -35 @BeforeClass -36 public static void setUpClass() throws Exception { -37 } -38 -39 @AfterClass -40 public static void tearDownClass() throws Exception { -41 } -42 -43 @Before -44 public void setUp() { -45 } -46 -47 @After -48 public void tearDown() { -49 } -50 -51 /** -52 * Test of setName method, of class IndexEntry. -53 * -54 * @throws Exception is thrown when an exception occurs. -55 */ -56 @Test -57 public void testSetName() throws Exception { -58 String name = "cpe:/a:apache:struts:1.1:rc2"; -59 -60 IndexEntry instance = new IndexEntry(); -61 instance.parseName(name); -62 -63 Assert.assertEquals("apache", instance.getVendor()); -64 Assert.assertEquals("struts", instance.getProduct()); -65 } -66 } +22 import junit.framework.TestCase; +23 import org.junit.After; +24 import org.junit.AfterClass; +25 import org.junit.Before; +26 import org.junit.BeforeClass; +27 import org.junit.Test; +28 import org.junit.Assert; +29 +30 /** +31 * +32 * @author Jeremy Long (jeremy.long@owasp.org) +33 */ +34 public class IndexEntryTest extends TestCase { +35 +36 @BeforeClass +37 public static void setUpClass() throws Exception { +38 } +39 +40 @AfterClass +41 public static void tearDownClass() throws Exception { +42 } +43 +44 @Before +45 @Override +46 public void setUp() throws Exception { +47 super.setUp(); +48 } +49 +50 @After +51 @Override +52 public void tearDown() throws Exception { +53 super.tearDown(); +54 } +55 +56 /** +57 * Test of setName method, of class IndexEntry. +58 * +59 * @throws Exception is thrown when an exception occurs. +60 */ +61 @Test +62 public void testSetName() throws Exception { +63 String name = "cpe:/a:apache:struts:1.1:rc2"; +64 +65 IndexEntry instance = new IndexEntry(); +66 instance.parseName(name); +67 +68 Assert.assertEquals("apache", instance.getVendor()); +69 Assert.assertEquals("struts", instance.getProduct()); +70 } +71 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-frame.html index 26c27024a..a57e66390 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cpe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cpe @@ -16,19 +16,16 @@ diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-summary.html index 4fa324c42..57c7dae60 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cpe/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cpe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cpe @@ -37,12 +37,12 @@ - BaseIndexTestCase + BaseIndexTest - CPEAnalyzerTest + BaseIndexTestCase @@ -54,11 +54,6 @@ IndexIntegrationTest - - - - IndexTest - diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-frame.html index bea2aa536..d32dd03d1 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cwe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cwe diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-summary.html index 9b1b5b6cd..7013cb72a 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/cwe/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cwe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cwe diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-frame.html index 6a4439363..0d0f1d222 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.lucene + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.lucene diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-summary.html index b9deef1b6..e152f5908 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/lucene/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.lucene + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.lucene diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.html index f8f7f436c..fa5864f33 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.html @@ -40,95 +40,92 @@ 30 import java.util.zip.ZipEntry; 31 import java.util.zip.ZipInputStream; 32 import junit.framework.TestCase; -33 import org.owasp.dependencycheck.utils.Settings; -34 -35 /** -36 * -37 * @author Jeremy Long (jeremy.long@owasp.org) -38 */ -39 public abstract class BaseDBTestCase extends TestCase { -40 -41 protected final static int BUFFER_SIZE = 2048; -42 -43 @Override -44 protected void setUp() throws Exception { -45 super.setUp(); -46 ensureDBExists(); -47 } -48 -49 protected static File getDataDirectory() throws IOException { -50 final String fileName = Settings.getString(Settings.KEYS.CVE_DATA_DIRECTORY); -51 final String dataDirectory = Settings.getString(Settings.KEYS.DATA_DIRECTORY); -52 return new File(dataDirectory, fileName); -53 } -54 -55 public static void ensureDBExists() throws Exception { -56 String indexPath = getDataDirectory().getCanonicalPath(); -57 java.io.File f = new File(indexPath); -58 if (!f.exists() || (f.isDirectory() && f.listFiles().length == 0)) { -59 f.mkdirs(); -60 FileInputStream fis = null; -61 ZipInputStream zin = null; -62 try { -63 File path = new File(BaseDBTestCase.class.getClassLoader().getResource("db.cve.zip").getPath()); -64 fis = new FileInputStream(path); -65 zin = new ZipInputStream(new BufferedInputStream(fis)); -66 ZipEntry entry; -67 while ((entry = zin.getNextEntry()) != null) { -68 if (entry.isDirectory()) { -69 continue; -70 } -71 FileOutputStream fos = null; -72 BufferedOutputStream dest = null; -73 try { -74 File o = new File(indexPath, entry.getName()); -75 o.createNewFile(); -76 fos = new FileOutputStream(o, false); -77 dest = new BufferedOutputStream(fos, BUFFER_SIZE); -78 byte data[] = new byte[BUFFER_SIZE]; -79 int count; -80 while ((count = zin.read(data, 0, BUFFER_SIZE)) != -1) { -81 dest.write(data, 0, count); -82 } -83 } catch (Exception ex) { -84 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); -85 } finally { -86 try { -87 if (dest != null) { -88 dest.flush(); -89 dest.close(); -90 } -91 } catch (Throwable ex) { -92 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); -93 } -94 try { -95 if (fos != null) { -96 fos.close(); -97 } -98 } catch (Throwable ex) { -99 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); -100 } -101 } -102 } -103 } finally { -104 try { -105 if (zin != null) { -106 zin.close(); -107 } -108 } catch (Throwable ex) { -109 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); -110 } -111 try { -112 if (fis != null) { -113 fis.close(); -114 } -115 } catch (Throwable ex) { -116 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); -117 } -118 } -119 } -120 } -121 } +33 import org.owasp.dependencycheck.data.update.DataStoreMetaInfo; +34 import org.owasp.dependencycheck.utils.Settings; +35 +36 /** +37 * +38 * @author Jeremy Long (jeremy.long@owasp.org) +39 */ +40 public abstract class BaseDBTestCase extends TestCase { +41 +42 protected final static int BUFFER_SIZE = 2048; +43 +44 @Override +45 protected void setUp() throws Exception { +46 super.setUp(); +47 ensureDBExists(); +48 } +49 +50 public static void ensureDBExists() throws Exception { +51 +52 java.io.File dataPath = Settings.getFile(Settings.KEYS.DATA_DIRECTORY); +53 if (!dataPath.exists() || (dataPath.isDirectory() && dataPath.listFiles().length < 3)) { +54 dataPath.mkdirs(); +55 FileInputStream fis = null; +56 ZipInputStream zin = null; +57 try { +58 File path = new File(BaseDBTestCase.class.getClassLoader().getResource("data.zip").getPath()); +59 fis = new FileInputStream(path); +60 zin = new ZipInputStream(new BufferedInputStream(fis)); +61 ZipEntry entry; +62 while ((entry = zin.getNextEntry()) != null) { +63 if (entry.isDirectory()) { +64 final File d = new File(dataPath, entry.getName()); +65 d.mkdir(); +66 continue; +67 } +68 FileOutputStream fos = null; +69 BufferedOutputStream dest = null; +70 try { +71 File o = new File(dataPath, entry.getName()); +72 o.createNewFile(); +73 fos = new FileOutputStream(o, false); +74 dest = new BufferedOutputStream(fos, BUFFER_SIZE); +75 byte data[] = new byte[BUFFER_SIZE]; +76 int count; +77 while ((count = zin.read(data, 0, BUFFER_SIZE)) != -1) { +78 dest.write(data, 0, count); +79 } +80 } catch (Exception ex) { +81 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.SEVERE, null, ex); +82 } finally { +83 try { +84 if (dest != null) { +85 dest.flush(); +86 dest.close(); +87 } +88 } catch (Throwable ex) { +89 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); +90 } +91 try { +92 if (fos != null) { +93 fos.close(); +94 } +95 } catch (Throwable ex) { +96 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); +97 } +98 } +99 } +100 } finally { +101 try { +102 if (zin != null) { +103 zin.close(); +104 } +105 } catch (Throwable ex) { +106 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); +107 } +108 try { +109 if (fis != null) { +110 fis.close(); +111 } +112 } catch (Throwable ex) { +113 Logger.getLogger(BaseDBTestCase.class.getName()).log(Level.FINEST, null, ex); +114 } +115 } +116 } +117 } +118 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/NvdCve_1_2_HandlerTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/NvdCve_1_2_HandlerTest.html new file mode 100644 index 000000000..43de1357a --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/NvdCve_1_2_HandlerTest.html @@ -0,0 +1,86 @@ + + + + +NvdCve_1_2_HandlerTest xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.nvdcve;
    +20  
    +21  import org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler;
    +22  import java.io.File;
    +23  import java.util.List;
    +24  import java.util.Map;
    +25  import javax.xml.parsers.SAXParser;
    +26  import javax.xml.parsers.SAXParserFactory;
    +27  import org.owasp.dependencycheck.dependency.VulnerableSoftware;
    +28  import org.junit.After;
    +29  import org.junit.AfterClass;
    +30  import org.junit.Before;
    +31  import org.junit.BeforeClass;
    +32  import org.junit.Test;
    +33  import static org.junit.Assert.*;
    +34  
    +35  /**
    +36   *
    +37   * @author Jeremy Long (jeremy.long@owasp.org)
    +38   */
    +39  public class NvdCve_1_2_HandlerTest {
    +40  
    +41      public NvdCve_1_2_HandlerTest() {
    +42      }
    +43  
    +44      @BeforeClass
    +45      public static void setUpClass() throws Exception {
    +46      }
    +47  
    +48      @AfterClass
    +49      public static void tearDownClass() throws Exception {
    +50      }
    +51  
    +52      @Before
    +53      public void setUp() {
    +54      }
    +55  
    +56      @After
    +57      public void tearDown() {
    +58      }
    +59  
    +60      @Test
    +61      public void testParse() throws Exception {
    +62          SAXParserFactory factory = SAXParserFactory.newInstance();
    +63          SAXParser saxParser = factory.newSAXParser();
    +64  
    +65          File file = new File(this.getClass().getClassLoader().getResource("nvdcve-2012.xml").getPath());
    +66  
    +67          NvdCve12Handler instance = new NvdCve12Handler();
    +68          saxParser.parse(file, instance);
    +69          Map<String, List<VulnerableSoftware>> results = instance.getVulnerabilities();
    +70          assertTrue("No vulnerable software identified with a previous version in 2012 CVE 1.2?", !results.isEmpty());
    +71      }
    +72  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/NvdCve_2_0_HandlerTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/NvdCve_2_0_HandlerTest.html new file mode 100644 index 000000000..1b5724544 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/NvdCve_2_0_HandlerTest.html @@ -0,0 +1,92 @@ + + + + +NvdCve_2_0_HandlerTest xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.nvdcve;
    +20  
    +21  import org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler;
    +22  import java.io.File;
    +23  import javax.xml.parsers.SAXParser;
    +24  import javax.xml.parsers.SAXParserFactory;
    +25  import org.junit.After;
    +26  import org.junit.AfterClass;
    +27  import org.junit.Before;
    +28  import org.junit.BeforeClass;
    +29  import org.junit.Test;
    +30  import static org.junit.Assert.*;
    +31  
    +32  /**
    +33   *
    +34   * @author Jeremy Long (jeremy.long@owasp.org)
    +35   */
    +36  public class NvdCve_2_0_HandlerTest {
    +37  
    +38      public NvdCve_2_0_HandlerTest() {
    +39      }
    +40  
    +41      @BeforeClass
    +42      public static void setUpClass() throws Exception {
    +43      }
    +44  
    +45      @AfterClass
    +46      public static void tearDownClass() throws Exception {
    +47      }
    +48  
    +49      @Before
    +50      public void setUp() {
    +51      }
    +52  
    +53      @After
    +54      public void tearDown() {
    +55      }
    +56  
    +57      @Test
    +58      public void testParse() {
    +59          Exception results = null;
    +60          try {
    +61              SAXParserFactory factory = SAXParserFactory.newInstance();
    +62              SAXParser saxParser = factory.newSAXParser();
    +63  
    +64              File file = new File(this.getClass().getClassLoader().getResource("nvdcve-2.0-2012.xml").getPath());
    +65  
    +66              NvdCve20Handler instance = new NvdCve20Handler();
    +67  
    +68              saxParser.parse(file, instance);
    +69          } catch (Exception ex) {
    +70              results = ex;
    +71          }
    +72          assertTrue("Exception thrown during parse of 2012 CVE version 2.0?", results == null);
    +73          if (results != null) {
    +74              System.err.println(results);
    +75          }
    +76  
    +77      }
    +78  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-frame.html index 6e6aa4614..500edbe64 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.nvdcve + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.nvdcve @@ -20,6 +20,12 @@
  • CveDBTest +
  • +
  • + NvdCve_1_2_HandlerTest +
  • +
  • + NvdCve_2_0_HandlerTest
  • diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-summary.html index 2d271b7e3..8c54120b7 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/nvdcve/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.nvdcve + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.nvdcve @@ -44,6 +44,16 @@ CveDBTest + + + + NvdCve_1_2_HandlerTest + + + + + NvdCve_2_0_HandlerTest + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdaterIntegrationTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdaterIntegrationTest.html new file mode 100644 index 000000000..5280d5c2c --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdaterIntegrationTest.html @@ -0,0 +1,80 @@ + + + + +DatabaseUpdaterIntegrationTest xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.update;
    +20  
    +21  import java.io.File;
    +22  import java.net.URL;
    +23  import org.owasp.dependencycheck.data.update.DatabaseUpdater;
    +24  import org.junit.After;
    +25  import org.junit.AfterClass;
    +26  import org.junit.Before;
    +27  import org.junit.BeforeClass;
    +28  import org.junit.Test;
    +29  import org.owasp.dependencycheck.utils.Settings;
    +30  
    +31  /**
    +32   *
    +33   * @author Jeremy Long (jeremy.long@owasp.org)
    +34   */
    +35  public class DatabaseUpdaterIntegrationTest {
    +36  
    +37      public DatabaseUpdaterIntegrationTest() {
    +38      }
    +39  
    +40      @BeforeClass
    +41      public static void setUpClass() throws Exception {
    +42      }
    +43  
    +44      @AfterClass
    +45      public static void tearDownClass() throws Exception {
    +46      }
    +47  
    +48      @Before
    +49      public void setUp() {
    +50      }
    +51  
    +52      @After
    +53      public void tearDown() {
    +54      }
    +55  
    +56      /**
    +57       * Test of update method, of class DatabaseUpdater.
    +58       *
    +59       * @throws Exception
    +60       */
    +61      @Test
    +62      public void testUpdate() throws Exception {
    +63          DatabaseUpdater instance = new DatabaseUpdater();
    +64          instance.update();
    +65      }
    +66  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdater_1_Test.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdater_1_Test.html new file mode 100644 index 000000000..fadfa9f95 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdater_1_Test.html @@ -0,0 +1,111 @@ + + + + +DatabaseUpdater_1_Test xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.update;
    +20  
    +21  import org.owasp.dependencycheck.data.update.DatabaseUpdater;
    +22  import java.io.File;
    +23  import org.apache.commons.io.FileUtils;
    +24  import org.junit.After;
    +25  import org.junit.AfterClass;
    +26  import org.junit.Before;
    +27  import org.junit.BeforeClass;
    +28  import org.junit.Test;
    +29  import org.owasp.dependencycheck.utils.Settings;
    +30  
    +31  /**
    +32   *
    +33   * @author Jeremy Long (jeremy.long@owasp.org)
    +34   */
    +35  public class DatabaseUpdater_1_Test {
    +36  
    +37      public DatabaseUpdater_1_Test() {
    +38      }
    +39  
    +40      @BeforeClass
    +41      public static void setUpClass() throws Exception {
    +42      }
    +43  
    +44      @AfterClass
    +45      public static void tearDownClass() throws Exception {
    +46      }
    +47      private String old12;
    +48      private String old20;
    +49  
    +50      @Before
    +51      public void setUp() throws Exception {
    +52          old12 = Settings.getString(Settings.KEYS.CVE_MODIFIED_12_URL);
    +53          old20 = Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL);
    +54  
    +55          File tmp = Settings.getTempDirectory();
    +56          if (!tmp.exists()) {
    +57              tmp.mkdirs();
    +58          }
    +59  
    +60          File dest = new File(tmp, "data.zip");
    +61          File file = new File(this.getClass().getClassLoader().getResource("data.zip").toURI());
    +62          FileUtils.copyFile(file, dest);
    +63          String path = "file:///" + dest.getCanonicalPath();
    +64          Settings.setString(Settings.KEYS.BATCH_UPDATE_URL, path);
    +65  
    +66          dest = new File(tmp, "nvdcve-2012.xml");
    +67          file = new File(this.getClass().getClassLoader().getResource("nvdcve-2012.xml").toURI());
    +68          FileUtils.copyFile(file, dest);
    +69          path = "file:///" + dest.getCanonicalPath();
    +70          Settings.setString(Settings.KEYS.CVE_MODIFIED_12_URL, path);
    +71  
    +72          dest = new File(tmp, "nvdcve-2.0-2012.xml");
    +73          file = new File(this.getClass().getClassLoader().getResource("nvdcve-2.0-2012.xml").toURI());
    +74          FileUtils.copyFile(file, dest);
    +75          path = "file:///" + dest.getCanonicalPath();
    +76          Settings.setString(Settings.KEYS.CVE_MODIFIED_20_URL, path);
    +77      }
    +78  
    +79      @After
    +80      public void tearDown() {
    +81          Settings.setString(Settings.KEYS.CVE_MODIFIED_12_URL, old12);
    +82          Settings.setString(Settings.KEYS.CVE_MODIFIED_20_URL, old20);
    +83          Settings.setString(Settings.KEYS.BATCH_UPDATE_URL, "");
    +84      }
    +85  
    +86      /**
    +87       * Test of update method (when in batch mode), of class DatabaseUpdater.
    +88       *
    +89       * @throws Exception
    +90       */
    +91      @Test
    +92      public void testBatchUpdate() throws Exception {
    +93          DatabaseUpdater instance = new DatabaseUpdater();
    +94          instance.deleteExistingData();
    +95          instance.update();
    +96      }
    +97  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdater_2_Test.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdater_2_Test.html new file mode 100644 index 000000000..e73260e31 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/DatabaseUpdater_2_Test.html @@ -0,0 +1,101 @@ + + + + +DatabaseUpdater_2_Test xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.update;
    +20  
    +21  import org.owasp.dependencycheck.data.update.DatabaseUpdater;
    +22  import java.io.File;
    +23  import org.apache.commons.io.FileUtils;
    +24  import org.junit.After;
    +25  import org.junit.AfterClass;
    +26  import org.junit.Before;
    +27  import org.junit.BeforeClass;
    +28  import org.junit.Test;
    +29  import org.owasp.dependencycheck.utils.Settings;
    +30  
    +31  /**
    +32   *
    +33   * @author Jeremy Long (jeremy.long@owasp.org)
    +34   */
    +35  public class DatabaseUpdater_2_Test {
    +36  
    +37      public DatabaseUpdater_2_Test() {
    +38      }
    +39  
    +40      @BeforeClass
    +41      public static void setUpClass() throws Exception {
    +42      }
    +43  
    +44      @AfterClass
    +45      public static void tearDownClass() throws Exception {
    +46      }
    +47      private String old12;
    +48      private String old20;
    +49  
    +50      @Before
    +51      public void setUp() throws Exception {
    +52          old12 = Settings.getString(Settings.KEYS.CVE_MODIFIED_12_URL);
    +53          old20 = Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL);
    +54          Settings.removeProperty(Settings.KEYS.CVE_MODIFIED_12_URL);
    +55          Settings.removeProperty(Settings.KEYS.CVE_MODIFIED_20_URL);
    +56  
    +57          File tmp = Settings.getTempDirectory();
    +58          if (!tmp.exists()) {
    +59              tmp.mkdirs();
    +60          }
    +61  
    +62          File dest = new File(tmp, "data.zip");
    +63          File file = new File(this.getClass().getClassLoader().getResource("data.zip").toURI());
    +64          FileUtils.copyFile(file, dest);
    +65          String path = "file:///" + dest.getCanonicalPath();
    +66          Settings.setString(Settings.KEYS.BATCH_UPDATE_URL, path);
    +67      }
    +68  
    +69      @After
    +70      public void tearDown() {
    +71          Settings.setString(Settings.KEYS.CVE_MODIFIED_12_URL, old12);
    +72          Settings.setString(Settings.KEYS.CVE_MODIFIED_20_URL, old20);
    +73          Settings.removeProperty(Settings.KEYS.BATCH_UPDATE_URL);
    +74      }
    +75  
    +76      /**
    +77       * Test of update method (when in batch mode), of class DatabaseUpdater.
    +78       *
    +79       * @throws Exception
    +80       */
    +81      @Test
    +82      public void testBatchUpdateWithoutModified() throws Exception {
    +83          DatabaseUpdater instance = new DatabaseUpdater();
    +84          instance.deleteExistingData();
    +85          instance.update();
    +86      }
    +87  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/package-frame.html new file mode 100644 index 000000000..326da4c51 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/package-frame.html @@ -0,0 +1,30 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.update + + + + +

    + org.owasp.dependencycheck.data.update +

    + +

    Classes

    + + + + + \ No newline at end of file diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/package-summary.html new file mode 100644 index 000000000..78b4dac28 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/data/update/package-summary.html @@ -0,0 +1,77 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.update + + + +
    + +
    +
    + +
    + +

    Package org.owasp.dependencycheck.data.update

    + + + + + + + + + + + + + + + + + + +
    Class Summary
    + DatabaseUpdaterIntegrationTest +
    + DatabaseUpdater_1_Test +
    + DatabaseUpdater_2_Test +
    + +
    + +
    +
    + +
    +
    + Copyright © 2012-2013 OWASP. All Rights Reserved. + + \ No newline at end of file diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-frame.html index ded19d93d..0076b8906 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.dependency + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.dependency diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-summary.html index 7d1c5db85..adeafe0fd 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/dependency/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.dependency + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.dependency diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/package-frame.html index 4f2a4fbc3..58b798350 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/package-summary.html index 8d3ba561b..0d744fe8d 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-frame.html index 770293a9f..8e3bf5d27 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.reporting + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.reporting diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-summary.html index 2c7d28596..520ac5661 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/reporting/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.reporting + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.reporting diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/DownloaderIntegrationTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/DownloaderIntegrationTest.html index 8c9dc3ad4..3c0420620 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/DownloaderIntegrationTest.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/DownloaderIntegrationTest.html @@ -28,68 +28,64 @@ 18 */ 19 package org.owasp.dependencycheck.utils; 20 -21 import org.owasp.dependencycheck.utils.Settings; -22 import org.owasp.dependencycheck.utils.Downloader; -23 import java.net.URL; -24 import org.junit.After; -25 import org.junit.AfterClass; -26 import org.junit.Before; -27 import org.junit.BeforeClass; -28 import org.junit.Test; -29 import static org.junit.Assert.*; -30 -31 /** -32 * -33 * @author Jeremy Long (jeremy.long@owasp.org) -34 */ -35 public class DownloaderIntegrationTest { -36 -37 @BeforeClass -38 public static void setUpClass() throws Exception { -39 } -40 -41 @AfterClass -42 public static void tearDownClass() throws Exception { -43 } -44 -45 @Before -46 public void setUp() { -47 } -48 -49 @After -50 public void tearDown() { -51 } -52 -53 /** -54 * Test of fetchFile method, of class Downloader. -55 * -56 * @throws Exception thrown when an exception occurs. -57 */ -58 @Test -59 public void testFetchFile() throws Exception { -60 -61 // Settings.setString(Settings.KEYS.CONNECTION_TIMEOUT, "1000"); -62 +21 import java.io.File; +22 import org.owasp.dependencycheck.utils.Settings; +23 import org.owasp.dependencycheck.utils.Downloader; +24 import java.net.URL; +25 import org.junit.After; +26 import org.junit.AfterClass; +27 import org.junit.Before; +28 import org.junit.BeforeClass; +29 import org.junit.Test; +30 import static org.junit.Assert.*; +31 +32 /** +33 * +34 * @author Jeremy Long (jeremy.long@owasp.org) +35 */ +36 public class DownloaderIntegrationTest { +37 +38 @BeforeClass +39 public static void setUpClass() throws Exception { +40 } +41 +42 @AfterClass +43 public static void tearDownClass() throws Exception { +44 } +45 +46 @Before +47 public void setUp() { +48 } +49 +50 @After +51 public void tearDown() { +52 } +53 +54 /** +55 * Test of fetchFile method, of class Downloader. +56 * +57 * @throws Exception thrown when an exception occurs. +58 */ +59 @Test +60 public void testFetchFile() throws Exception { +61 +62 // Settings.setString(Settings.KEYS.CONNECTION_TIMEOUT, "1000"); 63 // Settings.setString(Settings.KEYS.PROXY_PORT, "8080"); 64 // Settings.setString(Settings.KEYS.PROXY_URL, "127.0.0.1"); 65 -66 URL url = new URL(Settings.getString(Settings.KEYS.CPE_URL)); -67 String outputPath = "target/downloaded_cpe.xml"; -68 Downloader.fetchFile(url, outputPath, true); +66 URL url = new URL(Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL)); +67 File outputPath = new File("target/downloaded_cve.xml"); +68 Downloader.fetchFile(url, outputPath); 69 -70 url = new URL(Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL)); -71 outputPath = "target/downloaded_cve.xml"; -72 Downloader.fetchFile(url, outputPath, false); -73 -74 } -75 -76 @Test -77 public void testGetLastModified() throws Exception { -78 URL url = new URL("http://nvd.nist.gov/download/nvdcve-2012.xml"); -79 long timestamp = Downloader.getLastModified(url); -80 assertTrue("timestamp equal to zero?", timestamp > 0); -81 } -82 } +70 } +71 +72 @Test +73 public void testGetLastModified() throws Exception { +74 URL url = new URL("http://nvd.nist.gov/download/nvdcve-2012.xml"); +75 long timestamp = Downloader.getLastModified(url); +76 assertTrue("timestamp equal to zero?", timestamp > 0); +77 } +78 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/DownloaderTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/DownloaderTest.html new file mode 100644 index 000000000..f0709d256 --- /dev/null +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/DownloaderTest.html @@ -0,0 +1,74 @@ + + + + +DownloaderTest xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.utils;
    +20  
    +21  import java.io.File;
    +22  import org.owasp.dependencycheck.utils.Downloader;
    +23  import java.net.URL;
    +24  import org.junit.After;
    +25  import org.junit.AfterClass;
    +26  import org.junit.Before;
    +27  import org.junit.BeforeClass;
    +28  import org.junit.Test;
    +29  import static org.junit.Assert.*;
    +30  
    +31  /**
    +32   *
    +33   * @author Jeremy Long (jeremy.long@owasp.org)
    +34   */
    +35  public class DownloaderTest {
    +36  
    +37      @BeforeClass
    +38      public static void setUpClass() throws Exception {
    +39      }
    +40  
    +41      @AfterClass
    +42      public static void tearDownClass() throws Exception {
    +43      }
    +44  
    +45      @Before
    +46      public void setUp() {
    +47      }
    +48  
    +49      @After
    +50      public void tearDown() {
    +51      }
    +52  
    +53      @Test
    +54      public void testGetLastModified_file() throws Exception {
    +55          File f = new File("target/test-classes/nvdcve-2.0-2012.xml");
    +56          URL url = new URL("file:///" + f.getCanonicalPath());
    +57          long timestamp = Downloader.getLastModified(url);
    +58          assertTrue("timestamp equal to zero?", timestamp > 0);
    +59      }
    +60  }
    +
    +
    + + diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/SettingsTest.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/SettingsTest.html index 94992f4c6..238af27a9 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/SettingsTest.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/SettingsTest.html @@ -83,9 +83,9 @@ 73 File result = Settings.getFile(key); 74 Assert.assertTrue(result.getAbsolutePath().endsWith(expResult)); 75 -76 key = "an invalid key!!!"; -77 result = Settings.getFile(key, expResult); -78 Assert.assertTrue(result.getAbsolutePath().endsWith(expResult)); +76 result = Settings.getFile(Settings.KEYS.DATA_DIRECTORY); +77 String path = result.getPath(); +78 Assert.assertTrue(path.endsWith("data") || path.endsWith("data" + File.separator)); 79 } 80 81 /** @@ -173,7 +173,23 @@ 163 boolean result = Settings.getBoolean(key); 164 Assert.assertEquals(expResult, result); 165 } -166 } +166 +167 /** +168 * Test of removeProperty method, of class Settings. +169 */ +170 @Test +171 public void testRemoveProperty() { +172 String key = "SomeKey"; +173 String value = "value"; +174 String dfault = "default"; +175 Settings.setString(key, value); +176 String ret = Settings.getString(key); +177 Assert.assertEquals(value, ret); +178 Settings.removeProperty(key); +179 ret = Settings.getString(key, dfault); +180 Assert.assertEquals(dfault, ret); +181 } +182 }
    diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-frame.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-frame.html index 08ce8c1fc..ea20af824 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-frame.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.utils + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.utils @@ -26,6 +26,9 @@
  • DownloaderIntegrationTest +
  • +
  • + DownloaderTest
  • FileUtilsTest diff --git a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-summary.html b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-summary.html index 6eec5ab98..1a6c9e6cf 100644 --- a/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-summary.html +++ b/dependency-check-core/xref-test/org/owasp/dependencycheck/utils/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.utils + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.utils @@ -54,6 +54,11 @@ DownloaderIntegrationTest + + + + DownloaderTest + diff --git a/dependency-check-core/xref-test/overview-frame.html b/dependency-check-core/xref-test/overview-frame.html index 6f9da3bc8..524563319 100644 --- a/dependency-check-core/xref-test/overview-frame.html +++ b/dependency-check-core/xref-test/overview-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference + Dependency-Check Core 1.0.2 Reference @@ -20,6 +20,9 @@
  • org.owasp.dependencycheck.analyzer +
  • +
  • + org.owasp.dependencycheck.concurrency
  • org.owasp.dependencycheck.data.cpe @@ -34,7 +37,7 @@ org.owasp.dependencycheck.data.nvdcve
  • - org.owasp.dependencycheck.data.nvdcve.xml + org.owasp.dependencycheck.data.update
  • org.owasp.dependencycheck.dependency diff --git a/dependency-check-core/xref-test/overview-summary.html b/dependency-check-core/xref-test/overview-summary.html index 3c80091d7..bc1d5da67 100644 --- a/dependency-check-core/xref-test/overview-summary.html +++ b/dependency-check-core/xref-test/overview-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference + Dependency-Check Core 1.0.2 Reference @@ -24,7 +24,7 @@ -

    dependency-check-core 1.0.1 Reference

    +

    Dependency-Check Core 1.0.2 Reference

    @@ -42,6 +42,11 @@ + + + diff --git a/dependency-check-core/xref/allclasses-frame.html b/dependency-check-core/xref/allclasses-frame.html index b9b73a107..f5df7e850 100644 --- a/dependency-check-core/xref/allclasses-frame.html +++ b/dependency-check-core/xref/allclasses-frame.html @@ -13,9 +13,6 @@
    • AbstractAnalyzer -
    • -
    • - AbstractIndex
    • AbstractTokenizingFilter @@ -49,6 +46,9 @@
    • ArchiveAnalyzer +
    • +
    • + BaseIndex
    • Build @@ -57,7 +57,7 @@ BuildBase
    • - CPEAnalyzer + CPEAnalyzer
    • CachedWebDataSource @@ -85,6 +85,12 @@
    • CorruptDatabaseException +
    • +
    • + CpeIndexReader +
    • +
    • + CpeIndexWriter
    • CveDB @@ -94,12 +100,15 @@
    • CweHandler +
    • +
    • + DataStoreMetaInfo
    • DatabaseException
    • - DatabaseUpdater + DatabaseUpdater
    • Dependencies @@ -130,6 +139,12 @@
    • Developers +
    • +
    • + DirectoryLockException +
    • +
    • + DirectorySpinLock
    • DistributionManagement @@ -141,7 +156,7 @@ Downloader
    • - Element + Element
    • Engine @@ -169,6 +184,9 @@
    • Extensions +
    • +
    • + ExtractionException
    • FalsePositiveAnalyzer @@ -207,22 +225,22 @@ Identifier
    • - IdentifierConfidence + IdentifierConfidence
    • - IdentifierMatch + IdentifierMatch
    • Includes -
    • -
    • - Index
    • IndexEntry
    • - InvalidDataException + InvalidDataException +
    • +
    • + InvalidDirectoryException
    • InvalidSettingException @@ -273,16 +291,16 @@ Notifiers
    • - NvdCve12Handler + NvdCve12Handler
    • - NvdCve20Handler + NvdCve20Handler
    • - NvdCveAnalyzer + NvdCveAnalyzer
    • - NvdCveUrl + NvdCveInfo
    • ObjectFactory diff --git a/dependency-check-core/xref/index.html b/dependency-check-core/xref/index.html index e08a3b6b6..e259d86e9 100644 --- a/dependency-check-core/xref/index.html +++ b/dependency-check-core/xref/index.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference + Dependency-Check Core 1.0.2 Reference diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html index 5f9d7c85a..45d4e6f6a 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.html @@ -42,280 +42,293 @@ 32 import java.util.Set; 33 import java.util.logging.Level; 34 import java.util.logging.Logger; -35 import java.util.zip.ZipEntry; -36 import java.util.zip.ZipInputStream; -37 import org.h2.store.fs.FileUtils; -38 import org.owasp.dependencycheck.Engine; -39 import org.owasp.dependencycheck.dependency.Dependency; -40 import org.owasp.dependencycheck.utils.Settings; -41 -42 /** -43 * <p>An analyzer that works on archive files: -44 * <ul> -45 * <li><b>ZIP</b> - if it is determined to be a JAR, WAR or EAR a copy is made -46 * and the copy is given the correct extension so that it will be correctly -47 * analyzed.</li> -48 * <li><b>WAR</b> - the WAR contents are extracted and added as dependencies to -49 * the scan. The displayed path is relative to the WAR.</li> -50 * <li><b>EAR</b> - the WAR contents are extracted and added as dependencies to -51 * the scan. Any WAR files are also processed so that the contained JAR files -52 * are added to the list of dependencies. The displayed path is relative to the -53 * EAR.</li> -54 * </ul></p> -55 * -56 * @author Jeremy Long (jeremy.long@owasp.org) -57 */ -58 public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer { -59 -60 /** -61 * The buffer size to use when extracting files from the archive. -62 */ -63 private static final int BUFFER_SIZE = 4096; -64 /** -65 * The count of directories created during analysis. This is used for -66 * creating temporary directories. -67 */ -68 private static int dirCount = 0; -69 /** -70 * The parent directory for the individual directories per archive. -71 */ -72 private File tempFileLocation = null; -73 /** -74 * The max scan depth that the analyzer will recursively extract nested -75 * archives. -76 */ -77 private static final int MAX_SCAN_DEPTH = Settings.getInt("archive.scan.depth", 3); -78 /** -79 * Tracks the current scan/extraction depth for nested archives. -80 */ -81 private int scanDepth = 0; -82 //<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer"> -83 /** -84 * The name of the analyzer. -85 */ -86 private static final String ANALYZER_NAME = "Archive Analyzer"; -87 /** -88 * The phase that this analyzer is intended to run in. -89 */ -90 private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INITIAL; -91 /** -92 * The set of file extensions supported by this analyzer. -93 */ -94 private static final Set<String> EXTENSIONS = newHashSet("zip", "ear", "war"); -95 -96 /** -97 * Returns a list of file EXTENSIONS supported by this analyzer. -98 * -99 * @return a list of file EXTENSIONS supported by this analyzer. -100 */ -101 public Set<String> getSupportedExtensions() { -102 return EXTENSIONS; -103 } -104 -105 /** -106 * Returns the name of the analyzer. -107 * -108 * @return the name of the analyzer. -109 */ -110 public String getName() { -111 return ANALYZER_NAME; -112 } -113 -114 /** -115 * Returns whether or not this analyzer can process the given extension. -116 * -117 * @param extension the file extension to test for support. -118 * @return whether or not the specified file extension is supported by this -119 * analyzer. -120 */ -121 public boolean supportsExtension(String extension) { -122 return EXTENSIONS.contains(extension); -123 } -124 -125 /** -126 * Returns the phase that the analyzer is intended to run in. -127 * -128 * @return the phase that the analyzer is intended to run in. -129 */ -130 public AnalysisPhase getAnalysisPhase() { -131 return ANALYSIS_PHASE; -132 } -133 //</editor-fold> -134 -135 /** -136 * The initialize method does nothing for this Analyzer. -137 * -138 * @throws Exception is thrown if there is an exception deleting or creating -139 * temporary files -140 */ -141 @Override -142 public void initialize() throws Exception { -143 final String tmpDir = Settings.getString(Settings.KEYS.TEMP_DIRECTORY, System.getProperty("java.io.tmpdir")); -144 final File baseDir = new File(tmpDir); -145 tempFileLocation = File.createTempFile("check", "tmp", baseDir); -146 if (!tempFileLocation.delete()) { -147 throw new AnalysisException("Unable to delete temporary file '" + tempFileLocation.getAbsolutePath() + "'."); -148 } -149 if (!tempFileLocation.mkdirs()) { -150 throw new AnalysisException("Unable to create directory '" + tempFileLocation.getAbsolutePath() + "'."); -151 } -152 } -153 -154 /** -155 * The close method does nothing for this Analyzer. -156 * -157 * @throws Exception thrown if there is an exception deleting temporary -158 * files -159 */ -160 @Override -161 public void close() throws Exception { -162 if (tempFileLocation != null && tempFileLocation.exists()) { -163 FileUtils.deleteRecursive(tempFileLocation.getAbsolutePath(), true); -164 } -165 } -166 -167 /** -168 * Analyzes a given dependency. If the dependency is an archive, such as a -169 * WAR or EAR, the contents are extracted, scanned, and added to the list of -170 * dependencies within the engine. -171 * -172 * @param dependency the dependency to analyze -173 * @param engine the engine scanning -174 * @throws AnalysisException thrown if there is an analysis exception -175 */ -176 @Override -177 public void analyze(Dependency dependency, Engine engine) throws AnalysisException { -178 final File f = new File(dependency.getActualFilePath()); -179 final File tmpDir = getNextTempDirectory(); -180 extractFiles(f, tmpDir, engine); -181 -182 //make a copy -183 final List<Dependency> dependencies = new ArrayList<Dependency>(engine.getDependencies()); -184 engine.scan(tmpDir); -185 final List<Dependency> newDependencies = engine.getDependencies(); -186 if (dependencies.size() != newDependencies.size()) { -187 //get the new dependencies -188 final Set<Dependency> dependencySet = new HashSet<Dependency>(); -189 dependencySet.addAll(newDependencies); -190 dependencySet.removeAll(dependencies); -191 -192 for (Dependency d : dependencySet) { -193 //fix the dependency's display name and path -194 final String displayPath = String.format("%s%s", -195 dependency.getFilePath(), -196 d.getActualFilePath().substring(tmpDir.getAbsolutePath().length())); -197 final String displayName = String.format("%s%s%s", -198 dependency.getFileName(), -199 File.separator, -200 d.getFileName()); -201 d.setFilePath(displayPath); -202 d.setFileName(displayName); -203 -204 //TODO - can we get more evidence from the parent? EAR contains module name, etc. -205 -206 //analyze the dependency (i.e. extract files) if it is a supported type. -207 if (this.supportsExtension(d.getFileExtension()) && scanDepth < MAX_SCAN_DEPTH) { -208 scanDepth += 1; -209 analyze(d, engine); -210 scanDepth -= 1; -211 } -212 } -213 } -214 Collections.sort(engine.getDependencies()); -215 } -216 -217 /** -218 * Retrieves the next temporary directory to extract an archive too. -219 * -220 * @return a directory -221 * @throws AnalysisException thrown if unable to create temporary directory -222 */ -223 private File getNextTempDirectory() throws AnalysisException { -224 dirCount += 1; -225 final File directory = new File(tempFileLocation, String.valueOf(dirCount)); -226 if (!directory.mkdirs()) { -227 throw new AnalysisException("Unable to create temp directory '" + directory.getAbsolutePath() + "'."); -228 } -229 return directory; -230 } -231 -232 /** -233 * Extracts the contents of an archive into the specified directory. -234 * -235 * @param archive an archive file such as a WAR or EAR -236 * @param extractTo a directory to extract the contents to -237 * @param engine the scanning engine -238 * @throws AnalysisException thrown if the archive is not found -239 */ -240 private void extractFiles(File archive, File extractTo, Engine engine) throws AnalysisException { -241 if (archive == null || extractTo == null) { -242 return; -243 } -244 -245 FileInputStream fis = null; -246 ZipInputStream zis = null; -247 -248 try { -249 fis = new FileInputStream(archive); -250 } catch (FileNotFoundException ex) { -251 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.INFO, null, ex); -252 throw new AnalysisException("Archive file was not found.", ex); -253 } -254 zis = new ZipInputStream(new BufferedInputStream(fis)); -255 ZipEntry entry; -256 try { -257 while ((entry = zis.getNextEntry()) != null) { -258 if (entry.isDirectory()) { -259 final File d = new File(extractTo, entry.getName()); -260 if (!d.mkdirs()) { -261 throw new AnalysisException("Unable to create '" + d.getAbsolutePath() + "'."); -262 } -263 } else { -264 final File file = new File(extractTo, entry.getName()); -265 final String ext = org.owasp.dependencycheck.utils.FileUtils.getFileExtension(file.getName()); -266 if (engine.supportsExtension(ext)) { -267 BufferedOutputStream bos = null; -268 FileOutputStream fos; -269 try { -270 fos = new FileOutputStream(file); -271 bos = new BufferedOutputStream(fos, BUFFER_SIZE); -272 int count; -273 final byte data[] = new byte[BUFFER_SIZE]; -274 while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) { -275 bos.write(data, 0, count); -276 } -277 bos.flush(); -278 } catch (FileNotFoundException ex) { -279 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex); -280 throw new AnalysisException("Unable to find file '" + file.getName() + "'.", ex); -281 } catch (IOException ex) { -282 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex); -283 throw new AnalysisException("IO Exception while parsing file '" + file.getName() + "'.", ex); -284 } finally { -285 if (bos != null) { -286 try { -287 bos.close(); -288 } catch (IOException ex) { -289 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex); -290 } -291 } -292 } -293 } -294 } -295 } -296 } catch (IOException ex) { -297 final String msg = String.format("Exception reading archive '%s'.", archive.getName()); -298 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, msg, ex); -299 throw new AnalysisException(msg, ex); -300 } finally { -301 try { -302 zis.close(); -303 } catch (IOException ex) { -304 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex); -305 } -306 } -307 } -308 } +35 //import java.util.zip.ZipEntry; +36 //import java.util.zip.ZipException; +37 //import java.util.zip.ZipInputStream; +38 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +39 import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; +40 import org.h2.store.fs.FileUtils; +41 import org.owasp.dependencycheck.Engine; +42 import org.owasp.dependencycheck.dependency.Dependency; +43 import org.owasp.dependencycheck.utils.Settings; +44 +45 /** +46 * <p>An analyzer that works on archive files: +47 * <ul> +48 * <li><b>ZIP</b> - if it is determined to be a JAR, WAR or EAR a copy is made +49 * and the copy is given the correct extension so that it will be correctly +50 * analyzed.</li> +51 * <li><b>WAR</b> - the WAR contents are extracted and added as dependencies to +52 * the scan. The displayed path is relative to the WAR.</li> +53 * <li><b>EAR</b> - the WAR contents are extracted and added as dependencies to +54 * the scan. Any WAR files are also processed so that the contained JAR files +55 * are added to the list of dependencies. The displayed path is relative to the +56 * EAR.</li> +57 * </ul></p> +58 * +59 * @author Jeremy Long (jeremy.long@owasp.org) +60 */ +61 public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer { +62 +63 /** +64 * The buffer size to use when extracting files from the archive. +65 */ +66 private static final int BUFFER_SIZE = 4096; +67 /** +68 * The count of directories created during analysis. This is used for +69 * creating temporary directories. +70 */ +71 private static int dirCount = 0; +72 /** +73 * The parent directory for the individual directories per archive. +74 */ +75 private File tempFileLocation = null; +76 /** +77 * The max scan depth that the analyzer will recursively extract nested +78 * archives. +79 */ +80 private static final int MAX_SCAN_DEPTH = Settings.getInt("archive.scan.depth", 3); +81 /** +82 * Tracks the current scan/extraction depth for nested archives. +83 */ +84 private int scanDepth = 0; +85 //<editor-fold defaultstate="collapsed" desc="All standard implmentation details of Analyzer"> +86 /** +87 * The name of the analyzer. +88 */ +89 private static final String ANALYZER_NAME = "Archive Analyzer"; +90 /** +91 * The phase that this analyzer is intended to run in. +92 */ +93 private static final AnalysisPhase ANALYSIS_PHASE = AnalysisPhase.INITIAL; +94 /** +95 * The set of file extensions supported by this analyzer. +96 */ +97 private static final Set<String> EXTENSIONS = newHashSet("zip", "ear", "war"); +98 +99 /** +100 * Returns a list of file EXTENSIONS supported by this analyzer. +101 * +102 * @return a list of file EXTENSIONS supported by this analyzer. +103 */ +104 public Set<String> getSupportedExtensions() { +105 return EXTENSIONS; +106 } +107 +108 /** +109 * Returns the name of the analyzer. +110 * +111 * @return the name of the analyzer. +112 */ +113 public String getName() { +114 return ANALYZER_NAME; +115 } +116 +117 /** +118 * Returns whether or not this analyzer can process the given extension. +119 * +120 * @param extension the file extension to test for support. +121 * @return whether or not the specified file extension is supported by this +122 * analyzer. +123 */ +124 public boolean supportsExtension(String extension) { +125 return EXTENSIONS.contains(extension); +126 } +127 +128 /** +129 * Returns the phase that the analyzer is intended to run in. +130 * +131 * @return the phase that the analyzer is intended to run in. +132 */ +133 public AnalysisPhase getAnalysisPhase() { +134 return ANALYSIS_PHASE; +135 } +136 //</editor-fold> +137 +138 /** +139 * The initialize method does nothing for this Analyzer. +140 * +141 * @throws Exception is thrown if there is an exception deleting or creating +142 * temporary files +143 */ +144 @Override +145 public void initialize() throws Exception { +146 final File baseDir = Settings.getTempDirectory(); +147 if (!baseDir.exists()) { +148 baseDir.mkdirs(); +149 } +150 tempFileLocation = File.createTempFile("check", "tmp", baseDir); +151 if (!tempFileLocation.delete()) { +152 throw new AnalysisException("Unable to delete temporary file '" + tempFileLocation.getAbsolutePath() + "'."); +153 } +154 if (!tempFileLocation.mkdirs()) { +155 throw new AnalysisException("Unable to create directory '" + tempFileLocation.getAbsolutePath() + "'."); +156 } +157 } +158 +159 /** +160 * The close method does nothing for this Analyzer. +161 * +162 * @throws Exception thrown if there is an exception deleting temporary +163 * files +164 */ +165 @Override +166 public void close() throws Exception { +167 if (tempFileLocation != null && tempFileLocation.exists()) { +168 FileUtils.deleteRecursive(tempFileLocation.getAbsolutePath(), true); +169 } +170 } +171 +172 /** +173 * Analyzes a given dependency. If the dependency is an archive, such as a +174 * WAR or EAR, the contents are extracted, scanned, and added to the list of +175 * dependencies within the engine. +176 * +177 * @param dependency the dependency to analyze +178 * @param engine the engine scanning +179 * @throws AnalysisException thrown if there is an analysis exception +180 */ +181 @Override +182 public void analyze(Dependency dependency, Engine engine) throws AnalysisException { +183 final File f = new File(dependency.getActualFilePath()); +184 final File tmpDir = getNextTempDirectory(); +185 extractFiles(f, tmpDir, engine); +186 +187 //make a copy +188 final List<Dependency> dependencies = new ArrayList<Dependency>(engine.getDependencies()); +189 engine.scan(tmpDir); +190 final List<Dependency> newDependencies = engine.getDependencies(); +191 if (dependencies.size() != newDependencies.size()) { +192 //get the new dependencies +193 final Set<Dependency> dependencySet = new HashSet<Dependency>(); +194 dependencySet.addAll(newDependencies); +195 dependencySet.removeAll(dependencies); +196 +197 for (Dependency d : dependencySet) { +198 //fix the dependency's display name and path +199 final String displayPath = String.format("%s%s", +200 dependency.getFilePath(), +201 d.getActualFilePath().substring(tmpDir.getAbsolutePath().length())); +202 final String displayName = String.format("%s%s%s", +203 dependency.getFileName(), +204 File.separator, +205 d.getFileName()); +206 d.setFilePath(displayPath); +207 d.setFileName(displayName); +208 +209 //TODO - can we get more evidence from the parent? EAR contains module name, etc. +210 +211 //analyze the dependency (i.e. extract files) if it is a supported type. +212 if (this.supportsExtension(d.getFileExtension()) && scanDepth < MAX_SCAN_DEPTH) { +213 scanDepth += 1; +214 analyze(d, engine); +215 scanDepth -= 1; +216 } +217 } +218 } +219 Collections.sort(engine.getDependencies()); +220 } +221 +222 /** +223 * Retrieves the next temporary directory to extract an archive too. +224 * +225 * @return a directory +226 * @throws AnalysisException thrown if unable to create temporary directory +227 */ +228 private File getNextTempDirectory() throws AnalysisException { +229 dirCount += 1; +230 final File directory = new File(tempFileLocation, String.valueOf(dirCount)); +231 if (!directory.mkdirs()) { +232 throw new AnalysisException("Unable to create temp directory '" + directory.getAbsolutePath() + "'."); +233 } +234 return directory; +235 } +236 +237 /** +238 * Extracts the contents of an archive into the specified directory. +239 * +240 * @param archive an archive file such as a WAR or EAR +241 * @param extractTo a directory to extract the contents to +242 * @param engine the scanning engine +243 * @throws AnalysisException thrown if the archive is not found +244 */ +245 private void extractFiles(File archive, File extractTo, Engine engine) throws AnalysisException { +246 if (archive == null || extractTo == null) { +247 return; +248 } +249 +250 FileInputStream fis = null; +251 //ZipInputStream zis = null; +252 ZipArchiveInputStream zis = null; +253 +254 try { +255 fis = new FileInputStream(archive); +256 } catch (FileNotFoundException ex) { +257 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.INFO, null, ex); +258 throw new AnalysisException("Archive file was not found.", ex); +259 } +260 zis = new ZipArchiveInputStream(new BufferedInputStream(fis)); +261 ZipArchiveEntry entry; +262 +263 try { +264 while ((entry = zis.getNextZipEntry()) != null) { +265 if (entry.isDirectory()) { +266 final File d = new File(extractTo, entry.getName()); +267 if (!d.mkdirs()) { +268 throw new AnalysisException("Unable to create '" + d.getAbsolutePath() + "'."); +269 } +270 } else { +271 final File file = new File(extractTo, entry.getName()); +272 final String ext = org.owasp.dependencycheck.utils.FileUtils.getFileExtension(file.getName()); +273 if (engine.supportsExtension(ext)) { +274 BufferedOutputStream bos = null; +275 FileOutputStream fos; +276 try { +277 fos = new FileOutputStream(file); +278 bos = new BufferedOutputStream(fos, BUFFER_SIZE); +279 int count; +280 final byte data[] = new byte[BUFFER_SIZE]; +281 while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) { +282 bos.write(data, 0, count); +283 } +284 bos.flush(); +285 } catch (FileNotFoundException ex) { +286 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex); +287 throw new AnalysisException("Unable to find file '" + file.getName() + "'.", ex); +288 } catch (IOException ex) { +289 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex); +290 throw new AnalysisException("IO Exception while parsing file '" + file.getName() + "'.", ex); +291 } finally { +292 if (bos != null) { +293 try { +294 bos.close(); +295 } catch (IOException ex) { +296 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex); +297 } +298 } +299 } +300 } +301 } +302 } +303 } catch (IOException ex) { +304 final String msg = String.format("Exception reading archive '%s'.", archive.getName()); +305 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, msg); +306 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINE, null, ex); +307 throw new AnalysisException(msg, ex); +308 } catch (Throwable ex) { +309 final String msg = String.format("Exception reading archive '%s'.", archive.getName()); +310 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, msg); +311 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.WARNING, null, ex); +312 throw new AnalysisException(msg, ex); +313 } finally { +314 try { +315 zis.close(); +316 } catch (IOException ex) { +317 Logger.getLogger(ArchiveAnalyzer.class.getName()).log(Level.FINEST, null, ex); +318 } +319 } +320 } +321 }
      diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/CPEAnalyzer.html b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/CPEAnalyzer.html new file mode 100644 index 000000000..b40bbdf07 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/CPEAnalyzer.html @@ -0,0 +1,814 @@ + + + + +CPEAnalyzer xref + + + +
      +
      +1   /*
      +2    * This file is part of dependency-check-core.
      +3    *
      +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
      +5    * under the terms of the GNU General Public License as published by the Free
      +6    * Software Foundation, either version 3 of the License, or (at your option) any
      +7    * later version.
      +8    *
      +9    * Dependency-check-core is distributed in the hope that it will be useful, but
      +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
      +12   * details.
      +13   *
      +14   * You should have received a copy of the GNU General Public License along with
      +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
      +16   *
      +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
      +18   */
      +19  package org.owasp.dependencycheck.analyzer;
      +20  
      +21  import java.io.IOException;
      +22  import java.io.UnsupportedEncodingException;
      +23  import java.net.URLEncoder;
      +24  import java.sql.SQLException;
      +25  import java.util.ArrayList;
      +26  import java.util.Collections;
      +27  import java.util.List;
      +28  import java.util.Set;
      +29  import java.util.StringTokenizer;
      +30  import java.util.logging.Level;
      +31  import java.util.logging.Logger;
      +32  import org.apache.lucene.document.Document;
      +33  import org.apache.lucene.index.CorruptIndexException;
      +34  import org.apache.lucene.queryparser.classic.ParseException;
      +35  import org.apache.lucene.search.ScoreDoc;
      +36  import org.apache.lucene.search.TopDocs;
      +37  import org.owasp.dependencycheck.Engine;
      +38  import org.owasp.dependencycheck.data.lucene.LuceneUtils;
      +39  import org.owasp.dependencycheck.dependency.Dependency;
      +40  import org.owasp.dependencycheck.dependency.Evidence;
      +41  import org.owasp.dependencycheck.dependency.Evidence.Confidence;
      +42  import org.owasp.dependencycheck.dependency.EvidenceCollection;
      +43  import org.owasp.dependencycheck.data.cpe.CpeIndexReader;
      +44  import org.owasp.dependencycheck.data.cpe.Fields;
      +45  import org.owasp.dependencycheck.data.cpe.IndexEntry;
      +46  import org.owasp.dependencycheck.data.nvdcve.CveDB;
      +47  import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
      +48  import org.owasp.dependencycheck.dependency.Identifier;
      +49  import org.owasp.dependencycheck.dependency.VulnerableSoftware;
      +50  import org.owasp.dependencycheck.utils.DependencyVersion;
      +51  import org.owasp.dependencycheck.utils.DependencyVersionUtil;
      +52  
      +53  /**
      +54   * CPEAnalyzer is a utility class that takes a project dependency and attempts
      +55   * to discern if there is an associated CPE. It uses the evidence contained
      +56   * within the dependency to search the Lucene index.
      +57   *
      +58   * @author Jeremy Long (jeremy.long@owasp.org)
      +59   */
      +60  public class CPEAnalyzer implements Analyzer {
      +61  
      +62      /**
      +63       * The maximum number of query results to return.
      +64       */
      +65      static final int MAX_QUERY_RESULTS = 25;
      +66      /**
      +67       * The weighting boost to give terms when constructing the Lucene query.
      +68       */
      +69      static final String WEIGHTING_BOOST = "^5";
      +70      /**
      +71       * A string representation of a regular expression defining characters
      +72       * utilized within the CPE Names.
      +73       */
      +74      static final String CLEANSE_CHARACTER_RX = "[^A-Za-z0-9 ._-]";
      +75      /**
      +76       * A string representation of a regular expression used to remove all but
      +77       * alpha characters.
      +78       */
      +79      static final String CLEANSE_NONALPHA_RX = "[^A-Za-z]*";
      +80      /**
      +81       * The additional size to add to a new StringBuilder to account for extra
      +82       * data that will be written into the string.
      +83       */
      +84      static final int STRING_BUILDER_BUFFER = 20;
      +85      /**
      +86       * The CPE Index Reader.
      +87       */
      +88      private CpeIndexReader cpe;
      +89      /**
      +90       * The CVE Database.
      +91       */
      +92      private CveDB cve;
      +93  
      +94      /**
      +95       * Opens the data source.
      +96       *
      +97       * @throws IOException when the Lucene directory to be queried does not
      +98       * exist or is corrupt.
      +99       * @throws DatabaseException when the database throws an exception. This
      +100      * usually occurs when the database is in use by another process.
      +101      */
      +102     public void open() throws IOException, DatabaseException {
      +103         cpe = new CpeIndexReader();
      +104         cpe.open();
      +105         cve = new CveDB();
      +106         try {
      +107             cve.open();
      +108         } catch (SQLException ex) {
      +109             Logger.getLogger(CPEAnalyzer.class.getName()).log(Level.FINE, null, ex);
      +110             throw new DatabaseException("Unable to open the cve db", ex);
      +111         } catch (ClassNotFoundException ex) {
      +112             Logger.getLogger(CPEAnalyzer.class.getName()).log(Level.FINE, null, ex);
      +113             throw new DatabaseException("Unable to open the cve db", ex);
      +114         }
      +115     }
      +116 
      +117     /**
      +118      * Closes the data source.
      +119      */
      +120     @Override
      +121     public void close() {
      +122         if (cpe != null) {
      +123             cpe.close();
      +124         }
      +125         if (cve != null) {
      +126             cve.close();
      +127         }
      +128     }
      +129 
      +130     /**
      +131      * Returns the status of the data source - is the index open.
      +132      *
      +133      * @return true or false.
      +134      */
      +135     public boolean isOpen() {
      +136         return (cpe != null) && cpe.isOpen();
      +137     }
      +138 
      +139     /**
      +140      * Ensures that the Lucene index is closed.
      +141      *
      +142      * @throws Throwable when a throwable is thrown.
      +143      */
      +144     @Override
      +145     protected void finalize() throws Throwable {
      +146         super.finalize();
      +147         if (isOpen()) {
      +148             close();
      +149         }
      +150     }
      +151 
      +152     /**
      +153      * Searches the data store of CPE entries, trying to identify the CPE for
      +154      * the given dependency based on the evidence contained within. The
      +155      * dependency passed in is updated with any identified CPE values.
      +156      *
      +157      * @param dependency the dependency to search for CPE entries on.
      +158      * @throws CorruptIndexException is thrown when the Lucene index is corrupt.
      +159      * @throws IOException is thrown when an IOException occurs.
      +160      * @throws ParseException is thrown when the Lucene query cannot be parsed.
      +161      */
      +162     protected void determineCPE(Dependency dependency) throws CorruptIndexException, IOException, ParseException {
      +163         Confidence vendorConf = Confidence.HIGHEST;
      +164         Confidence productConf = Confidence.HIGHEST;
      +165 
      +166         String vendors = addEvidenceWithoutDuplicateTerms("", dependency.getVendorEvidence(), vendorConf);
      +167         String products = addEvidenceWithoutDuplicateTerms("", dependency.getProductEvidence(), productConf);
      +168 
      +169         int ctr = 0;
      +170         do {
      +171             if (!vendors.isEmpty() && !products.isEmpty()) {
      +172                 final List<IndexEntry> entries = searchCPE(vendors, products, dependency.getProductEvidence().getWeighting(),
      +173                         dependency.getVendorEvidence().getWeighting());
      +174 
      +175                 for (IndexEntry e : entries) {
      +176                     if (verifyEntry(e, dependency)) {
      +177                         final String vendor = e.getVendor();
      +178                         final String product = e.getProduct();
      +179                         determineIdentifiers(dependency, vendor, product);
      +180                     }
      +181                 }
      +182             }
      +183             vendorConf = reduceConfidence(vendorConf);
      +184             if (dependency.getVendorEvidence().contains(vendorConf)) {
      +185                 vendors = addEvidenceWithoutDuplicateTerms(vendors, dependency.getVendorEvidence(), vendorConf);
      +186             }
      +187             productConf = reduceConfidence(productConf);
      +188             if (dependency.getProductEvidence().contains(productConf)) {
      +189                 products = addEvidenceWithoutDuplicateTerms(products, dependency.getProductEvidence(), productConf);
      +190             }
      +191         } while ((++ctr) < 4);
      +192     }
      +193 
      +194     /**
      +195      * Returns the text created by concatenating the text and the values from
      +196      * the EvidenceCollection (filtered for a specific confidence). This
      +197      * attempts to prevent duplicate terms from being added.<br/<br/> Note, if
      +198      * the evidence is longer then 200 characters it will be truncated.
      +199      *
      +200      * @param text the base text.
      +201      * @param ec an EvidenceCollection
      +202      * @param confidenceFilter a Confidence level to filter the evidence by.
      +203      * @return the new evidence text
      +204      */
      +205     private String addEvidenceWithoutDuplicateTerms(final String text, final EvidenceCollection ec, Confidence confidenceFilter) {
      +206         final String txt = (text == null) ? "" : text;
      +207         final StringBuilder sb = new StringBuilder(txt.length() + (20 * ec.size()));
      +208         sb.append(' ').append(txt).append(' ');
      +209         for (Evidence e : ec.iterator(confidenceFilter)) {
      +210             String value = e.getValue();
      +211 
      +212             //hack to get around the fact that lucene does a really good job of recognizing domains and not
      +213             // splitting them. TODO - put together a better lucene analyzer specific to the domain.
      +214             if (value.startsWith("http://")) {
      +215                 value = value.substring(7).replaceAll("\\.", " ");
      +216             }
      +217             if (value.startsWith("https://")) {
      +218                 value = value.substring(8).replaceAll("\\.", " ");
      +219             }
      +220             if (sb.indexOf(" " + value + " ") < 0) {
      +221                 sb.append(value).append(' ');
      +222             }
      +223         }
      +224         return sb.toString().trim();
      +225     }
      +226 
      +227     /**
      +228      * Reduces the given confidence by one level. This returns LOW if the
      +229      * confidence passed in is not HIGH.
      +230      *
      +231      * @param c the confidence to reduce.
      +232      * @return One less then the confidence passed in.
      +233      */
      +234     private Confidence reduceConfidence(final Confidence c) {
      +235         if (c == Confidence.HIGHEST) {
      +236             return Confidence.HIGH;
      +237         } else if (c == Confidence.HIGH) {
      +238             return Confidence.MEDIUM;
      +239         } else {
      +240             return Confidence.LOW;
      +241         }
      +242     }
      +243 
      +244     /**
      +245      * <p>Searches the Lucene CPE index to identify possible CPE entries
      +246      * associated with the supplied vendor, product, and version.</p>
      +247      *
      +248      * <p>If either the vendorWeightings or productWeightings lists have been
      +249      * populated this data is used to add weighting factors to the search.</p>
      +250      *
      +251      * @param vendor the text used to search the vendor field
      +252      * @param product the text used to search the product field
      +253      * @param vendorWeightings a list of strings to use to add weighting factors
      +254      * to the vendor field
      +255      * @param productWeightings Adds a list of strings that will be used to add
      +256      * weighting factors to the product search
      +257      * @return a list of possible CPE values
      +258      * @throws CorruptIndexException when the Lucene index is corrupt
      +259      * @throws IOException when the Lucene index is not found
      +260      * @throws ParseException when the generated query is not valid
      +261      */
      +262     protected List<IndexEntry> searchCPE(String vendor, String product,
      +263             Set<String> vendorWeightings, Set<String> productWeightings)
      +264             throws CorruptIndexException, IOException, ParseException {
      +265         final ArrayList<IndexEntry> ret = new ArrayList<IndexEntry>(MAX_QUERY_RESULTS);
      +266 
      +267         final String searchString = buildSearch(vendor, product, vendorWeightings, productWeightings);
      +268         if (searchString == null) {
      +269             return ret;
      +270         }
      +271 
      +272         final TopDocs docs = cpe.search(searchString, MAX_QUERY_RESULTS);
      +273         for (ScoreDoc d : docs.scoreDocs) {
      +274             if (d.score >= 0.08) {
      +275                 final Document doc = cpe.getDocument(d.doc);
      +276                 final IndexEntry entry = new IndexEntry();
      +277                 entry.setVendor(doc.get(Fields.VENDOR));
      +278                 entry.setProduct(doc.get(Fields.PRODUCT));
      +279 //                if (d.score < 0.08) {
      +280 //                    System.out.print(entry.getVendor());
      +281 //                    System.out.print(":");
      +282 //                    System.out.print(entry.getProduct());
      +283 //                    System.out.print(":");
      +284 //                    System.out.println(d.score);
      +285 //                }
      +286                 entry.setSearchScore(d.score);
      +287                 if (!ret.contains(entry)) {
      +288                     ret.add(entry);
      +289                 }
      +290             }
      +291         }
      +292         return ret;
      +293     }
      +294 
      +295     /**
      +296      * <p>Builds a Lucene search string by properly escaping data and
      +297      * constructing a valid search query.</p>
      +298      *
      +299      * <p>If either the possibleVendor or possibleProducts lists have been
      +300      * populated this data is used to add weighting factors to the search string
      +301      * generated.</p>
      +302      *
      +303      * @param vendor text to search the vendor field
      +304      * @param product text to search the product field
      +305      * @param vendorWeighting a list of strings to apply to the vendor to boost
      +306      * the terms weight
      +307      * @param productWeightings a list of strings to apply to the product to
      +308      * boost the terms weight
      +309      * @return the Lucene query
      +310      */
      +311     protected String buildSearch(String vendor, String product,
      +312             Set<String> vendorWeighting, Set<String> productWeightings) {
      +313         final String v = vendor; //.replaceAll("[^\\w\\d]", " ");
      +314         final String p = product; //.replaceAll("[^\\w\\d]", " ");
      +315         final StringBuilder sb = new StringBuilder(v.length() + p.length()
      +316                 + Fields.PRODUCT.length() + Fields.VENDOR.length() + STRING_BUILDER_BUFFER);
      +317 
      +318         if (!appendWeightedSearch(sb, Fields.PRODUCT, p, productWeightings)) {
      +319             return null;
      +320         }
      +321         sb.append(" AND ");
      +322         if (!appendWeightedSearch(sb, Fields.VENDOR, v, vendorWeighting)) {
      +323             return null;
      +324         }
      +325         return sb.toString();
      +326     }
      +327 
      +328     /**
      +329      * This method constructs a Lucene query for a given field. The searchText
      +330      * is split into separate words and if the word is within the list of
      +331      * weighted words then an additional weighting is applied to the term as it
      +332      * is appended into the query.
      +333      *
      +334      * @param sb a StringBuilder that the query text will be appended to.
      +335      * @param field the field within the Lucene index that the query is
      +336      * searching.
      +337      * @param searchText text used to construct the query.
      +338      * @param weightedText a list of terms that will be considered higher
      +339      * importance when searching.
      +340      * @return if the append was successful.
      +341      */
      +342     private boolean appendWeightedSearch(StringBuilder sb, String field, String searchText, Set<String> weightedText) {
      +343         sb.append(" ").append(field).append(":( ");
      +344 
      +345         final String cleanText = cleanseText(searchText);
      +346 
      +347         if ("".equals(cleanText)) {
      +348             return false;
      +349         }
      +350 
      +351         if (weightedText == null || weightedText.isEmpty()) {
      +352             LuceneUtils.appendEscapedLuceneQuery(sb, cleanText);
      +353         } else {
      +354             final StringTokenizer tokens = new StringTokenizer(cleanText);
      +355             while (tokens.hasMoreElements()) {
      +356                 final String word = tokens.nextToken();
      +357                 String temp = null;
      +358                 for (String weighted : weightedText) {
      +359                     final String weightedStr = cleanseText(weighted);
      +360                     if (equalsIgnoreCaseAndNonAlpha(word, weightedStr)) {
      +361                         temp = LuceneUtils.escapeLuceneQuery(word) + WEIGHTING_BOOST;
      +362                         if (!word.equalsIgnoreCase(weightedStr)) {
      +363                             temp += " " + LuceneUtils.escapeLuceneQuery(weightedStr) + WEIGHTING_BOOST;
      +364                         }
      +365                     }
      +366                 }
      +367                 if (temp == null) {
      +368                     temp = LuceneUtils.escapeLuceneQuery(word);
      +369                 }
      +370                 sb.append(" ").append(temp);
      +371             }
      +372         }
      +373         sb.append(" ) ");
      +374         return true;
      +375     }
      +376 
      +377     /**
      +378      * Removes characters from the input text that are not used within the CPE
      +379      * index.
      +380      *
      +381      * @param text is the text to remove the characters from.
      +382      * @return the text having removed some characters.
      +383      */
      +384     private String cleanseText(String text) {
      +385         return text.replaceAll(CLEANSE_CHARACTER_RX, " ");
      +386     }
      +387 
      +388     /**
      +389      * Compares two strings after lower casing them and removing the non-alpha
      +390      * characters.
      +391      *
      +392      * @param l string one to compare.
      +393      * @param r string two to compare.
      +394      * @return whether or not the two strings are similar.
      +395      */
      +396     private boolean equalsIgnoreCaseAndNonAlpha(String l, String r) {
      +397         if (l == null || r == null) {
      +398             return false;
      +399         }
      +400 
      +401         final String left = l.replaceAll(CLEANSE_NONALPHA_RX, "");
      +402         final String right = r.replaceAll(CLEANSE_NONALPHA_RX, "");
      +403         return left.equalsIgnoreCase(right);
      +404     }
      +405 
      +406     /**
      +407      * Ensures that the CPE Identified matches the dependency. This validates
      +408      * that the product, vendor, and version information for the CPE are
      +409      * contained within the dependencies evidence.
      +410      *
      +411      * @param entry a CPE entry.
      +412      * @param dependency the dependency that the CPE entries could be for.
      +413      * @return whether or not the entry is valid.
      +414      */
      +415     private boolean verifyEntry(final IndexEntry entry, final Dependency dependency) {
      +416         boolean isValid = false;
      +417 
      +418         if (collectionContainsString(dependency.getProductEvidence(), entry.getProduct())
      +419                 && collectionContainsString(dependency.getVendorEvidence(), entry.getVendor())) {
      +420             //&& collectionContainsVersion(dependency.getVersionEvidence(), entry.getVersion())
      +421             isValid = true;
      +422         }
      +423         return isValid;
      +424     }
      +425 
      +426     /**
      +427      * Used to determine if the EvidenceCollection contains a specific string.
      +428      *
      +429      * @param ec an EvidenceCollection
      +430      * @param text the text to search for
      +431      * @return whether or not the EvidenceCollection contains the string
      +432      */
      +433     private boolean collectionContainsString(EvidenceCollection ec, String text) {
      +434 
      +435         //<editor-fold defaultstate="collapsed" desc="This code fold contains an old version of the code, delete once more testing is done">
      +436         //        String[] splitText = text.split("[\\s_-]");
      +437         //
      +438         //        for (String search : splitText) {
      +439         //            //final String search = text.replaceAll("[\\s_-]", "").toLowerCase();
      +440         //            if (ec.containsUsedString(search)) {
      +441         //                return true;
      +442         //            }
      +443         //        }
      +444         //</editor-fold>
      +445 
      +446         //TODO - likely need to change the split... not sure if this will work for CPE with special chars
      +447         final String[] words = text.split("[\\s_-]");
      +448         final List<String> list = new ArrayList<String>();
      +449         String tempWord = null;
      +450         for (String word : words) {
      +451             //single letter words should be concatonated with the next word.
      +452             // so { "m", "core", "sample" } -> { "mcore", "sample" }
      +453             if (tempWord != null) {
      +454                 list.add(tempWord + word);
      +455                 tempWord = null;
      +456             } else if (word.length() <= 2) {
      +457                 tempWord = word;
      +458             } else {
      +459                 list.add(word);
      +460             }
      +461         }
      +462         if (tempWord != null && !list.isEmpty()) {
      +463             String tmp = list.get(list.size() - 1) + tempWord;
      +464             list.add(tmp);
      +465         }
      +466         boolean contains = true;
      +467         for (String word : list) {
      +468             contains &= ec.containsUsedString(word);
      +469         }
      +470         return contains;
      +471     }
      +472 
      +473     /**
      +474      * Analyzes a dependency and attempts to determine if there are any CPE
      +475      * identifiers for this dependency.
      +476      *
      +477      * @param dependency The Dependency to analyze.
      +478      * @param engine The analysis engine
      +479      * @throws AnalysisException is thrown if there is an issue analyzing the
      +480      * dependency.
      +481      */
      +482     @Override
      +483     public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
      +484         try {
      +485             determineCPE(dependency);
      +486         } catch (CorruptIndexException ex) {
      +487             throw new AnalysisException("CPE Index is corrupt.", ex);
      +488         } catch (IOException ex) {
      +489             throw new AnalysisException("Failure opening the CPE Index.", ex);
      +490         } catch (ParseException ex) {
      +491             throw new AnalysisException("Unable to parse the generated Lucene query for this dependency.", ex);
      +492         }
      +493     }
      +494 
      +495     /**
      +496      * Returns true because this analyzer supports all dependency types.
      +497      *
      +498      * @return true.
      +499      */
      +500     @Override
      +501     public Set<String> getSupportedExtensions() {
      +502         return null;
      +503     }
      +504 
      +505     /**
      +506      * Returns the name of this analyzer.
      +507      *
      +508      * @return the name of this analyzer.
      +509      */
      +510     @Override
      +511     public String getName() {
      +512         return "CPE Analyzer";
      +513     }
      +514 
      +515     /**
      +516      * Returns true because this analyzer supports all dependency types.
      +517      *
      +518      * @param extension the file extension of the dependency being analyzed.
      +519      * @return true.
      +520      */
      +521     @Override
      +522     public boolean supportsExtension(String extension) {
      +523         return true;
      +524     }
      +525 
      +526     /**
      +527      * Returns the analysis phase that this analyzer should run in.
      +528      *
      +529      * @return the analysis phase that this analyzer should run in.
      +530      */
      +531     @Override
      +532     public AnalysisPhase getAnalysisPhase() {
      +533         return AnalysisPhase.IDENTIFIER_ANALYSIS;
      +534     }
      +535 
      +536     /**
      +537      * Opens the CPE Lucene Index.
      +538      *
      +539      * @throws Exception is thrown if there is an issue opening the index.
      +540      */
      +541     @Override
      +542     public void initialize() throws Exception {
      +543         this.open();
      +544     }
      +545 
      +546     /**
      +547      * Retrieves a list of CPE values from the CveDB based on the vendor and
      +548      * product passed in. The list is then validated to find only CPEs that are
      +549      * valid for the given dependency. It is possible that the CPE identified is
      +550      * a best effort "guess" based on the vendor, product, and version
      +551      * information.
      +552      *
      +553      * @param dependency the Dependency being analyzed
      +554      * @param vendor the vendor for the CPE being analyzed
      +555      * @param product the product for the CPE being analyzed
      +556      * @throws UnsupportedEncodingException is thrown if UTF-8 is not supported
      +557      */
      +558     private void determineIdentifiers(Dependency dependency, String vendor, String product) throws UnsupportedEncodingException {
      +559         final Set<VulnerableSoftware> cpes = cve.getCPEs(vendor, product);
      +560         DependencyVersion bestGuess = new DependencyVersion("-");
      +561         Confidence bestGuessConf = null;
      +562         final List<IdentifierMatch> collected = new ArrayList<IdentifierMatch>();
      +563         for (Confidence conf : Confidence.values()) {
      +564             for (Evidence evidence : dependency.getVersionEvidence().iterator(conf)) {
      +565                 final DependencyVersion evVer = DependencyVersionUtil.parseVersion(evidence.getValue());
      +566                 if (evVer == null) {
      +567                     continue;
      +568                 }
      +569                 for (VulnerableSoftware vs : cpes) {
      +570                     DependencyVersion dbVer;
      +571                     if (vs.getRevision() != null && !vs.getRevision().isEmpty()) {
      +572                         dbVer = DependencyVersionUtil.parseVersion(vs.getVersion() + "." + vs.getRevision());
      +573                     } else {
      +574                         dbVer = DependencyVersionUtil.parseVersion(vs.getVersion());
      +575                     }
      +576                     if (dbVer == null //special case, no version specified - everything is vulnerable
      +577                             || evVer.equals(dbVer)) { //woot exect match
      +578                         final String url = String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(vs.getName(), "UTF-8"));
      +579                         final IdentifierMatch match = new IdentifierMatch("cpe", vs.getName(), url, IdentifierConfidence.EXACT_MATCH, conf);
      +580                         collected.add(match);
      +581                     } else {
      +582                         //TODO the following isn't quite right is it? need to think about this guessing game a bit more.
      +583                         if (evVer.getVersionParts().size() <= dbVer.getVersionParts().size()
      +584                                 && evVer.matchesAtLeastThreeLevels(dbVer)) {
      +585                             if (bestGuessConf == null || bestGuessConf.compareTo(conf) > 0) {
      +586                                 if (bestGuess.getVersionParts().size() < dbVer.getVersionParts().size()) {
      +587                                     bestGuess = dbVer;
      +588                                     bestGuessConf = conf;
      +589                                 }
      +590                             }
      +591                         }
      +592                     }
      +593                 }
      +594                 if (bestGuessConf == null || bestGuessConf.compareTo(conf) > 0) {
      +595                     if (bestGuess.getVersionParts().size() < evVer.getVersionParts().size()) {
      +596                         bestGuess = evVer;
      +597                         bestGuessConf = conf;
      +598                     }
      +599                 }
      +600             }
      +601         }
      +602         final String cpeName = String.format("cpe:/a:%s:%s:%s", vendor, product, bestGuess.toString());
      +603         final String url = null; //String.format("http://web.nvd.nist.gov/view/vuln/search?cpe=%s", URLEncoder.encode(cpeName, "UTF-8"));
      +604         if (bestGuessConf == null) {
      +605             bestGuessConf = Confidence.LOW;
      +606         }
      +607         final IdentifierMatch match = new IdentifierMatch("cpe", cpeName, url, IdentifierConfidence.BEST_GUESS, bestGuessConf);
      +608         collected.add(match);
      +609 
      +610         Collections.sort(collected);
      +611         final IdentifierConfidence bestIdentifierQuality = collected.get(0).getConfidence();
      +612         final Confidence bestEvidenceQuality = collected.get(0).getEvidenceConfidence();
      +613         for (IdentifierMatch m : collected) {
      +614             if (bestIdentifierQuality.equals(m.getConfidence())
      +615                     && bestEvidenceQuality.equals(m.getEvidenceConfidence())) {
      +616                 dependency.addIdentifier(m.getIdentifier());
      +617             }
      +618         }
      +619     }
      +620 
      +621     /**
      +622      * The confidence whether the identifier is an exact match, or a best guess.
      +623      */
      +624     private enum IdentifierConfidence {
      +625 
      +626         /**
      +627          * An exact match for the CPE.
      +628          */
      +629         EXACT_MATCH,
      +630         /**
      +631          * A best guess for the CPE.
      +632          */
      +633         BEST_GUESS
      +634     }
      +635 
      +636     /**
      +637      * A simple object to hold an identifier and carry information about the
      +638      * confidence in the identifier.
      +639      */
      +640     private static class IdentifierMatch implements Comparable<IdentifierMatch> {
      +641 
      +642         /**
      +643          * Constructs an IdentiferMatch.
      +644          *
      +645          * @param type the type of identifier (such as CPE)
      +646          * @param value the value of the identifier
      +647          * @param url the URL of the identifier
      +648          * @param identifierConfidence the confidence in the identifier: best
      +649          * guess or exact match
      +650          * @param evidenceConfidence the confidence of the evidence used to find
      +651          * the identifier
      +652          */
      +653         IdentifierMatch(String type, String value, String url, IdentifierConfidence identifierConfidence, Confidence evidenceConfidence) {
      +654             this.identifier = new Identifier(type, value, url);
      +655             this.confidence = identifierConfidence;
      +656             this.evidenceConfidence = evidenceConfidence;
      +657         }
      +658         //<editor-fold defaultstate="collapsed" desc="Property implementations: evidenceConfidence, confidence, identifier">
      +659         /**
      +660          * The confidence in the evidence used to identify this match.
      +661          */
      +662         private Confidence evidenceConfidence;
      +663 
      +664         /**
      +665          * Get the value of evidenceConfidence
      +666          *
      +667          * @return the value of evidenceConfidence
      +668          */
      +669         public Confidence getEvidenceConfidence() {
      +670             return evidenceConfidence;
      +671         }
      +672 
      +673         /**
      +674          * Set the value of evidenceConfidence
      +675          *
      +676          * @param evidenceConfidence new value of evidenceConfidence
      +677          */
      +678         public void setEvidenceConfidence(Confidence evidenceConfidence) {
      +679             this.evidenceConfidence = evidenceConfidence;
      +680         }
      +681         /**
      +682          * The confidence whether this is an exact match, or a best guess.
      +683          */
      +684         private IdentifierConfidence confidence;
      +685 
      +686         /**
      +687          * Get the value of confidence.
      +688          *
      +689          * @return the value of confidence
      +690          */
      +691         public IdentifierConfidence getConfidence() {
      +692             return confidence;
      +693         }
      +694 
      +695         /**
      +696          * Set the value of confidence.
      +697          *
      +698          * @param confidence new value of confidence
      +699          */
      +700         public void setConfidence(IdentifierConfidence confidence) {
      +701             this.confidence = confidence;
      +702         }
      +703         /**
      +704          * The CPE identifier.
      +705          */
      +706         private Identifier identifier;
      +707 
      +708         /**
      +709          * Get the value of identifier.
      +710          *
      +711          * @return the value of identifier
      +712          */
      +713         public Identifier getIdentifier() {
      +714             return identifier;
      +715         }
      +716 
      +717         /**
      +718          * Set the value of identifier.
      +719          *
      +720          * @param identifier new value of identifier
      +721          */
      +722         public void setIdentifier(Identifier identifier) {
      +723             this.identifier = identifier;
      +724         }
      +725         //</editor-fold>
      +726         //<editor-fold defaultstate="collapsed" desc="Standard implementations of toString, hashCode, and equals">
      +727 
      +728         /**
      +729          * Standard toString() implementation.
      +730          *
      +731          * @return the string representation of the object
      +732          */
      +733         @Override
      +734         public String toString() {
      +735             return "IdentifierMatch{" + "evidenceConfidence=" + evidenceConfidence
      +736                     + ", confidence=" + confidence + ", identifier=" + identifier + '}';
      +737         }
      +738 
      +739         /**
      +740          * Standard hashCode() implementation.
      +741          *
      +742          * @return the hashCode
      +743          */
      +744         @Override
      +745         public int hashCode() {
      +746             int hash = 5;
      +747             hash = 97 * hash + (this.evidenceConfidence != null ? this.evidenceConfidence.hashCode() : 0);
      +748             hash = 97 * hash + (this.confidence != null ? this.confidence.hashCode() : 0);
      +749             hash = 97 * hash + (this.identifier != null ? this.identifier.hashCode() : 0);
      +750             return hash;
      +751         }
      +752 
      +753         /**
      +754          * Standard equals implementation.
      +755          *
      +756          * @param obj the object to compare
      +757          * @return true if the objects are equal, otherwise false
      +758          */
      +759         @Override
      +760         public boolean equals(Object obj) {
      +761             if (obj == null) {
      +762                 return false;
      +763             }
      +764             if (getClass() != obj.getClass()) {
      +765                 return false;
      +766             }
      +767             final IdentifierMatch other = (IdentifierMatch) obj;
      +768             if (this.evidenceConfidence != other.evidenceConfidence) {
      +769                 return false;
      +770             }
      +771             if (this.confidence != other.confidence) {
      +772                 return false;
      +773             }
      +774             if (this.identifier != other.identifier && (this.identifier == null || !this.identifier.equals(other.identifier))) {
      +775                 return false;
      +776             }
      +777             return true;
      +778         }
      +779         //</editor-fold>
      +780 
      +781         /**
      +782          * Standard implementation of compareTo that compares identifier
      +783          * confidence, evidence confidence, and then the identifier.
      +784          *
      +785          * @param o the IdentifierMatch to compare to
      +786          * @return the natural ordering of IdentifierMatch
      +787          */
      +788         @Override
      +789         public int compareTo(IdentifierMatch o) {
      +790             int conf = this.confidence.compareTo(o.confidence);
      +791             if (conf == 0) {
      +792                 conf = this.evidenceConfidence.compareTo(o.evidenceConfidence);
      +793                 if (conf == 0) {
      +794                     conf = identifier.compareTo(o.identifier);
      +795                 }
      +796             }
      +797             return conf;
      +798         }
      +799     }
      +800 }
      +
      +
      + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/JarAnalyzer.html b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/JarAnalyzer.html index 3eb0a91ff..e7e1cc188 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/JarAnalyzer.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/JarAnalyzer.html @@ -169,7 +169,7 @@ 159 /** 160 * The set of file extensions supported by this analyzer. 161 */ -162 private static final Set<String> EXTENSIONS = newHashSet("jar"); +162 private static final Set<String> EXTENSIONS = newHashSet("jar", "war"); 163 164 /** 165 * Returns a list of file EXTENSIONS supported by this analyzer. diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/NvdCveAnalyzer.html b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/NvdCveAnalyzer.html new file mode 100644 index 000000000..bac9006b6 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/NvdCveAnalyzer.html @@ -0,0 +1,236 @@ + + + + +NvdCveAnalyzer xref + + + +
      +
      +1   /*
      +2    * This file is part of dependency-check-core.
      +3    *
      +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
      +5    * under the terms of the GNU General Public License as published by the Free
      +6    * Software Foundation, either version 3 of the License, or (at your option) any
      +7    * later version.
      +8    *
      +9    * Dependency-check-core is distributed in the hope that it will be useful, but
      +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
      +12   * details.
      +13   *
      +14   * You should have received a copy of the GNU General Public License along with
      +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
      +16   *
      +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
      +18   */
      +19  package org.owasp.dependencycheck.analyzer;
      +20  
      +21  import java.io.IOException;
      +22  import java.sql.SQLException;
      +23  import java.util.List;
      +24  import java.util.Set;
      +25  import org.owasp.dependencycheck.Engine;
      +26  import org.owasp.dependencycheck.dependency.Dependency;
      +27  import org.owasp.dependencycheck.dependency.Vulnerability;
      +28  import org.owasp.dependencycheck.dependency.Identifier;
      +29  import org.owasp.dependencycheck.data.nvdcve.CveDB;
      +30  import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
      +31  
      +32  /**
      +33   * NvdCveAnalyzer is a utility class that takes a project dependency and
      +34   * attempts to discern if there is an associated CVEs. It uses the the
      +35   * identifiers found by other analyzers to lookup the CVE data.
      +36   *
      +37   * @author Jeremy Long (jeremy.long@owasp.org)
      +38   */
      +39  public class NvdCveAnalyzer implements Analyzer {
      +40  
      +41      /**
      +42       * The maximum number of query results to return.
      +43       */
      +44      static final int MAX_QUERY_RESULTS = 100;
      +45      /**
      +46       * The CVE Index.
      +47       */
      +48      private CveDB cveDB;
      +49  
      +50      /**
      +51       * Opens the data source.
      +52       *
      +53       * @throws SQLException thrown when there is a SQL Exception
      +54       * @throws IOException thrown when there is an IO Exception
      +55       * @throws DatabaseException thrown when there is a database exceptions
      +56       * @throws ClassNotFoundException thrown if the h2 database driver cannot be
      +57       * loaded
      +58       */
      +59      public void open() throws SQLException, IOException, DatabaseException, ClassNotFoundException {
      +60          cveDB = new CveDB();
      +61          cveDB.open();
      +62      }
      +63  
      +64      /**
      +65       * Closes the data source.
      +66       */
      +67      public void close() {
      +68          cveDB.close();
      +69          cveDB = null;
      +70      }
      +71  
      +72      /**
      +73       * Returns the status of the data source - is the database open.
      +74       *
      +75       * @return true or false.
      +76       */
      +77      public boolean isOpen() {
      +78          return (cveDB != null);
      +79      }
      +80  
      +81      /**
      +82       * Ensures that the CVE Database is closed.
      +83       *
      +84       * @throws Throwable when a throwable is thrown.
      +85       */
      +86      @Override
      +87      protected void finalize() throws Throwable {
      +88          super.finalize();
      +89          if (isOpen()) {
      +90              close();
      +91          }
      +92      }
      +93  
      +94      /**
      +95       * Analyzes a dependency and attempts to determine if there are any CPE
      +96       * identifiers for this dependency.
      +97       *
      +98       * @param dependency The Dependency to analyze
      +99       * @param engine The analysis engine
      +100      * @throws AnalysisException is thrown if there is an issue analyzing the
      +101      * dependency
      +102      */
      +103     public void analyze(Dependency dependency, Engine engine) throws AnalysisException {
      +104         for (Identifier id : dependency.getIdentifiers()) {
      +105             if ("cpe".equals(id.getType())) {
      +106                 try {
      +107                     final String value = id.getValue();
      +108                     final List<Vulnerability> vulns = cveDB.getVulnerabilities(value);
      +109                     dependency.getVulnerabilities().addAll(vulns);
      +110 //TODO - remove this comment block after additional testing is completed
      +111 //note - valid match functionality has been moved into the CveDB class.
      +112 ////                    for (Vulnerability v : vulns) {
      +113 ////                        if (isValidMatch(dependency, v)) {
      +114 ////                            dependency.addVulnerability(v);
      +115 ////                        }
      +116 ////                    }
      +117                 } catch (DatabaseException ex) {
      +118                     throw new AnalysisException(ex);
      +119                 }
      +120             }
      +121         }
      +122     }
      +123 
      +124     /**
      +125      * Returns true because this analyzer supports all dependency types.
      +126      *
      +127      * @return true.
      +128      */
      +129     public Set<String> getSupportedExtensions() {
      +130         return null;
      +131     }
      +132 
      +133     /**
      +134      * Returns the name of this analyzer.
      +135      *
      +136      * @return the name of this analyzer.
      +137      */
      +138     public String getName() {
      +139         return "NVD CVE Analyzer";
      +140     }
      +141 
      +142     /**
      +143      * Returns true because this analyzer supports all dependency types.
      +144      *
      +145      * @param extension the file extension of the dependency being analyzed.
      +146      * @return true.
      +147      */
      +148     public boolean supportsExtension(String extension) {
      +149         return true;
      +150     }
      +151 
      +152     /**
      +153      * Returns the analysis phase that this analyzer should run in.
      +154      *
      +155      * @return the analysis phase that this analyzer should run in.
      +156      */
      +157     public AnalysisPhase getAnalysisPhase() {
      +158         return AnalysisPhase.FINDING_ANALYSIS;
      +159     }
      +160 
      +161     /**
      +162      * Opens the NVD CVE Lucene Index.
      +163      *
      +164      * @throws Exception is thrown if there is an issue opening the index.
      +165      */
      +166     public void initialize() throws Exception {
      +167         this.open();
      +168     }
      +169 //TODO - remove this comment block after additional testing is completed
      +170 // The following check has been moved into the CveDB class.
      +171 ////    /**
      +172 ////     * <p>Determines if this is a valid vulnerability match for the given
      +173 ////     * dependency. Specifically, this is concerned with ensuring the version
      +174 ////     * numbers are correct.</p>
      +175 ////     * <p>Currently, this is focused on the issues with the versions for Struts
      +176 ////     * 1 and Struts 2. In the future this will due better matching on more
      +177 ////     * version numbers.</p>
      +178 ////     *
      +179 ////     * @param dependency the dependency
      +180 ////     * @param v the vulnerability
      +181 ////     * @return returns true if the vulnerability is for the given dependency
      +182 ////     */
      +183 ////    private boolean isValidMatch(final Dependency dependency, final Vulnerability v) {
      +184 ////        //right now I only know of the issue with Struts1/2
      +185 ////        // start with fixing this problem.
      +186 ////
      +187 ////        //TODO extend this solution to do better version matching for the vulnerable software.
      +188 ////        boolean struts1 = false;
      +189 ////        boolean struts2 = false;
      +190 ////        for (Identifier i : dependency.getIdentifiers()) {
      +191 ////            if (i.getValue().startsWith("cpe:/a:apache:struts:")) {
      +192 ////                final char version = i.getValue().charAt(21);
      +193 ////                if (version == '1') {
      +194 ////                    struts1 = true;
      +195 ////                }
      +196 ////                if (version == '2') {
      +197 ////                    struts2 = true;
      +198 ////                }
      +199 ////            }
      +200 ////        }
      +201 ////        if (!struts1 && !struts2) {
      +202 ////            return true; //we are not looking at struts, so return true.
      +203 ////        }
      +204 ////        if (struts1 && struts2) {
      +205 ////            return true; //there is a mismatch here, but we can't solve it here so we return valid.
      +206 ////        }
      +207 ////        if (struts1) {
      +208 ////            boolean hasStruts1Vuln = false;
      +209 ////            boolean hasStruts2PreviousVersion = false;
      +210 ////            for (VulnerableSoftware vs : v.getVulnerableSoftware()) {
      +211 ////                //TODO FIX THIS
      +212 ////                //hasStruts2PreviousVersion |= vs.hasPreviousVersion() && vs.getName().charAt(21) == '2';
      +213 ////                //hasStruts1Vuln |= vs.getName().charAt(21) == '1';
      +214 ////            }
      +215 ////            if (!hasStruts1Vuln && hasStruts2PreviousVersion) {
      +216 ////                return false;
      +217 ////            }
      +218 ////        }
      +219 ////
      +220 ////        return true;
      +221 ////    }
      +222 }
      +
      +
      + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-frame.html index ab40df35f..4a323dc5e 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.analyzer + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.analyzer @@ -32,6 +32,9 @@
    • ArchiveAnalyzer +
    • +
    • + CPEAnalyzer
    • ClassNameInformation @@ -47,12 +50,21 @@
    • HintAnalyzer +
    • +
    • + IdentifierConfidence +
    • +
    • + IdentifierMatch
    • JarAnalyzer
    • JavaScriptAnalyzer +
    • +
    • + NvdCveAnalyzer
    diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-summary.html index 57aaf8405..c80f82d87 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/analyzer/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.analyzer + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.analyzer @@ -64,6 +64,11 @@ + + + + + + + + + + + +
    org.owasp.dependencycheck.analyzer
    + org.owasp.dependencycheck.concurrency +
    @@ -65,7 +70,7 @@
    - org.owasp.dependencycheck.data.nvdcve.xml + org.owasp.dependencycheck.data.update
    ArchiveAnalyzer
    + CPEAnalyzer +
    @@ -89,6 +94,16 @@ HintAnalyzer
    + IdentifierConfidence +
    + IdentifierMatch +
    @@ -99,6 +114,11 @@ JavaScriptAnalyzer
    + NvdCveAnalyzer +
    diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/DirectoryLockException.html b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/DirectoryLockException.html new file mode 100644 index 000000000..d9a20b0e9 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/DirectoryLockException.html @@ -0,0 +1,81 @@ + + + + +DirectoryLockException xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.concurrency;
    +20  
    +21  /**
    +22   * If thrown, indicates that a problem occurred when locking a directory.
    +23   *
    +24   * @author Jeremy Long (jeremy.long@owasp.org)
    +25   */
    +26  public class DirectoryLockException extends Exception {
    +27  
    +28      /**
    +29       * Default serial version UID.
    +30       */
    +31      private static final long serialVersionUID = 1L;
    +32  
    +33      /**
    +34       * Constructs a new Directory Lock Exception.
    +35       */
    +36      public DirectoryLockException() {
    +37          super();
    +38      }
    +39  
    +40      /**
    +41       * Constructs a new Directory Lock Exception.
    +42       *
    +43       * @param msg the message describing the exception
    +44       */
    +45      public DirectoryLockException(String msg) {
    +46          super(msg);
    +47      }
    +48  
    +49      /**
    +50       * Constructs a new Directory Lock Exception.
    +51       *
    +52       * @param ex the cause of the exception
    +53       */
    +54      public DirectoryLockException(Throwable ex) {
    +55          super(ex);
    +56      }
    +57  
    +58      /**
    +59       * Constructs a new Directory Lock Exception.
    +60       *
    +61       * @param msg the message describing the exception
    +62       * @param ex the cause of the exception
    +63       */
    +64      public DirectoryLockException(String msg, Throwable ex) {
    +65          super(msg, ex);
    +66      }
    +67  }
    +
    +
    + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/DirectorySpinLock.html b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/DirectorySpinLock.html new file mode 100644 index 000000000..8dfddb5b3 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/DirectorySpinLock.html @@ -0,0 +1,281 @@ + + + + +DirectorySpinLock xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.concurrency;
    +20  
    +21  import java.io.Closeable;
    +22  import java.io.File;
    +23  import java.io.FileNotFoundException;
    +24  import java.io.IOException;
    +25  import java.io.RandomAccessFile;
    +26  import java.nio.channels.AsynchronousCloseException;
    +27  import java.nio.channels.ClosedChannelException;
    +28  import java.nio.channels.FileChannel;
    +29  import java.nio.channels.FileLock;
    +30  import java.nio.channels.FileLockInterruptionException;
    +31  import java.nio.channels.NonWritableChannelException;
    +32  import java.nio.channels.OverlappingFileLockException;
    +33  import java.util.logging.Level;
    +34  import java.util.logging.Logger;
    +35  
    +36  /**
    +37   * Implements a spin lock on a given directory. If the lock cannot be obtained,
    +38   * the process will "spin" waiting for an opportunity to obtain the lock
    +39   * requested.
    +40   *
    +41   * @author Jeremy Long (jeremy.long@owasp.org)
    +42   */
    +43  public class DirectorySpinLock implements Closeable /*, AutoCloseable*/ {
    +44  
    +45      /**
    +46       * The name of the lock file.
    +47       */
    +48      public static final String LOCK_NAME = "data.lock";
    +49      /**
    +50       * The maximum wait period used when attempting to obtain a lock.
    +51       */
    +52      public static final int MAX_SPIN = 100;
    +53      /**
    +54       * The file channel used to perform the lock.
    +55       */
    +56      private FileChannel channel = null;
    +57      /**
    +58       * The file used to perform the lock.
    +59       */
    +60      private File lockFile = null;
    +61      /**
    +62       * The lock object.
    +63       */
    +64      private FileLock lock = null;
    +65      /**
    +66       * The maximum number of seconds that the spin lock will wait while trying
    +67       * to obtain a lock.
    +68       */
    +69      private long maxWait = MAX_SPIN;
    +70  
    +71      /**
    +72       * Get the maximum wait time, in seconds, that the spin lock will wait while
    +73       * trying to obtain a lock.
    +74       *
    +75       * @return the number of seconds the spin lock will wait
    +76       */
    +77      public long getMaxWait() {
    +78          return maxWait / 2; //sleep is for 500, so / 2
    +79      }
    +80  
    +81      /**
    +82       * Set the maximum wait time, in seconds, that the spin lock will wait while
    +83       * trying to obtain a lock.
    +84       *
    +85       * @param maxWait the number of seconds the spin lock will wait
    +86       */
    +87      public void setMaxWait(long maxWait) {
    +88          this.maxWait = maxWait * 2; //sleep is for 500, so * 2
    +89      }
    +90  
    +91      /**
    +92       * Constructs a new spin lock on the given directory.
    +93       *
    +94       * @param directory the directory to monitor/lock
    +95       * @throws InvalidDirectoryException thrown if there is an issue with the
    +96       * directory provided
    +97       * @throws DirectoryLockException thrown there is an issue obtaining a
    +98       * handle to the lock file
    +99       */
    +100     public DirectorySpinLock(File directory) throws InvalidDirectoryException, DirectoryLockException {
    +101         checkDirectory(directory);
    +102         lockFile = new File(directory, LOCK_NAME);
    +103         RandomAccessFile file = null;
    +104         try {
    +105             file = new RandomAccessFile(lockFile, "rw");
    +106         } catch (FileNotFoundException ex) {
    +107             throw new DirectoryLockException("Lock file not found", ex);
    +108         }
    +109         channel = file.getChannel();
    +110     }
    +111 
    +112     /**
    +113      * Attempts to obtain an exclusive lock; an exception is thrown if the lock
    +114      * could not be obtained. This method may block for a few seconds if a lock
    +115      * cannot be obtained.
    +116      *
    +117      * @throws DirectoryLockException thrown if there is an exception obtaining
    +118      * the lock
    +119      */
    +120     public void obtainSharedLock() throws DirectoryLockException {
    +121         obtainLock(true);
    +122     }
    +123 
    +124     /**
    +125      * Attempts to obtain an exclusive lock; an exception is thrown if the lock
    +126      * could not be obtained. This method may block for a few seconds if a lock
    +127      * cannot be obtained.
    +128      *
    +129      * @throws DirectoryLockException thrown if there is an exception obtaining
    +130      * the lock
    +131      */
    +132     public void obtainExclusiveLock() throws DirectoryLockException {
    +133         obtainLock(false);
    +134     }
    +135 
    +136     /**
    +137      * Attempts to obtain a lock; an exception is thrown if the lock could not
    +138      * be obtained. This method may block for a few seconds if a lock cannot be
    +139      * obtained.
    +140      *
    +141      * @param shared true if the lock is shared, otherwise false
    +142      * @param maxWait the maximum time to wait, in seconds, while trying to
    +143      * obtain the lock
    +144      * @throws DirectoryLockException thrown if there is an exception obtaining
    +145      * the lock
    +146      */
    +147     protected void obtainLock(boolean shared, long maxWait) throws DirectoryLockException {
    +148         setMaxWait(maxWait);
    +149         obtainLock(shared);
    +150     }
    +151 
    +152     /**
    +153      * Attempts to obtain a lock; an exception is thrown if the lock could not
    +154      * be obtained. This method may block for a few seconds if a lock cannot be
    +155      * obtained.
    +156      *
    +157      * @param shared true if the lock is shared, otherwise false
    +158      * @throws DirectoryLockException thrown if there is an exception obtaining
    +159      * the lock
    +160      */
    +161     protected void obtainLock(boolean shared) throws DirectoryLockException {
    +162         if (lock != null) {
    +163             release();
    +164         }
    +165         if (channel == null) {
    +166             throw new DirectoryLockException("Unable to create lock, no file channel exists");
    +167         }
    +168         int count = 0;
    +169         Exception lastException = null;
    +170         while (lock == null && count++ < maxWait) {
    +171             try {
    +172                 lock = channel.lock(0, Long.MAX_VALUE, shared);
    +173             } catch (AsynchronousCloseException ex) {
    +174                 lastException = ex;
    +175             } catch (ClosedChannelException ex) {
    +176                 lastException = ex;
    +177             } catch (FileLockInterruptionException ex) {
    +178                 lastException = ex;
    +179             } catch (OverlappingFileLockException ex) {
    +180                 lastException = ex;
    +181             } catch (NonWritableChannelException ex) {
    +182                 lastException = ex;
    +183             } catch (IOException ex) {
    +184                 lastException = ex;
    +185             }
    +186             try {
    +187                 Thread.sleep(500);
    +188             } catch (InterruptedException ex) {
    +189                 Thread.currentThread().interrupt();
    +190             }
    +191         }
    +192         if (lock == null) {
    +193             if (lastException == null) {
    +194                 throw new DirectoryLockException("Unable to obtain lock");
    +195             } else {
    +196                 throw new DirectoryLockException("Unable to obtain lock", lastException);
    +197             }
    +198         }
    +199     }
    +200 
    +201     /**
    +202      * Performs a few simple rudimentary checks on the specified directory.
    +203      * Specifically, does the file exist and is it a directory.
    +204      *
    +205      * @param directory the File object to inspect
    +206      * @throws InvalidDirectoryException thrown if the directory is null or is
    +207      * not a directory
    +208      */
    +209     private void checkDirectory(File directory) throws InvalidDirectoryException {
    +210         if (directory == null) {
    +211             throw new InvalidDirectoryException("Unable to obtain lock on a null File");
    +212         }
    +213         if (!directory.isDirectory()) {
    +214             final String msg = String.format("File, '%s', does not exist or is not a directory", directory.getAbsolutePath());
    +215             throw new InvalidDirectoryException(msg);
    +216         }
    +217     }
    +218 
    +219     /**
    +220      * Releases any locks and closes the underlying channel.
    +221      *
    +222      * @throws IOException if an IO Exception occurs
    +223      */
    +224     @Override
    +225     public void close() throws IOException {
    +226         release();
    +227 // TODO uncomment this once support for 1.6 is dropped.
    +228 //        if (lock != null) {
    +229 //            try {
    +230 //                lock.close();
    +231 //            } catch (IOException ex) {
    +232 //                Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to close file lock due to IO Exception", ex);
    +233 //            }
    +234 //        }
    +235         if (channel != null) {
    +236             try {
    +237                 channel.close();
    +238             } catch (IOException ex) {
    +239                 Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to close the channel for the file lock", ex);
    +240             }
    +241         }
    +242         if (lockFile != null) {
    +243             if (lockFile.exists()) {
    +244                 /* yes, this delete could fail which is totally fine. The other
    +245                  * thread holding the lock while delete it.
    +246                  */
    +247                 lockFile.delete();
    +248             }
    +249         }
    +250     }
    +251 
    +252     /**
    +253      * Releases the lock. Any exceptions that are thrown by the underlying lock
    +254      * during the release are ignored.
    +255      */
    +256     public void release() {
    +257         if (lock != null) {
    +258             try {
    +259                 lock.release();
    +260             } catch (ClosedChannelException ex) {
    +261                 Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Uable to release file lock", ex);
    +262             } catch (IOException ex) {
    +263                 Logger.getLogger(DirectorySpinLock.class.getName()).log(Level.FINEST, "Unable to release file lock due to IO Exception", ex);
    +264             }
    +265         }
    +266     }
    +267 }
    +
    +
    + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/InvalidDirectoryException.html b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/InvalidDirectoryException.html new file mode 100644 index 000000000..3a9c3f076 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/InvalidDirectoryException.html @@ -0,0 +1,81 @@ + + + + +InvalidDirectoryException xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.concurrency;
    +20  
    +21  /**
    +22   * If thrown, indicates that there is a problem with a directory.
    +23   *
    +24   * @author Jeremy Long (jeremy.long@owasp.org)
    +25   */
    +26  public class InvalidDirectoryException extends Exception {
    +27  
    +28      /**
    +29       * Default serial version UID.
    +30       */
    +31      private static final long serialVersionUID = 1L;
    +32  
    +33      /**
    +34       * Constructs a new Invalid Directory Exception.
    +35       */
    +36      public InvalidDirectoryException() {
    +37          super();
    +38      }
    +39  
    +40      /**
    +41       * Constructs a new Invalid Directory Exception.
    +42       *
    +43       * @param msg the message describing the exception
    +44       */
    +45      public InvalidDirectoryException(String msg) {
    +46          super(msg);
    +47      }
    +48  
    +49      /**
    +50       * Constructs a new Invalid Directory Exception.
    +51       *
    +52       * @param ex the cause of the exception
    +53       */
    +54      public InvalidDirectoryException(Throwable ex) {
    +55          super(ex);
    +56      }
    +57  
    +58      /**
    +59       * Constructs a new Invalid Directory Exception.
    +60       *
    +61       * @param msg the message describing the exception
    +62       * @param ex the cause of the exception
    +63       */
    +64      public InvalidDirectoryException(String msg, Throwable ex) {
    +65          super(msg, ex);
    +66      }
    +67  }
    +
    +
    + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/package-frame.html new file mode 100644 index 000000000..93dcce729 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/package-frame.html @@ -0,0 +1,30 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.concurrency + + + + +

    + org.owasp.dependencycheck.concurrency +

    + +

    Classes

    + + + + + \ No newline at end of file diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/package-summary.html new file mode 100644 index 000000000..87866e4cb --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/concurrency/package-summary.html @@ -0,0 +1,77 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.concurrency + + + +
    + +
    +
    + +
    + +

    Package org.owasp.dependencycheck.concurrency

    + + + + + + + + + + + + + + + + + + +
    Class Summary
    + DirectoryLockException +
    + DirectorySpinLock +
    + InvalidDirectoryException +
    + +
    + +
    +
    + +
    +
    + Copyright © 2012-2013 OWASP. All Rights Reserved. + + \ No newline at end of file diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/BaseIndex.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/BaseIndex.html new file mode 100644 index 000000000..efe15660c --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/BaseIndex.html @@ -0,0 +1,131 @@ + + + + +BaseIndex xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.cpe;
    +20  
    +21  import java.io.File;
    +22  import java.io.IOException;
    +23  import java.util.logging.Level;
    +24  import java.util.logging.Logger;
    +25  import org.apache.lucene.store.Directory;
    +26  import org.apache.lucene.store.FSDirectory;
    +27  import org.owasp.dependencycheck.utils.Settings;
    +28  
    +29  /**
    +30   * The Base Index class used to access the CPE Index.
    +31   *
    +32   * @author Jeremy Long (jeremy.long@owasp.org)
    +33   */
    +34  public abstract class BaseIndex {
    +35  
    +36      /**
    +37       * The Lucene directory containing the index.
    +38       */
    +39      private Directory directory;
    +40      /**
    +41       * Indicates whether or not the Lucene Index is open.
    +42       */
    +43      private boolean indexOpen = false;
    +44  
    +45      /**
    +46       * Gets the directory.
    +47       *
    +48       * @return the directory
    +49       */
    +50      public Directory getDirectory() {
    +51          return directory;
    +52      }
    +53  
    +54      /**
    +55       * Opens the CPE Index.
    +56       *
    +57       * @throws IOException is thrown if an IOException occurs opening the index.
    +58       */
    +59      public void open() throws IOException {
    +60          directory = this.openDirectory();
    +61          indexOpen = true;
    +62      }
    +63  
    +64      /**
    +65       * Closes the CPE Index.
    +66       */
    +67      public void close() {
    +68          try {
    +69              directory.close();
    +70          } catch (IOException ex) {
    +71              final String msg = "Unable to update database due to an IO error.";
    +72              Logger.getLogger(BaseIndex.class.getName()).log(Level.SEVERE, msg);
    +73              Logger.getLogger(BaseIndex.class.getName()).log(Level.FINE, null, ex);
    +74          } finally {
    +75              directory = null;
    +76          }
    +77          indexOpen = false;
    +78  
    +79      }
    +80  
    +81      /**
    +82       * Returns the status of the data source - is the index open.
    +83       *
    +84       * @return true or false.
    +85       */
    +86      public boolean isOpen() {
    +87          return indexOpen;
    +88      }
    +89  
    +90      /**
    +91       * Returns the Lucene directory object for the CPE Index.
    +92       *
    +93       * @return the Lucene Directory object for the CPE Index.
    +94       * @throws IOException is thrown if an IOException occurs.
    +95       */
    +96      protected Directory openDirectory() throws IOException {
    +97          final File path = getDataDirectory();
    +98          return FSDirectory.open(path);
    +99      }
    +100 
    +101     /**
    +102      * Retrieves the directory that the JAR file exists in so that we can ensure
    +103      * we always use a common data directory.
    +104      *
    +105      * @return the data directory for this index.
    +106      * @throws IOException is thrown if an IOException occurs of course...
    +107      */
    +108     public static File getDataDirectory() throws IOException {
    +109         final File path = Settings.getFile(Settings.KEYS.CPE_DATA_DIRECTORY);
    +110         if (!path.exists()) {
    +111             if (!path.mkdirs()) {
    +112                 throw new IOException("Unable to create CPE Data directory");
    +113             }
    +114         }
    +115         return path;
    +116     }
    +117 }
    +
    +
    + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/CpeIndexReader.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/CpeIndexReader.html new file mode 100644 index 000000000..71578c265 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/CpeIndexReader.html @@ -0,0 +1,193 @@ + + + + +CpeIndexReader xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.cpe;
    +20  
    +21  import java.io.IOException;
    +22  import java.util.HashMap;
    +23  import java.util.Map;
    +24  import java.util.logging.Level;
    +25  import java.util.logging.Logger;
    +26  import org.apache.lucene.analysis.Analyzer;
    +27  import org.apache.lucene.analysis.core.KeywordAnalyzer;
    +28  import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
    +29  import org.apache.lucene.document.Document;
    +30  import org.apache.lucene.index.CorruptIndexException;
    +31  import org.apache.lucene.index.DirectoryReader;
    +32  import org.apache.lucene.index.IndexReader;
    +33  import org.apache.lucene.queryparser.classic.ParseException;
    +34  import org.apache.lucene.queryparser.classic.QueryParser;
    +35  import org.apache.lucene.search.IndexSearcher;
    +36  import org.apache.lucene.search.Query;
    +37  import org.apache.lucene.search.TopDocs;
    +38  import org.apache.lucene.util.Version;
    +39  import org.owasp.dependencycheck.data.lucene.FieldAnalyzer;
    +40  import org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer;
    +41  
    +42  /**
    +43   *
    +44   * @author Jeremy Long (jeremy.long@owasp.org)
    +45   */
    +46  public class CpeIndexReader extends BaseIndex {
    +47  
    +48      /**
    +49       * The Lucene IndexReader.
    +50       */
    +51      private IndexReader indexReader;
    +52      /**
    +53       * The Lucene IndexSearcher.
    +54       */
    +55      private IndexSearcher indexSearcher;
    +56      /**
    +57       * The Lucene Analyzer used for Searching.
    +58       */
    +59      private Analyzer searchingAnalyzer;
    +60      /**
    +61       * The Lucene QueryParser used for Searching.
    +62       */
    +63      private QueryParser queryParser;
    +64      /**
    +65       * The search field analyzer for the product field.
    +66       */
    +67      private SearchFieldAnalyzer productSearchFieldAnalyzer;
    +68      /**
    +69       * The search field analyzer for the vendor field.
    +70       */
    +71      private SearchFieldAnalyzer vendorSearchFieldAnalyzer;
    +72  
    +73      /**
    +74       * Opens the CPE Index.
    +75       *
    +76       * @throws IOException is thrown if an IOException occurs opening the index.
    +77       */
    +78      @Override
    +79      public void open() throws IOException {
    +80          //TODO add spinlock (shared)
    +81          super.open();
    +82          indexReader = DirectoryReader.open(getDirectory());
    +83          indexSearcher = new IndexSearcher(indexReader);
    +84          searchingAnalyzer = createSearchingAnalyzer();
    +85          queryParser = new QueryParser(Version.LUCENE_43, Fields.DOCUMENT_KEY, searchingAnalyzer);
    +86      }
    +87  
    +88      /**
    +89       * Closes the CPE Index.
    +90       */
    +91      @Override
    +92      public void close() {
    +93          //TODO remove spinlock (shared)
    +94          if (searchingAnalyzer != null) {
    +95              searchingAnalyzer.close();
    +96              searchingAnalyzer = null;
    +97          }
    +98          if (indexReader != null) {
    +99              try {
    +100                 indexReader.close();
    +101             } catch (IOException ex) {
    +102                 Logger.getLogger(CpeIndexReader.class.getName()).log(Level.FINEST, null, ex);
    +103             }
    +104             indexReader = null;
    +105         }
    +106         queryParser = null;
    +107         indexSearcher = null;
    +108         super.close();
    +109     }
    +110 
    +111     /**
    +112      * Searches the index using the given search string.
    +113      *
    +114      * @param searchString the query text
    +115      * @param maxQueryResults the maximum number of documents to return
    +116      * @return the TopDocs found by the search
    +117      * @throws ParseException thrown when the searchString is invalid
    +118      * @throws IOException is thrown if there is an issue with the underlying
    +119      * Index
    +120      */
    +121     public TopDocs search(String searchString, int maxQueryResults) throws ParseException, IOException {
    +122         final Query query = queryParser.parse(searchString);
    +123         return indexSearcher.search(query, maxQueryResults);
    +124     }
    +125 
    +126     /**
    +127      * Searches the index using the given query.
    +128      *
    +129      * @param query the query used to search the index
    +130      * @param maxQueryResults the max number of results to return
    +131      * @return the TopDocs found be the query
    +132      * @throws CorruptIndexException thrown if the Index is corrupt
    +133      * @throws IOException thrown if there is an IOException
    +134      */
    +135     public TopDocs search(Query query, int maxQueryResults) throws CorruptIndexException, IOException {
    +136         resetSearchingAnalyzer();
    +137         return indexSearcher.search(query, maxQueryResults);
    +138     }
    +139 
    +140     /**
    +141      * Retrieves a document from the Index.
    +142      *
    +143      * @param documentId the id of the document to retrieve
    +144      * @return the Document
    +145      * @throws IOException thrown if there is an IOException
    +146      */
    +147     public Document getDocument(int documentId) throws IOException {
    +148         return indexSearcher.doc(documentId);
    +149     }
    +150 
    +151     /**
    +152      * Creates an Analyzer for searching the CPE Index.
    +153      *
    +154      * @return the CPE Analyzer.
    +155      */
    +156     @SuppressWarnings("unchecked")
    +157     private Analyzer createSearchingAnalyzer() {
    +158         final Map fieldAnalyzers = new HashMap();
    +159         fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
    +160         productSearchFieldAnalyzer = new SearchFieldAnalyzer(Version.LUCENE_43);
    +161         vendorSearchFieldAnalyzer = new SearchFieldAnalyzer(Version.LUCENE_43);
    +162         fieldAnalyzers.put(Fields.PRODUCT, productSearchFieldAnalyzer);
    +163         fieldAnalyzers.put(Fields.VENDOR, vendorSearchFieldAnalyzer);
    +164 
    +165         return new PerFieldAnalyzerWrapper(new FieldAnalyzer(Version.LUCENE_43), fieldAnalyzers);
    +166     }
    +167 
    +168     /**
    +169      * Resets the searching analyzers
    +170      */
    +171     private void resetSearchingAnalyzer() {
    +172         if (productSearchFieldAnalyzer != null) {
    +173             productSearchFieldAnalyzer.clear();
    +174         }
    +175         if (vendorSearchFieldAnalyzer != null) {
    +176             vendorSearchFieldAnalyzer.clear();
    +177         }
    +178     }
    +179 }
    +
    +
    + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.html new file mode 100644 index 000000000..1094cb6e1 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.html @@ -0,0 +1,163 @@ + + + + +CpeIndexWriter xref + + + +
    +
    +1   /*
    +2    * This file is part of dependency-check-core.
    +3    *
    +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
    +5    * under the terms of the GNU General Public License as published by the Free
    +6    * Software Foundation, either version 3 of the License, or (at your option) any
    +7    * later version.
    +8    *
    +9    * Dependency-check-core is distributed in the hope that it will be useful, but
    +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    +12   * details.
    +13   *
    +14   * You should have received a copy of the GNU General Public License along with
    +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
    +16   *
    +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
    +18   */
    +19  package org.owasp.dependencycheck.data.cpe;
    +20  
    +21  import java.io.IOException;
    +22  import java.util.HashMap;
    +23  import java.util.Map;
    +24  import java.util.logging.Level;
    +25  import java.util.logging.Logger;
    +26  import org.apache.lucene.analysis.Analyzer;
    +27  import org.apache.lucene.analysis.core.KeywordAnalyzer;
    +28  import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
    +29  import org.apache.lucene.document.Document;
    +30  import org.apache.lucene.document.Field;
    +31  import org.apache.lucene.document.StringField;
    +32  import org.apache.lucene.document.TextField;
    +33  import org.apache.lucene.index.CorruptIndexException;
    +34  import org.apache.lucene.index.IndexWriter;
    +35  import org.apache.lucene.index.IndexWriterConfig;
    +36  import org.apache.lucene.index.Term;
    +37  import org.apache.lucene.util.Version;
    +38  import org.owasp.dependencycheck.data.lucene.FieldAnalyzer;
    +39  
    +40  /**
    +41   *
    +42   * @author Jeremy Long (jeremy.long@owasp.org)
    +43   */
    +44  public class CpeIndexWriter extends BaseIndex {
    +45  
    +46      /**
    +47       * The IndexWriter for the Lucene index.
    +48       */
    +49      private IndexWriter indexWriter;
    +50      /**
    +51       * The Lucene Analyzer used for Indexing.
    +52       */
    +53      private Analyzer indexingAnalyzer;
    +54  
    +55      /**
    +56       * Opens the CPE Index.
    +57       *
    +58       * @throws IOException is thrown if an IOException occurs opening the index.
    +59       */
    +60      @Override
    +61      public void open() throws IOException {
    +62          //TODO add spinlock
    +63          super.open();
    +64          indexingAnalyzer = createIndexingAnalyzer();
    +65          final IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_43, indexingAnalyzer);
    +66          indexWriter = new IndexWriter(getDirectory(), conf);
    +67      }
    +68  
    +69      /**
    +70       * Closes the CPE Index.
    +71       */
    +72      @Override
    +73      public void close() {
    +74          //TODO remove spinlock
    +75          if (indexWriter != null) {
    +76              commit();
    +77              try {
    +78                  indexWriter.close(true);
    +79              } catch (CorruptIndexException ex) {
    +80                  final String msg = "Unable to update database, there is a corrupt index.";
    +81                  Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
    +82                  Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
    +83              } catch (IOException ex) {
    +84                  final String msg = "Unable to update database due to an IO error.";
    +85                  Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
    +86                  Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
    +87              } finally {
    +88                  indexWriter = null;
    +89              }
    +90          }
    +91          if (indexingAnalyzer != null) {
    +92              indexingAnalyzer.close();
    +93              indexingAnalyzer = null;
    +94          }
    +95          super.close();
    +96      }
    +97  
    +98      /**
    +99       * Commits any pending changes.
    +100      */
    +101     public void commit() {
    +102         if (indexWriter != null) {
    +103             try {
    +104                 indexWriter.forceMerge(1);
    +105                 indexWriter.commit();
    +106             } catch (CorruptIndexException ex) {
    +107                 final String msg = "Unable to update database, there is a corrupt index.";
    +108                 Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
    +109                 Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
    +110             } catch (IOException ex) {
    +111                 final String msg = "Unable to update database due to an IO error.";
    +112                 Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg);
    +113                 Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex);
    +114             }
    +115         }
    +116     }
    +117 
    +118     /**
    +119      * Creates the indexing analyzer for the CPE Index.
    +120      *
    +121      * @return the CPE Analyzer.
    +122      */
    +123     @SuppressWarnings("unchecked")
    +124     private Analyzer createIndexingAnalyzer() {
    +125         final Map fieldAnalyzers = new HashMap();
    +126         fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer());
    +127         return new PerFieldAnalyzerWrapper(new FieldAnalyzer(Version.LUCENE_43), fieldAnalyzers);
    +128     }
    +129 
    +130     /**
    +131      * Saves a CPE IndexEntry into the Lucene index.
    +132      *
    +133      * @param entry a CPE entry.
    +134      * @throws CorruptIndexException is thrown if the index is corrupt.
    +135      * @throws IOException is thrown if an IOException occurs.
    +136      */
    +137     public void saveEntry(IndexEntry entry) throws CorruptIndexException, IOException {
    +138         final Document doc = new Document();
    +139         final Field documentKey = new StringField(Fields.DOCUMENT_KEY, entry.getDocumentId(), Field.Store.NO);
    +140         final Field vendor = new TextField(Fields.VENDOR, entry.getVendor(), Field.Store.YES);
    +141         final Field product = new TextField(Fields.PRODUCT, entry.getProduct(), Field.Store.YES);
    +142         doc.add(documentKey);
    +143         doc.add(vendor);
    +144         doc.add(product);
    +145 
    +146         final Term term = new Term(Fields.DOCUMENT_KEY, entry.getDocumentId());
    +147         indexWriter.updateDocument(term, doc);
    +148     }
    +149 }
    +
    +
    + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-frame.html index 4c3731d06..e85b08c99 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cpe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cpe @@ -16,19 +16,16 @@
    • - CPEAnalyzer + BaseIndex +
    • +
    • + CpeIndexReader +
    • +
    • + CpeIndexWriter
    • Fields -
    • -
    • - IdentifierConfidence -
    • -
    • - IdentifierMatch -
    • -
    • - Index
    • IndexEntry diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-summary.html index 7f07b545b..17387aca4 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/cpe/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cpe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cpe @@ -37,28 +37,23 @@ - CPEAnalyzer + BaseIndex + + + + + CpeIndexReader + + + + + CpeIndexWriter Fields - - - - IdentifierConfidence - - - - - IdentifierMatch - - - - - Index - diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-frame.html index 45e1206ef..950eed475 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cwe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cwe diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-summary.html index fa1121244..edfa50523 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/cwe/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.cwe + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.cwe diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-frame.html index b5917b4fc..c3147358c 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.lucene + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.lucene @@ -16,9 +16,6 @@
      • - AbstractIndex -
      • -
      • AbstractTokenizingFilter
      • diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-summary.html index 99073fc7b..c14275e1f 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/lucene/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.lucene + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.lucene @@ -36,11 +36,6 @@ - - AbstractIndex - - - AbstractTokenizingFilter diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/CveDB.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/CveDB.html index 42907442d..b118bd1fc 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/CveDB.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/CveDB.html @@ -68,7 +68,7 @@ 58 /** 59 * The version of the current DB Schema. 60 */ -61 public static final String DB_SCHEMA_VERSION = "2.5"; +61 public static final String DB_SCHEMA_VERSION = "2.6"; 62 /** 63 * Database connection 64 */ @@ -172,573 +172,562 @@ 162 value = "DMI_EMPTY_DB_PASSWORD", 163 justification = "Yes, I know... Blank password.") 164 public void open() throws IOException, SQLException, DatabaseException, ClassNotFoundException { -165 /* -166 * TODO - make it so we can exteralize the database (lucene index is a problem), could I store it as a blob -167 * and just download it when needed? -168 */ -169 // String dbDriver = Settings.getString(Settings.KEYS.DB_DRIVER); -170 // String dbConnStr = Settings.getString(Settings.KEYS.DB_CONNECTION_STRING); -171 // if (dbDriver != null && dbConnStr != null) { -172 // Class.forName(dbDriver); -173 // conn = DriverManager.getConnection(dbConnStr); -174 // } else { //use the embeded version -175 final String fileName = CveDB.getDataDirectory().getCanonicalPath(); -176 final File f = new File(fileName, "cve." + DB_SCHEMA_VERSION); -177 final File check = new File(f.getAbsolutePath() + ".h2.db"); -178 final boolean createTables = !check.exists(); -179 final String connStr = "jdbc:h2:file:" + f.getAbsolutePath(); -180 Class.forName("org.h2.Driver"); -181 conn = DriverManager.getConnection(connStr, "sa", ""); -182 if (createTables) { -183 createTables(); -184 } -185 // } +165 final String fileName = CveDB.getDataDirectory().getCanonicalPath(); +166 final File f = new File(fileName, "cve." + DB_SCHEMA_VERSION); +167 final File check = new File(f.getAbsolutePath() + ".h2.db"); +168 final boolean createTables = !check.exists(); +169 final String connStr = String.format("jdbc:h2:file:%s;AUTO_SERVER=TRUE", f.getAbsolutePath()); +170 Class.forName("org.h2.Driver"); +171 conn = DriverManager.getConnection(connStr, "sa", ""); +172 if (createTables) { +173 createTables(); +174 } +175 } +176 +177 /** +178 * Commits all completed transactions. +179 * +180 * @throws SQLException thrown if a SQL Exception occurs +181 */ +182 public void commit() throws SQLException { +183 if (conn != null) { +184 conn.commit(); +185 } 186 } 187 188 /** -189 * Commits all completed transactions. +189 * Cleans up the object and ensures that "close" has been called. 190 * -191 * @throws SQLException thrown if a SQL Exception occurs +191 * @throws Throwable thrown if there is a problem 192 */ -193 public void commit() throws SQLException { -194 if (conn != null) { -195 conn.commit(); -196 } +193 @Override +194 protected void finalize() throws Throwable { +195 close(); +196 super.finalize(); //not necessary if extending Object. 197 } 198 199 /** -200 * Cleans up the object and ensures that "close" has been called. -201 * -202 * @throws Throwable thrown if there is a problem -203 */ -204 @Override -205 protected void finalize() throws Throwable { -206 close(); -207 super.finalize(); //not necessary if extending Object. -208 } -209 -210 /** -211 * Closes the DB4O database. Close should be called on this object when it -212 * is done being used. -213 */ -214 public void close() { -215 if (conn != null) { -216 try { -217 conn.close(); -218 } catch (SQLException ex) { -219 final String msg = "There was an error attempting to close the CveDB, see the log for more details."; -220 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, msg, ex); -221 Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex); -222 } -223 conn = null; -224 } -225 } -226 -227 /** -228 * Searches the CPE entries in the database and retrieves all entries for a -229 * given vendor and product combination. The returned list will include all -230 * versions of the product that are registered in the NVD CVE data. -231 * -232 * @param vendor the identified vendor name of the dependency being analyzed -233 * @param product the identified name of the product of the dependency being -234 * analyzed -235 * @return a set of vulnerable software -236 */ -237 public Set<VulnerableSoftware> getCPEs(String vendor, String product) { -238 final Set<VulnerableSoftware> cpe = new HashSet<VulnerableSoftware>(); -239 ResultSet rs = null; -240 PreparedStatement ps = null; -241 try { -242 ps = conn.prepareStatement(SELECT_CPE_ENTRIES); -243 ps.setString(1, vendor); -244 ps.setString(2, product); -245 rs = ps.executeQuery(); -246 -247 while (rs.next()) { -248 final VulnerableSoftware vs = new VulnerableSoftware(); -249 vs.setCpe(rs.getString(1)); -250 cpe.add(vs); -251 } -252 } catch (SQLException ex) { -253 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex); -254 } finally { -255 closeResultSet(rs); -256 closeStatement(ps); -257 } -258 return cpe; -259 } -260 -261 /** -262 * Retrieves the vulnerabilities associated with the specified CPE. -263 * -264 * @param cpeStr the CPE name -265 * @return a list of Vulnerabilities -266 * @throws DatabaseException thrown if there is an exception retrieving data -267 */ -268 public List<Vulnerability> getVulnerabilities(String cpeStr) throws DatabaseException { -269 ResultSet rs = null; -270 final VulnerableSoftware cpe = new VulnerableSoftware(); -271 try { -272 cpe.parseName(cpeStr); -273 } catch (UnsupportedEncodingException ex) { -274 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex); -275 } -276 final DependencyVersion detectedVersion = parseDependencyVersion(cpe); -277 final List<Vulnerability> vulnerabilities = new ArrayList<Vulnerability>(); -278 -279 PreparedStatement ps; -280 final HashSet<String> cveEntries = new HashSet<String>(); -281 try { -282 ps = conn.prepareStatement(SELECT_CVE_FROM_SOFTWARE); -283 ps.setString(1, cpe.getVendor()); -284 ps.setString(2, cpe.getProduct()); -285 rs = ps.executeQuery(); -286 while (rs.next()) { -287 final String cveId = rs.getString(1); -288 final String cpeId = rs.getString(2); -289 final String previous = rs.getString(3); -290 if (!cveEntries.contains(cveId) && isAffected(cpe.getVendor(), cpe.getProduct(), detectedVersion, cpeId, previous)) { -291 cveEntries.add(cveId); -292 } -293 } -294 closeResultSet(rs); -295 closeStatement(ps); -296 for (String cve : cveEntries) { -297 final Vulnerability v = getVulnerability(cve); -298 vulnerabilities.add(v); -299 } -300 -301 } catch (SQLException ex) { -302 throw new DatabaseException("Exception retrieving vulnerability for " + cpeStr, ex); -303 } finally { -304 closeResultSet(rs); -305 } -306 return vulnerabilities; -307 } -308 -309 /** -310 * Gets a vulnerability for the provided CVE. -311 * -312 * @param cve the CVE to lookup -313 * @return a vulnerability object -314 * @throws DatabaseException if an exception occurs -315 */ -316 private Vulnerability getVulnerability(String cve) throws DatabaseException { -317 PreparedStatement psV = null; -318 PreparedStatement psR = null; -319 PreparedStatement psS = null; -320 ResultSet rsV = null; -321 ResultSet rsR = null; -322 ResultSet rsS = null; -323 Vulnerability vuln = null; -324 try { -325 psV = conn.prepareStatement(SELECT_VULNERABILITY); -326 psV.setString(1, cve); -327 rsV = psV.executeQuery(); -328 if (rsV.next()) { -329 vuln = new Vulnerability(); -330 vuln.setName(cve); -331 vuln.setDescription(rsV.getString(2)); -332 String cwe = rsV.getString(3); -333 if (cwe != null) { -334 final String name = CweDB.getCweName(cwe); -335 if (name != null) { -336 cwe += " " + name; -337 } -338 } -339 final int cveId = rsV.getInt(1); -340 vuln.setCwe(cwe); -341 vuln.setCvssScore(rsV.getFloat(4)); -342 vuln.setCvssAccessVector(rsV.getString(5)); -343 vuln.setCvssAccessComplexity(rsV.getString(6)); -344 vuln.setCvssAuthentication(rsV.getString(7)); -345 vuln.setCvssConfidentialityImpact(rsV.getString(8)); -346 vuln.setCvssIntegrityImpact(rsV.getString(9)); -347 vuln.setCvssAvailabilityImpact(rsV.getString(10)); -348 -349 psR = conn.prepareStatement(SELECT_REFERENCE); -350 psR.setInt(1, cveId); -351 rsR = psR.executeQuery(); -352 while (rsR.next()) { -353 vuln.addReference(rsR.getString(1), rsR.getString(2), rsR.getString(3)); -354 } -355 psS = conn.prepareStatement(SELECT_SOFTWARE); -356 psS.setInt(1, cveId); -357 rsS = psS.executeQuery(); -358 while (rsS.next()) { -359 final String cpe = rsS.getString(1); -360 final String prevVersion = rsS.getString(2); -361 if (prevVersion == null) { -362 vuln.addVulnerableSoftware(cpe); -363 } else { -364 vuln.addVulnerableSoftware(cpe, prevVersion); -365 } -366 } -367 } -368 } catch (SQLException ex) { -369 throw new DatabaseException("Error retrieving " + cve, ex); -370 } finally { -371 closeResultSet(rsV); -372 closeResultSet(rsR); -373 closeResultSet(rsS); -374 closeStatement(psV); -375 closeStatement(psR); -376 closeStatement(psS); -377 } -378 return vuln; -379 } -380 -381 /** -382 * Updates the vulnerability within the database. If the vulnerability does -383 * not exist it will be added. -384 * -385 * @param vuln the vulnerability to add to the database -386 * @throws DatabaseException is thrown if the database -387 */ -388 public void updateVulnerability(Vulnerability vuln) throws DatabaseException { -389 PreparedStatement selectVulnerabilityId = null; -390 PreparedStatement deleteReferences = null; -391 PreparedStatement deleteSoftware = null; -392 PreparedStatement updateVulnerability = null; -393 PreparedStatement insertVulnerability = null; -394 PreparedStatement insertReference = null; -395 PreparedStatement selectCpeId = null; -396 PreparedStatement insertCpe = null; -397 PreparedStatement insertSoftware = null; -398 -399 try { -400 selectVulnerabilityId = conn.prepareStatement(SELECT_VULNERABILITY_ID); -401 deleteReferences = conn.prepareStatement(DELETE_REFERENCE); -402 deleteSoftware = conn.prepareStatement(DELETE_SOFTWARE); -403 updateVulnerability = conn.prepareStatement(UPDATE_VULNERABILITY); -404 insertVulnerability = conn.prepareStatement(INSERT_VULNERABILITY, Statement.RETURN_GENERATED_KEYS); -405 insertReference = conn.prepareStatement(INSERT_REFERENCE); -406 selectCpeId = conn.prepareStatement(SELECT_CPE_ID); -407 insertCpe = conn.prepareStatement(INSERT_CPE, Statement.RETURN_GENERATED_KEYS); -408 insertSoftware = conn.prepareStatement(INSERT_SOFTWARE); -409 int vulnerabilityId = 0; -410 selectVulnerabilityId.setString(1, vuln.getName()); -411 ResultSet rs = selectVulnerabilityId.executeQuery(); -412 if (rs.next()) { -413 vulnerabilityId = rs.getInt(1); -414 // first delete any existing vulnerability info. We don't know what was updated. yes, slower but atm easier. -415 deleteReferences.setInt(1, vulnerabilityId); -416 deleteReferences.execute(); -417 deleteSoftware.setInt(1, vulnerabilityId); -418 deleteSoftware.execute(); -419 } -420 closeResultSet(rs); -421 rs = null; -422 if (vulnerabilityId != 0) { -423 updateVulnerability.setString(1, vuln.getDescription()); -424 updateVulnerability.setString(2, vuln.getCwe()); -425 updateVulnerability.setFloat(3, vuln.getCvssScore()); -426 updateVulnerability.setString(4, vuln.getCvssAccessVector()); -427 updateVulnerability.setString(5, vuln.getCvssAccessComplexity()); -428 updateVulnerability.setString(6, vuln.getCvssAuthentication()); -429 updateVulnerability.setString(7, vuln.getCvssConfidentialityImpact()); -430 updateVulnerability.setString(8, vuln.getCvssIntegrityImpact()); -431 updateVulnerability.setString(9, vuln.getCvssAvailabilityImpact()); -432 updateVulnerability.setInt(10, vulnerabilityId); -433 updateVulnerability.executeUpdate(); -434 } else { -435 insertVulnerability.setString(1, vuln.getName()); -436 insertVulnerability.setString(2, vuln.getDescription()); -437 insertVulnerability.setString(3, vuln.getCwe()); -438 insertVulnerability.setFloat(4, vuln.getCvssScore()); -439 insertVulnerability.setString(5, vuln.getCvssAccessVector()); -440 insertVulnerability.setString(6, vuln.getCvssAccessComplexity()); -441 insertVulnerability.setString(7, vuln.getCvssAuthentication()); -442 insertVulnerability.setString(8, vuln.getCvssConfidentialityImpact()); -443 insertVulnerability.setString(9, vuln.getCvssIntegrityImpact()); -444 insertVulnerability.setString(10, vuln.getCvssAvailabilityImpact()); -445 insertVulnerability.execute(); -446 try { -447 rs = insertVulnerability.getGeneratedKeys(); -448 rs.next(); -449 vulnerabilityId = rs.getInt(1); -450 } catch (SQLException ex) { -451 final String msg = String.format("Unable to retrieve id for new vulnerability for '%s'", vuln.getName()); -452 throw new DatabaseException(msg, ex); -453 } finally { -454 closeResultSet(rs); -455 rs = null; -456 } -457 } -458 insertReference.setInt(1, vulnerabilityId); -459 for (Reference r : vuln.getReferences()) { -460 insertReference.setString(2, r.getName()); -461 insertReference.setString(3, r.getUrl()); -462 insertReference.setString(4, r.getSource()); -463 insertReference.execute(); -464 } -465 for (VulnerableSoftware s : vuln.getVulnerableSoftware()) { -466 int cpeProductId = 0; -467 selectCpeId.setString(1, s.getName()); -468 try { -469 rs = selectCpeId.executeQuery(); -470 if (rs.next()) { -471 cpeProductId = rs.getInt(1); -472 } -473 } catch (SQLException ex) { -474 throw new DatabaseException("Unable to get primary key for new cpe: " + s.getName(), ex); -475 } finally { -476 closeResultSet(rs); -477 rs = null; +200 * Closes the DB4O database. Close should be called on this object when it +201 * is done being used. +202 */ +203 public void close() { +204 if (conn != null) { +205 try { +206 conn.close(); +207 } catch (SQLException ex) { +208 final String msg = "There was an error attempting to close the CveDB, see the log for more details."; +209 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, msg, ex); +210 Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex); +211 } +212 conn = null; +213 } +214 } +215 +216 /** +217 * Searches the CPE entries in the database and retrieves all entries for a +218 * given vendor and product combination. The returned list will include all +219 * versions of the product that are registered in the NVD CVE data. +220 * +221 * @param vendor the identified vendor name of the dependency being analyzed +222 * @param product the identified name of the product of the dependency being +223 * analyzed +224 * @return a set of vulnerable software +225 */ +226 public Set<VulnerableSoftware> getCPEs(String vendor, String product) { +227 final Set<VulnerableSoftware> cpe = new HashSet<VulnerableSoftware>(); +228 ResultSet rs = null; +229 PreparedStatement ps = null; +230 try { +231 ps = conn.prepareStatement(SELECT_CPE_ENTRIES); +232 ps.setString(1, vendor); +233 ps.setString(2, product); +234 rs = ps.executeQuery(); +235 +236 while (rs.next()) { +237 final VulnerableSoftware vs = new VulnerableSoftware(); +238 vs.setCpe(rs.getString(1)); +239 cpe.add(vs); +240 } +241 } catch (SQLException ex) { +242 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex); +243 } finally { +244 closeResultSet(rs); +245 closeStatement(ps); +246 } +247 return cpe; +248 } +249 +250 /** +251 * Retrieves the vulnerabilities associated with the specified CPE. +252 * +253 * @param cpeStr the CPE name +254 * @return a list of Vulnerabilities +255 * @throws DatabaseException thrown if there is an exception retrieving data +256 */ +257 public List<Vulnerability> getVulnerabilities(String cpeStr) throws DatabaseException { +258 ResultSet rs = null; +259 final VulnerableSoftware cpe = new VulnerableSoftware(); +260 try { +261 cpe.parseName(cpeStr); +262 } catch (UnsupportedEncodingException ex) { +263 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex); +264 } +265 final DependencyVersion detectedVersion = parseDependencyVersion(cpe); +266 final List<Vulnerability> vulnerabilities = new ArrayList<Vulnerability>(); +267 +268 PreparedStatement ps; +269 final HashSet<String> cveEntries = new HashSet<String>(); +270 try { +271 ps = conn.prepareStatement(SELECT_CVE_FROM_SOFTWARE); +272 ps.setString(1, cpe.getVendor()); +273 ps.setString(2, cpe.getProduct()); +274 rs = ps.executeQuery(); +275 while (rs.next()) { +276 final String cveId = rs.getString(1); +277 final String cpeId = rs.getString(2); +278 final String previous = rs.getString(3); +279 if (!cveEntries.contains(cveId) && isAffected(cpe.getVendor(), cpe.getProduct(), detectedVersion, cpeId, previous)) { +280 cveEntries.add(cveId); +281 } +282 } +283 closeResultSet(rs); +284 closeStatement(ps); +285 for (String cve : cveEntries) { +286 final Vulnerability v = getVulnerability(cve); +287 vulnerabilities.add(v); +288 } +289 +290 } catch (SQLException ex) { +291 throw new DatabaseException("Exception retrieving vulnerability for " + cpeStr, ex); +292 } finally { +293 closeResultSet(rs); +294 } +295 return vulnerabilities; +296 } +297 +298 /** +299 * Gets a vulnerability for the provided CVE. +300 * +301 * @param cve the CVE to lookup +302 * @return a vulnerability object +303 * @throws DatabaseException if an exception occurs +304 */ +305 private Vulnerability getVulnerability(String cve) throws DatabaseException { +306 PreparedStatement psV = null; +307 PreparedStatement psR = null; +308 PreparedStatement psS = null; +309 ResultSet rsV = null; +310 ResultSet rsR = null; +311 ResultSet rsS = null; +312 Vulnerability vuln = null; +313 try { +314 psV = conn.prepareStatement(SELECT_VULNERABILITY); +315 psV.setString(1, cve); +316 rsV = psV.executeQuery(); +317 if (rsV.next()) { +318 vuln = new Vulnerability(); +319 vuln.setName(cve); +320 vuln.setDescription(rsV.getString(2)); +321 String cwe = rsV.getString(3); +322 if (cwe != null) { +323 final String name = CweDB.getCweName(cwe); +324 if (name != null) { +325 cwe += " " + name; +326 } +327 } +328 final int cveId = rsV.getInt(1); +329 vuln.setCwe(cwe); +330 vuln.setCvssScore(rsV.getFloat(4)); +331 vuln.setCvssAccessVector(rsV.getString(5)); +332 vuln.setCvssAccessComplexity(rsV.getString(6)); +333 vuln.setCvssAuthentication(rsV.getString(7)); +334 vuln.setCvssConfidentialityImpact(rsV.getString(8)); +335 vuln.setCvssIntegrityImpact(rsV.getString(9)); +336 vuln.setCvssAvailabilityImpact(rsV.getString(10)); +337 +338 psR = conn.prepareStatement(SELECT_REFERENCE); +339 psR.setInt(1, cveId); +340 rsR = psR.executeQuery(); +341 while (rsR.next()) { +342 vuln.addReference(rsR.getString(1), rsR.getString(2), rsR.getString(3)); +343 } +344 psS = conn.prepareStatement(SELECT_SOFTWARE); +345 psS.setInt(1, cveId); +346 rsS = psS.executeQuery(); +347 while (rsS.next()) { +348 final String cpe = rsS.getString(1); +349 final String prevVersion = rsS.getString(2); +350 if (prevVersion == null) { +351 vuln.addVulnerableSoftware(cpe); +352 } else { +353 vuln.addVulnerableSoftware(cpe, prevVersion); +354 } +355 } +356 } +357 } catch (SQLException ex) { +358 throw new DatabaseException("Error retrieving " + cve, ex); +359 } finally { +360 closeResultSet(rsV); +361 closeResultSet(rsR); +362 closeResultSet(rsS); +363 closeStatement(psV); +364 closeStatement(psR); +365 closeStatement(psS); +366 } +367 return vuln; +368 } +369 +370 /** +371 * Updates the vulnerability within the database. If the vulnerability does +372 * not exist it will be added. +373 * +374 * @param vuln the vulnerability to add to the database +375 * @throws DatabaseException is thrown if the database +376 */ +377 public void updateVulnerability(Vulnerability vuln) throws DatabaseException { +378 PreparedStatement selectVulnerabilityId = null; +379 PreparedStatement deleteReferences = null; +380 PreparedStatement deleteSoftware = null; +381 PreparedStatement updateVulnerability = null; +382 PreparedStatement insertVulnerability = null; +383 PreparedStatement insertReference = null; +384 PreparedStatement selectCpeId = null; +385 PreparedStatement insertCpe = null; +386 PreparedStatement insertSoftware = null; +387 +388 try { +389 selectVulnerabilityId = conn.prepareStatement(SELECT_VULNERABILITY_ID); +390 deleteReferences = conn.prepareStatement(DELETE_REFERENCE); +391 deleteSoftware = conn.prepareStatement(DELETE_SOFTWARE); +392 updateVulnerability = conn.prepareStatement(UPDATE_VULNERABILITY); +393 insertVulnerability = conn.prepareStatement(INSERT_VULNERABILITY, Statement.RETURN_GENERATED_KEYS); +394 insertReference = conn.prepareStatement(INSERT_REFERENCE); +395 selectCpeId = conn.prepareStatement(SELECT_CPE_ID); +396 insertCpe = conn.prepareStatement(INSERT_CPE, Statement.RETURN_GENERATED_KEYS); +397 insertSoftware = conn.prepareStatement(INSERT_SOFTWARE); +398 int vulnerabilityId = 0; +399 selectVulnerabilityId.setString(1, vuln.getName()); +400 ResultSet rs = selectVulnerabilityId.executeQuery(); +401 if (rs.next()) { +402 vulnerabilityId = rs.getInt(1); +403 // first delete any existing vulnerability info. We don't know what was updated. yes, slower but atm easier. +404 deleteReferences.setInt(1, vulnerabilityId); +405 deleteReferences.execute(); +406 deleteSoftware.setInt(1, vulnerabilityId); +407 deleteSoftware.execute(); +408 } +409 closeResultSet(rs); +410 rs = null; +411 if (vulnerabilityId != 0) { +412 updateVulnerability.setString(1, vuln.getDescription()); +413 updateVulnerability.setString(2, vuln.getCwe()); +414 updateVulnerability.setFloat(3, vuln.getCvssScore()); +415 updateVulnerability.setString(4, vuln.getCvssAccessVector()); +416 updateVulnerability.setString(5, vuln.getCvssAccessComplexity()); +417 updateVulnerability.setString(6, vuln.getCvssAuthentication()); +418 updateVulnerability.setString(7, vuln.getCvssConfidentialityImpact()); +419 updateVulnerability.setString(8, vuln.getCvssIntegrityImpact()); +420 updateVulnerability.setString(9, vuln.getCvssAvailabilityImpact()); +421 updateVulnerability.setInt(10, vulnerabilityId); +422 updateVulnerability.executeUpdate(); +423 } else { +424 insertVulnerability.setString(1, vuln.getName()); +425 insertVulnerability.setString(2, vuln.getDescription()); +426 insertVulnerability.setString(3, vuln.getCwe()); +427 insertVulnerability.setFloat(4, vuln.getCvssScore()); +428 insertVulnerability.setString(5, vuln.getCvssAccessVector()); +429 insertVulnerability.setString(6, vuln.getCvssAccessComplexity()); +430 insertVulnerability.setString(7, vuln.getCvssAuthentication()); +431 insertVulnerability.setString(8, vuln.getCvssConfidentialityImpact()); +432 insertVulnerability.setString(9, vuln.getCvssIntegrityImpact()); +433 insertVulnerability.setString(10, vuln.getCvssAvailabilityImpact()); +434 insertVulnerability.execute(); +435 try { +436 rs = insertVulnerability.getGeneratedKeys(); +437 rs.next(); +438 vulnerabilityId = rs.getInt(1); +439 } catch (SQLException ex) { +440 final String msg = String.format("Unable to retrieve id for new vulnerability for '%s'", vuln.getName()); +441 throw new DatabaseException(msg, ex); +442 } finally { +443 closeResultSet(rs); +444 rs = null; +445 } +446 } +447 insertReference.setInt(1, vulnerabilityId); +448 for (Reference r : vuln.getReferences()) { +449 insertReference.setString(2, r.getName()); +450 insertReference.setString(3, r.getUrl()); +451 insertReference.setString(4, r.getSource()); +452 insertReference.execute(); +453 } +454 for (VulnerableSoftware s : vuln.getVulnerableSoftware()) { +455 int cpeProductId = 0; +456 selectCpeId.setString(1, s.getName()); +457 try { +458 rs = selectCpeId.executeQuery(); +459 if (rs.next()) { +460 cpeProductId = rs.getInt(1); +461 } +462 } catch (SQLException ex) { +463 throw new DatabaseException("Unable to get primary key for new cpe: " + s.getName(), ex); +464 } finally { +465 closeResultSet(rs); +466 rs = null; +467 } +468 +469 if (cpeProductId == 0) { +470 insertCpe.setString(1, s.getName()); +471 insertCpe.setString(2, s.getVendor()); +472 insertCpe.setString(3, s.getProduct()); +473 insertCpe.executeUpdate(); +474 cpeProductId = getGeneratedKey(insertCpe); +475 } +476 if (cpeProductId == 0) { +477 throw new DatabaseException("Unable to retrieve cpeProductId - no data returned"); 478 } 479 -480 if (cpeProductId == 0) { -481 insertCpe.setString(1, s.getName()); -482 insertCpe.setString(2, s.getVendor()); -483 insertCpe.setString(3, s.getProduct()); -484 insertCpe.executeUpdate(); -485 cpeProductId = getGeneratedKey(insertCpe); +480 insertSoftware.setInt(1, vulnerabilityId); +481 insertSoftware.setInt(2, cpeProductId); +482 if (s.getPreviousVersion() == null) { +483 insertSoftware.setNull(3, java.sql.Types.VARCHAR); +484 } else { +485 insertSoftware.setString(3, s.getPreviousVersion()); 486 } -487 if (cpeProductId == 0) { -488 throw new DatabaseException("Unable to retrieve cpeProductId - no data returned"); -489 } -490 -491 insertSoftware.setInt(1, vulnerabilityId); -492 insertSoftware.setInt(2, cpeProductId); -493 if (s.getPreviousVersion() == null) { -494 insertSoftware.setNull(3, java.sql.Types.VARCHAR); -495 } else { -496 insertSoftware.setString(3, s.getPreviousVersion()); -497 } -498 insertSoftware.execute(); -499 } -500 -501 } catch (SQLException ex) { -502 final String msg = String.format("Error updating '%s'", vuln.getName()); -503 Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex); -504 throw new DatabaseException(msg, ex); -505 } finally { -506 closeStatement(selectVulnerabilityId); -507 closeStatement(deleteReferences); -508 closeStatement(deleteSoftware); -509 closeStatement(updateVulnerability); -510 closeStatement(insertVulnerability); -511 closeStatement(insertReference); -512 closeStatement(selectCpeId); -513 closeStatement(insertCpe); -514 closeStatement(insertSoftware); -515 } -516 } -517 -518 /** -519 * Retrieves the directory that the JAR file exists in so that we can ensure -520 * we always use a common data directory. -521 * -522 * @return the data directory for this index. -523 * @throws IOException is thrown if an IOException occurs of course... -524 */ -525 public static File getDataDirectory() throws IOException { -526 final File path = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY); -527 if (!path.exists()) { -528 if (!path.mkdirs()) { -529 throw new IOException("Unable to create NVD CVE Data directory"); -530 } -531 } -532 return path; -533 } -534 -535 /** -536 * It is possible that orphaned rows may be generated during database -537 * updates. This should be called after all updates have been completed to -538 * ensure orphan entries are removed. -539 */ -540 public void cleanupDatabase() { -541 PreparedStatement ps = null; -542 try { -543 ps = conn.prepareStatement(CLEANUP_ORPHANS); -544 if (ps != null) { -545 ps.executeUpdate(); -546 } -547 } catch (SQLException ex) { -548 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex); -549 } finally { -550 closeStatement(ps); -551 } -552 } -553 -554 /** -555 * Creates the database structure (tables and indexes) to store the CVE data -556 * -557 * @throws SQLException thrown if there is a sql exception -558 * @throws DatabaseException thrown if there is a database exception -559 */ -560 protected void createTables() throws SQLException, DatabaseException { -561 InputStream is; -562 InputStreamReader reader; -563 BufferedReader in = null; -564 try { -565 is = this.getClass().getClassLoader().getResourceAsStream(DB_STRUCTURE_RESOURCE); -566 reader = new InputStreamReader(is, "UTF-8"); -567 in = new BufferedReader(reader); -568 final StringBuilder sb = new StringBuilder(2110); -569 String tmp; -570 while ((tmp = in.readLine()) != null) { -571 sb.append(tmp); -572 } -573 Statement statement = null; -574 try { -575 statement = conn.createStatement(); -576 statement.execute(sb.toString()); -577 } finally { -578 closeStatement(statement); +487 insertSoftware.execute(); +488 } +489 +490 } catch (SQLException ex) { +491 final String msg = String.format("Error updating '%s'", vuln.getName()); +492 Logger.getLogger(CveDB.class.getName()).log(Level.FINE, null, ex); +493 throw new DatabaseException(msg, ex); +494 } finally { +495 closeStatement(selectVulnerabilityId); +496 closeStatement(deleteReferences); +497 closeStatement(deleteSoftware); +498 closeStatement(updateVulnerability); +499 closeStatement(insertVulnerability); +500 closeStatement(insertReference); +501 closeStatement(selectCpeId); +502 closeStatement(insertCpe); +503 closeStatement(insertSoftware); +504 } +505 } +506 +507 /** +508 * Retrieves the directory that the JAR file exists in so that we can ensure +509 * we always use a common data directory. +510 * +511 * @return the data directory for this index. +512 * @throws IOException is thrown if an IOException occurs of course... +513 */ +514 public static File getDataDirectory() throws IOException { +515 final File path = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY); +516 if (!path.exists()) { +517 if (!path.mkdirs()) { +518 throw new IOException("Unable to create NVD CVE Data directory"); +519 } +520 } +521 return path; +522 } +523 +524 /** +525 * It is possible that orphaned rows may be generated during database +526 * updates. This should be called after all updates have been completed to +527 * ensure orphan entries are removed. +528 */ +529 public void cleanupDatabase() { +530 PreparedStatement ps = null; +531 try { +532 ps = conn.prepareStatement(CLEANUP_ORPHANS); +533 if (ps != null) { +534 ps.executeUpdate(); +535 } +536 } catch (SQLException ex) { +537 Logger.getLogger(CveDB.class.getName()).log(Level.SEVERE, null, ex); +538 } finally { +539 closeStatement(ps); +540 } +541 } +542 +543 /** +544 * Creates the database structure (tables and indexes) to store the CVE data +545 * +546 * @throws SQLException thrown if there is a sql exception +547 * @throws DatabaseException thrown if there is a database exception +548 */ +549 protected void createTables() throws SQLException, DatabaseException { +550 InputStream is; +551 InputStreamReader reader; +552 BufferedReader in = null; +553 try { +554 is = this.getClass().getClassLoader().getResourceAsStream(DB_STRUCTURE_RESOURCE); +555 reader = new InputStreamReader(is, "UTF-8"); +556 in = new BufferedReader(reader); +557 final StringBuilder sb = new StringBuilder(2110); +558 String tmp; +559 while ((tmp = in.readLine()) != null) { +560 sb.append(tmp); +561 } +562 Statement statement = null; +563 try { +564 statement = conn.createStatement(); +565 statement.execute(sb.toString()); +566 } finally { +567 closeStatement(statement); +568 } +569 } catch (IOException ex) { +570 throw new DatabaseException("Unable to create database schema", ex); +571 } finally { +572 if (in != null) { +573 try { +574 in.close(); +575 } catch (IOException ex) { +576 Logger.getLogger(CveDB.class +577 .getName()).log(Level.FINEST, null, ex); +578 } 579 } -580 } catch (IOException ex) { -581 throw new DatabaseException("Unable to create database schema", ex); -582 } finally { -583 if (in != null) { -584 try { -585 in.close(); -586 } catch (IOException ex) { -587 Logger.getLogger(CveDB.class -588 .getName()).log(Level.FINEST, null, ex); -589 } -590 } -591 } -592 } -593 -594 /** -595 * Closes the given statement object ignoring any exceptions that occur. -596 * -597 * @param statement a Statement object -598 */ -599 private void closeStatement(Statement statement) { -600 if (statement != null) { -601 try { -602 statement.close(); -603 } catch (SQLException ex) { -604 Logger.getLogger(CveDB.class -605 .getName()).log(Level.FINEST, statement.toString(), ex); -606 } -607 } -608 } -609 -610 /** -611 * Closes the result set capturing and ignoring any SQLExceptions that -612 * occur. -613 * -614 * @param rs a ResultSet to close -615 */ -616 private void closeResultSet(ResultSet rs) { -617 if (rs != null) { -618 try { -619 rs.close(); -620 } catch (SQLException ex) { -621 Logger.getLogger(CveDB.class -622 .getName()).log(Level.FINEST, rs.toString(), ex); -623 } -624 } -625 } -626 -627 /** -628 * Returns the generated integer primary key for a newly inserted row. -629 * -630 * @param statement a prepared statement that just executed an insert -631 * @return a primary key -632 * @throws DatabaseException thrown if there is an exception obtaining the -633 * key -634 */ -635 private int getGeneratedKey(PreparedStatement statement) throws DatabaseException { -636 ResultSet rs = null; -637 int id = 0; -638 try { -639 rs = statement.getGeneratedKeys(); -640 rs.next(); -641 id = rs.getInt(1); -642 } catch (SQLException ex) { -643 throw new DatabaseException("Unable to get primary key for inserted row"); -644 } finally { -645 closeResultSet(rs); -646 } -647 return id; -648 } -649 -650 /** -651 * Determines if the given identifiedVersion is affected by the given cpeId -652 * and previous version flag. A non-null, non-empty string passed to the -653 * previous version argument indicates that all previous versions are -654 * affected. -655 * -656 * @param vendor the vendor of the dependency being analyzed -657 * @param product the product name of the dependency being analyzed -658 * @param identifiedVersion the identified version of the dependency being -659 * analyzed -660 * @param cpeId the cpe identifier of software that has a known -661 * vulnerability -662 * @param previous a flag indicating if previous versions of the product are -663 * vulnerable -664 * @return true if the identified version is affected, otherwise false -665 */ -666 private boolean isAffected(String vendor, String product, DependencyVersion identifiedVersion, String cpeId, String previous) { -667 boolean affected = false; -668 final boolean isStruts = "apache".equals(vendor) && "struts".equals(product); -669 final DependencyVersion v = parseDependencyVersion(cpeId); -670 final boolean prevAffected = previous == null ? false : !previous.isEmpty(); -671 if (identifiedVersion == null || "-".equals(identifiedVersion.toString())) { -672 if (v == null || "-".equals(v.toString())) { -673 affected = true; -674 } -675 } else if (identifiedVersion.equals(v) || (prevAffected && identifiedVersion.compareTo(v) < 0)) { -676 if (isStruts) { //struts 2 vulns don't affect struts 1 -677 if (identifiedVersion.getVersionParts().get(0).equals(v.getVersionParts().get(0))) { -678 affected = true; -679 } -680 } else { -681 affected = true; -682 } -683 } -684 /* -685 * TODO consider utilizing the matchThreeVersion method to get additional results. However, this -686 * might also introduce false positives. -687 */ -688 return affected; -689 } -690 -691 /** -692 * Parses the version (including revision) from a CPE identifier. If no -693 * version is identified then a '-' is returned. -694 * -695 * @param cpeStr a cpe identifier -696 * @return a dependency version -697 */ -698 private DependencyVersion parseDependencyVersion(String cpeStr) { -699 final VulnerableSoftware cpe = new VulnerableSoftware(); -700 try { -701 cpe.parseName(cpeStr); -702 } catch (UnsupportedEncodingException ex) { -703 //never going to happen. -704 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex); -705 } -706 return parseDependencyVersion(cpe); -707 } -708 -709 /** -710 * Takes a CPE and parses out the version number. If no version is -711 * identified then a '-' is returned. -712 * -713 * @param cpe a cpe object -714 * @return a dependency version -715 */ -716 private DependencyVersion parseDependencyVersion(VulnerableSoftware cpe) { -717 DependencyVersion cpeVersion; -718 if (cpe.getVersion() != null && cpe.getVersion().length() > 0) { -719 String versionText; -720 if (cpe.getRevision() != null && cpe.getRevision().length() > 0) { -721 versionText = String.format("%s.%s", cpe.getVersion(), cpe.getRevision()); -722 } else { -723 versionText = cpe.getVersion(); -724 } -725 cpeVersion = DependencyVersionUtil.parseVersion(versionText); -726 } else { -727 cpeVersion = new DependencyVersion("-"); -728 } -729 return cpeVersion; -730 } -731 } +580 } +581 } +582 +583 /** +584 * Closes the given statement object ignoring any exceptions that occur. +585 * +586 * @param statement a Statement object +587 */ +588 private void closeStatement(Statement statement) { +589 if (statement != null) { +590 try { +591 statement.close(); +592 } catch (SQLException ex) { +593 Logger.getLogger(CveDB.class +594 .getName()).log(Level.FINEST, statement.toString(), ex); +595 } +596 } +597 } +598 +599 /** +600 * Closes the result set capturing and ignoring any SQLExceptions that +601 * occur. +602 * +603 * @param rs a ResultSet to close +604 */ +605 private void closeResultSet(ResultSet rs) { +606 if (rs != null) { +607 try { +608 rs.close(); +609 } catch (SQLException ex) { +610 Logger.getLogger(CveDB.class +611 .getName()).log(Level.FINEST, rs.toString(), ex); +612 } +613 } +614 } +615 +616 /** +617 * Returns the generated integer primary key for a newly inserted row. +618 * +619 * @param statement a prepared statement that just executed an insert +620 * @return a primary key +621 * @throws DatabaseException thrown if there is an exception obtaining the +622 * key +623 */ +624 private int getGeneratedKey(PreparedStatement statement) throws DatabaseException { +625 ResultSet rs = null; +626 int id = 0; +627 try { +628 rs = statement.getGeneratedKeys(); +629 rs.next(); +630 id = rs.getInt(1); +631 } catch (SQLException ex) { +632 throw new DatabaseException("Unable to get primary key for inserted row"); +633 } finally { +634 closeResultSet(rs); +635 } +636 return id; +637 } +638 +639 /** +640 * Determines if the given identifiedVersion is affected by the given cpeId +641 * and previous version flag. A non-null, non-empty string passed to the +642 * previous version argument indicates that all previous versions are +643 * affected. +644 * +645 * @param vendor the vendor of the dependency being analyzed +646 * @param product the product name of the dependency being analyzed +647 * @param identifiedVersion the identified version of the dependency being +648 * analyzed +649 * @param cpeId the cpe identifier of software that has a known +650 * vulnerability +651 * @param previous a flag indicating if previous versions of the product are +652 * vulnerable +653 * @return true if the identified version is affected, otherwise false +654 */ +655 private boolean isAffected(String vendor, String product, DependencyVersion identifiedVersion, String cpeId, String previous) { +656 boolean affected = false; +657 final boolean isStruts = "apache".equals(vendor) && "struts".equals(product); +658 final DependencyVersion v = parseDependencyVersion(cpeId); +659 final boolean prevAffected = previous == null ? false : !previous.isEmpty(); +660 if (identifiedVersion == null || "-".equals(identifiedVersion.toString())) { +661 if (v == null || "-".equals(v.toString())) { +662 affected = true; +663 } +664 } else if (identifiedVersion.equals(v) || (prevAffected && identifiedVersion.compareTo(v) < 0)) { +665 if (isStruts) { //struts 2 vulns don't affect struts 1 +666 if (identifiedVersion.getVersionParts().get(0).equals(v.getVersionParts().get(0))) { +667 affected = true; +668 } +669 } else { +670 affected = true; +671 } +672 } +673 /* +674 * TODO consider utilizing the matchThreeVersion method to get additional results. However, this +675 * might also introduce false positives. +676 */ +677 return affected; +678 } +679 +680 /** +681 * Parses the version (including revision) from a CPE identifier. If no +682 * version is identified then a '-' is returned. +683 * +684 * @param cpeStr a cpe identifier +685 * @return a dependency version +686 */ +687 private DependencyVersion parseDependencyVersion(String cpeStr) { +688 final VulnerableSoftware cpe = new VulnerableSoftware(); +689 try { +690 cpe.parseName(cpeStr); +691 } catch (UnsupportedEncodingException ex) { +692 //never going to happen. +693 Logger.getLogger(CveDB.class.getName()).log(Level.FINEST, null, ex); +694 } +695 return parseDependencyVersion(cpe); +696 } +697 +698 /** +699 * Takes a CPE and parses out the version number. If no version is +700 * identified then a '-' is returned. +701 * +702 * @param cpe a cpe object +703 * @return a dependency version +704 */ +705 private DependencyVersion parseDependencyVersion(VulnerableSoftware cpe) { +706 DependencyVersion cpeVersion; +707 if (cpe.getVersion() != null && cpe.getVersion().length() > 0) { +708 String versionText; +709 if (cpe.getRevision() != null && cpe.getRevision().length() > 0) { +710 versionText = String.format("%s.%s", cpe.getVersion(), cpe.getRevision()); +711 } else { +712 versionText = cpe.getVersion(); +713 } +714 cpeVersion = DependencyVersionUtil.parseVersion(versionText); +715 } else { +716 cpeVersion = new DependencyVersion("-"); +717 } +718 return cpeVersion; +719 } +720 }
        diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/InvalidDataException.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/InvalidDataException.html new file mode 100644 index 000000000..7e2944d0f --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/InvalidDataException.html @@ -0,0 +1,66 @@ + + + + +InvalidDataException xref + + + +
        +
        +1   /*
        +2    * This file is part of dependency-check-core.
        +3    *
        +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
        +5    * under the terms of the GNU General Public License as published by the Free
        +6    * Software Foundation, either version 3 of the License, or (at your option) any
        +7    * later version.
        +8    *
        +9    * Dependency-check-core is distributed in the hope that it will be useful, but
        +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
        +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
        +12   * details.
        +13   *
        +14   * You should have received a copy of the GNU General Public License along with
        +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
        +16   *
        +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
        +18   */
        +19  package org.owasp.dependencycheck.data.nvdcve;
        +20  
        +21  /**
        +22   * An InvalidDataDataException is a generic exception used when trying to load
        +23   * the nvd cve meta data.
        +24   *
        +25   * @author Jeremy Long (jeremy.long@owasp.org)
        +26   */
        +27  public class InvalidDataException extends Exception {
        +28  
        +29      /**
        +30       * the serial version uid.
        +31       */
        +32      private static final long serialVersionUID = 1L;
        +33  
        +34      /**
        +35       * Creates an InvalidDataException.
        +36       *
        +37       * @param msg the exception message
        +38       */
        +39      public InvalidDataException(String msg) {
        +40          super(msg);
        +41      }
        +42  
        +43      /**
        +44       * Creates an InvalidDataException.
        +45       *
        +46       * @param msg the exception message
        +47       * @param ex the cause of the exception
        +48       */
        +49      public InvalidDataException(String msg, Exception ex) {
        +50          super(msg, ex);
        +51      }
        +52  }
        +
        +
        + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/NvdCve12Handler.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/NvdCve12Handler.html new file mode 100644 index 000000000..abac7b725 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/NvdCve12Handler.html @@ -0,0 +1,261 @@ + + + + +NvdCve12Handler xref + + + +
        +
        +1   /*
        +2    * This file is part of dependency-check-core.
        +3    *
        +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
        +5    * under the terms of the GNU General Public License as published by the Free
        +6    * Software Foundation, either version 3 of the License, or (at your option) any
        +7    * later version.
        +8    *
        +9    * Dependency-check-core is distributed in the hope that it will be useful, but
        +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
        +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
        +12   * details.
        +13   *
        +14   * You should have received a copy of the GNU General Public License along with
        +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
        +16   *
        +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
        +18   */
        +19  package org.owasp.dependencycheck.data.nvdcve;
        +20  
        +21  import java.util.ArrayList;
        +22  import java.util.HashMap;
        +23  import java.util.List;
        +24  import java.util.Map;
        +25  import org.owasp.dependencycheck.dependency.VulnerableSoftware;
        +26  import org.xml.sax.Attributes;
        +27  import org.xml.sax.SAXException;
        +28  import org.xml.sax.SAXNotSupportedException;
        +29  import org.xml.sax.helpers.DefaultHandler;
        +30  
        +31  /**
        +32   * A SAX Handler that will parse the NVD CVE XML (schema version 1.2). This
        +33   * parses the xml and retrieves a listing of CPEs that have previous versions
        +34   * specified. The previous version information is not in the 2.0 version of the
        +35   * schema and is useful to ensure accurate identification (or at least
        +36   * complete).
        +37   *
        +38   * @author Jeremy Long (jeremy.long@owasp.org)
        +39   */
        +40  public class NvdCve12Handler extends DefaultHandler {
        +41  
        +42      /**
        +43       * the supported schema version.
        +44       */
        +45      private static final String CURRENT_SCHEMA_VERSION = "1.2";
        +46      /**
        +47       * the current vulnerability.
        +48       */
        +49      private String vulnerability;
        +50      /**
        +51       * a list of vulnerable software.
        +52       */
        +53      private List<VulnerableSoftware> software;
        +54      /**
        +55       * the vendor name.
        +56       */
        +57      private String vendor;
        +58      /**
        +59       * the product name.
        +60       */
        +61      private String product;
        +62      /**
        +63       * if the nvd cve should be skipped because it was rejected.
        +64       */
        +65      private boolean skip = false;
        +66      /**
        +67       * flag indicating if there is a previous version.
        +68       */
        +69      private boolean hasPreviousVersion = false;
        +70      /**
        +71       * The current element.
        +72       */
        +73      private final Element current = new Element();
        +74      /**
        +75       * a map of vulnerabilities.
        +76       */
        +77      private Map<String, List<VulnerableSoftware>> vulnerabilities;
        +78  
        +79      /**
        +80       * Get the value of vulnerabilities.
        +81       *
        +82       * @return the value of vulnerabilities
        +83       */
        +84      public Map<String, List<VulnerableSoftware>> getVulnerabilities() {
        +85          return vulnerabilities;
        +86      }
        +87  
        +88      @Override
        +89      public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        +90          current.setNode(qName);
        +91          if (current.isEntryNode()) {
        +92              vendor = null;
        +93              product = null;
        +94              hasPreviousVersion = false;
        +95              final String reject = attributes.getValue("reject");
        +96              skip = "1".equals(reject);
        +97              if (!skip) {
        +98                  vulnerability = attributes.getValue("name");
        +99                  software = new ArrayList<VulnerableSoftware>();
        +100             } else {
        +101                 vulnerability = null;
        +102                 software = null;
        +103             }
        +104         } else if (!skip && current.isProdNode()) {
        +105 
        +106             vendor = attributes.getValue("vendor");
        +107             product = attributes.getValue("name");
        +108         } else if (!skip && current.isVersNode()) {
        +109             final String prev = attributes.getValue("prev");
        +110             if (prev != null && "1".equals(prev)) {
        +111                 hasPreviousVersion = true;
        +112                 final String edition = attributes.getValue("edition");
        +113                 final String num = attributes.getValue("num");
        +114 
        +115                 /*yes yes, this may not actually be an "a" - it could be an OS, etc. but for our
        +116                  purposes this is good enough as we won't use this if we don't find a corresponding "a"
        +117                  in the nvd cve 2.0. */
        +118                 String cpe = "cpe:/a:" + vendor + ":" + product;
        +119                 if (num != null) {
        +120                     cpe += ":" + num;
        +121                 }
        +122                 if (edition != null) {
        +123                     cpe += ":" + edition;
        +124                 }
        +125                 final VulnerableSoftware vs = new VulnerableSoftware();
        +126                 vs.setCpe(cpe);
        +127                 vs.setPreviousVersion(prev);
        +128                 software.add(vs);
        +129             }
        +130         } else if (current.isNVDNode()) {
        +131             final String nvdVer = attributes.getValue("nvd_xml_version");
        +132             if (!CURRENT_SCHEMA_VERSION.equals(nvdVer)) {
        +133                 throw new SAXNotSupportedException("Schema version " + nvdVer + " is not supported");
        +134             }
        +135             vulnerabilities = new HashMap<String, List<VulnerableSoftware>>();
        +136         }
        +137     }
        +138 
        +139     @Override
        +140     public void endElement(String uri, String localName, String qName) throws SAXException {
        +141         current.setNode(qName);
        +142         if (current.isEntryNode()) {
        +143             if (!skip && hasPreviousVersion) {
        +144                 vulnerabilities.put(vulnerability, software);
        +145             }
        +146             vulnerability = null;
        +147             software = null;
        +148         }
        +149     }
        +150 
        +151     // <editor-fold defaultstate="collapsed" desc="The Element Class that maintains state information about the current node">
        +152     /**
        +153      * A simple class to maintain information about the current element while
        +154      * parsing the NVD CVE XML.
        +155      */
        +156     protected static class Element {
        +157 
        +158         /**
        +159          * A node type in the NVD CVE Schema 1.2.
        +160          */
        +161         public static final String NVD = "nvd";
        +162         /**
        +163          * A node type in the NVD CVE Schema 1.2.
        +164          */
        +165         public static final String ENTRY = "entry";
        +166         /**
        +167          * A node type in the NVD CVE Schema 1.2.
        +168          */
        +169         public static final String VULN_SOFTWARE = "vuln_soft";
        +170         /**
        +171          * A node type in the NVD CVE Schema 1.2.
        +172          */
        +173         public static final String PROD = "prod";
        +174         /**
        +175          * A node type in the NVD CVE Schema 1.2.
        +176          */
        +177         public static final String VERS = "vers";
        +178         /**
        +179          * The name of the current node.
        +180          */
        +181         private String node;
        +182 
        +183         /**
        +184          * Gets the value of node.
        +185          *
        +186          * @return the value of node
        +187          */
        +188         public String getNode() {
        +189             return this.node;
        +190         }
        +191 
        +192         /**
        +193          * Sets the value of node.
        +194          *
        +195          * @param node new value of node
        +196          */
        +197         public void setNode(String node) {
        +198             this.node = node;
        +199         }
        +200 
        +201         /**
        +202          * Checks if the handler is at the NVD node.
        +203          *
        +204          * @return true or false
        +205          */
        +206         public boolean isNVDNode() {
        +207             return NVD.equals(node);
        +208         }
        +209 
        +210         /**
        +211          * Checks if the handler is at the ENTRY node.
        +212          *
        +213          * @return true or false
        +214          */
        +215         public boolean isEntryNode() {
        +216             return ENTRY.equals(node);
        +217         }
        +218 
        +219         /**
        +220          * Checks if the handler is at the VULN_SOFTWARE node.
        +221          *
        +222          * @return true or false
        +223          */
        +224         public boolean isVulnSoftwareNode() {
        +225             return VULN_SOFTWARE.equals(node);
        +226         }
        +227 
        +228         /**
        +229          * Checks if the handler is at the PROD node.
        +230          *
        +231          * @return true or false
        +232          */
        +233         public boolean isProdNode() {
        +234             return PROD.equals(node);
        +235         }
        +236 
        +237         /**
        +238          * Checks if the handler is at the VERS node.
        +239          *
        +240          * @return true or false
        +241          */
        +242         public boolean isVersNode() {
        +243             return VERS.equals(node);
        +244         }
        +245     }
        +246     // </editor-fold>
        +247 }
        +
        +
        + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/NvdCve20Handler.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/NvdCve20Handler.html new file mode 100644 index 000000000..482a72d80 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/NvdCve20Handler.html @@ -0,0 +1,526 @@ + + + + +NvdCve20Handler xref + + + +
        +
        +1   /*
        +2    * This file is part of dependency-check-core.
        +3    *
        +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
        +5    * under the terms of the GNU General Public License as published by the Free
        +6    * Software Foundation, either version 3 of the License, or (at your option) any
        +7    * later version.
        +8    *
        +9    * Dependency-check-core is distributed in the hope that it will be useful, but
        +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
        +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
        +12   * details.
        +13   *
        +14   * You should have received a copy of the GNU General Public License along with
        +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
        +16   *
        +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
        +18   */
        +19  package org.owasp.dependencycheck.data.nvdcve;
        +20  
        +21  import java.io.IOException;
        +22  import java.util.List;
        +23  import java.util.Map;
        +24  import java.util.logging.Level;
        +25  import java.util.logging.Logger;
        +26  import org.apache.lucene.index.CorruptIndexException;
        +27  import org.owasp.dependencycheck.data.cpe.CpeIndexWriter;
        +28  import org.owasp.dependencycheck.dependency.Reference;
        +29  import org.owasp.dependencycheck.dependency.Vulnerability;
        +30  import org.owasp.dependencycheck.dependency.VulnerableSoftware;
        +31  import org.xml.sax.Attributes;
        +32  import org.xml.sax.SAXException;
        +33  import org.xml.sax.SAXNotSupportedException;
        +34  import org.xml.sax.helpers.DefaultHandler;
        +35  
        +36  /**
        +37   * A SAX Handler that will parse the NVD CVE XML (schema version 2.0).
        +38   *
        +39   * @author Jeremy Long (jeremy.long@owasp.org)
        +40   */
        +41  public class NvdCve20Handler extends DefaultHandler {
        +42  
        +43      /**
        +44       * the current supported schema version.
        +45       */
        +46      private static final String CURRENT_SCHEMA_VERSION = "2.0";
        +47      /**
        +48       * the current element.
        +49       */
        +50      private final Element current = new Element();
        +51      /**
        +52       * the text of the node.
        +53       */
        +54      private StringBuilder nodeText;
        +55      /**
        +56       * the vulnerability.
        +57       */
        +58      private Vulnerability vulnerability;
        +59      /**
        +60       * a reference for the cve.
        +61       */
        +62      private Reference reference;
        +63      /**
        +64       * flag indicating whether the application has a cpe.
        +65       */
        +66      private boolean hasApplicationCpe = false;
        +67      /**
        +68       * The total number of entries parsed.
        +69       */
        +70      private int totalNumberOfEntries;
        +71  
        +72      /**
        +73       * Get the value of totalNumberOfEntries.
        +74       *
        +75       * @return the value of totalNumberOfEntries
        +76       */
        +77      public int getTotalNumberOfEntries() {
        +78          return totalNumberOfEntries;
        +79      }
        +80      /**
        +81       * The total number of application entries parsed.
        +82       */
        +83      private int totalNumberOfApplicationEntries;
        +84  
        +85      /**
        +86       * Get the value of totalNumberOfApplicationEntries.
        +87       *
        +88       * @return the value of totalNumberOfApplicationEntries
        +89       */
        +90      public int getTotalNumberOfApplicationEntries() {
        +91          return totalNumberOfApplicationEntries;
        +92      }
        +93  
        +94      @Override
        +95      public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        +96          current.setNode(qName);
        +97          if (current.isEntryNode()) {
        +98              hasApplicationCpe = false;
        +99              vulnerability = new Vulnerability();
        +100             vulnerability.setName(attributes.getValue("id"));
        +101         } else if (current.isVulnProductNode()) {
        +102             nodeText = new StringBuilder(100);
        +103         } else if (current.isVulnReferencesNode()) {
        +104             final String lang = attributes.getValue("xml:lang");
        +105             if ("en".equals(lang)) {
        +106                 reference = new Reference();
        +107             } else {
        +108                 reference = null;
        +109             }
        +110         } else if (reference != null && current.isVulnReferenceNode()) {
        +111             reference.setUrl(attributes.getValue("href"));
        +112             nodeText = new StringBuilder(130);
        +113         } else if (reference != null && current.isVulnSourceNode()) {
        +114             nodeText = new StringBuilder(30);
        +115         } else if (current.isVulnSummaryNode()) {
        +116             nodeText = new StringBuilder(500);
        +117         } else if (current.isNVDNode()) {
        +118             final String nvdVer = attributes.getValue("nvd_xml_version");
        +119             if (!CURRENT_SCHEMA_VERSION.equals(nvdVer)) {
        +120                 throw new SAXNotSupportedException("Schema version " + nvdVer + " is not supported");
        +121             }
        +122         } else if (current.isVulnCWENode()) {
        +123             vulnerability.setCwe(attributes.getValue("id"));
        +124         } else if (current.isCVSSScoreNode()) {
        +125             nodeText = new StringBuilder(5);
        +126         } else if (current.isCVSSAccessVectorNode()) {
        +127             nodeText = new StringBuilder(20);
        +128         } else if (current.isCVSSAccessComplexityNode()) {
        +129             nodeText = new StringBuilder(20);
        +130         } else if (current.isCVSSAuthenticationNode()) {
        +131             nodeText = new StringBuilder(20);
        +132         } else if (current.isCVSSAvailabilityImpactNode()) {
        +133             nodeText = new StringBuilder(20);
        +134         } else if (current.isCVSSConfidentialityImpactNode()) {
        +135             nodeText = new StringBuilder(20);
        +136         } else if (current.isCVSSIntegrityImpactNode()) {
        +137             nodeText = new StringBuilder(20);
        +138         }
        +139     }
        +140 
        +141     @Override
        +142     public void characters(char[] ch, int start, int length) throws SAXException {
        +143         if (nodeText != null) {
        +144             nodeText.append(ch, start, length);
        +145         }
        +146     }
        +147 
        +148     @Override
        +149     public void endElement(String uri, String localName, String qName) throws SAXException {
        +150         current.setNode(qName);
        +151         if (current.isEntryNode()) {
        +152             totalNumberOfEntries += 1;
        +153             if (hasApplicationCpe) {
        +154                 totalNumberOfApplicationEntries += 1;
        +155                 try {
        +156                     saveEntry(vulnerability);
        +157                 } catch (DatabaseException ex) {
        +158                     throw new SAXException(ex);
        +159                 } catch (CorruptIndexException ex) {
        +160                     throw new SAXException(ex);
        +161                 } catch (IOException ex) {
        +162                     throw new SAXException(ex);
        +163                 }
        +164             }
        +165             vulnerability = null;
        +166         } else if (current.isCVSSScoreNode()) {
        +167             try {
        +168                 final float score = Float.parseFloat(nodeText.toString());
        +169                 vulnerability.setCvssScore(score);
        +170             } catch (NumberFormatException ex) {
        +171                 Logger.getLogger(NvdCve20Handler.class.getName()).log(Level.SEVERE, "Error parsing CVSS Score.");
        +172                 Logger.getLogger(NvdCve20Handler.class.getName()).log(Level.FINE, null, ex);
        +173             }
        +174             nodeText = null;
        +175         } else if (current.isCVSSAccessVectorNode()) {
        +176             vulnerability.setCvssAccessVector(nodeText.toString());
        +177             nodeText = null;
        +178         } else if (current.isCVSSAccessComplexityNode()) {
        +179             vulnerability.setCvssAccessComplexity(nodeText.toString());
        +180             nodeText = null;
        +181         } else if (current.isCVSSAuthenticationNode()) {
        +182             vulnerability.setCvssAuthentication(nodeText.toString());
        +183             nodeText = null;
        +184         } else if (current.isCVSSAvailabilityImpactNode()) {
        +185             vulnerability.setCvssAvailabilityImpact(nodeText.toString());
        +186             nodeText = null;
        +187         } else if (current.isCVSSConfidentialityImpactNode()) {
        +188             vulnerability.setCvssConfidentialityImpact(nodeText.toString());
        +189             nodeText = null;
        +190         } else if (current.isCVSSIntegrityImpactNode()) {
        +191             vulnerability.setCvssIntegrityImpact(nodeText.toString());
        +192             nodeText = null;
        +193         } else if (current.isVulnProductNode()) {
        +194             final String cpe = nodeText.toString();
        +195             if (cpe.startsWith("cpe:/a:")) {
        +196                 hasApplicationCpe = true;
        +197                 vulnerability.addVulnerableSoftware(cpe);
        +198             }
        +199             nodeText = null;
        +200         } else if (reference != null && current.isVulnReferencesNode()) {
        +201             vulnerability.addReference(reference);
        +202             reference = null;
        +203         } else if (reference != null && current.isVulnReferenceNode()) {
        +204             reference.setName(nodeText.toString());
        +205             nodeText = null;
        +206         } else if (reference != null && current.isVulnSourceNode()) {
        +207             reference.setSource(nodeText.toString());
        +208             nodeText = null;
        +209         } else if (current.isVulnSummaryNode()) {
        +210             vulnerability.setDescription(nodeText.toString());
        +211             nodeText = null;
        +212         }
        +213     }
        +214     /**
        +215      * the cve database.
        +216      */
        +217     private CveDB cveDB;
        +218 
        +219     /**
        +220      * Sets the cveDB.
        +221      *
        +222      * @param db a reference to the CveDB
        +223      */
        +224     public void setCveDB(CveDB db) {
        +225         cveDB = db;
        +226     }
        +227     /**
        +228      * A list of CVE entries and associated VulnerableSoftware entries that
        +229      * contain previous entries.
        +230      */
        +231     private Map<String, List<VulnerableSoftware>> prevVersionVulnMap;
        +232 
        +233     /**
        +234      * Sets the prevVersionVulnMap.
        +235      *
        +236      * @param map the map of vulnerable software with previous versions being
        +237      * vulnerable
        +238      */
        +239     public void setPrevVersionVulnMap(Map<String, List<VulnerableSoftware>> map) {
        +240         prevVersionVulnMap = map;
        +241     }
        +242 
        +243     /**
        +244      * Saves a vulnerability to the CVE Database. This is a callback method
        +245      * called by the Sax Parser Handler
        +246      * {@link org.owasp.dependencycheck.data.nvdcve.xml.NvdCve20Handler}.
        +247      *
        +248      * @param vuln the vulnerability to store in the database
        +249      * @throws DatabaseException thrown if there is an error writing to the
        +250      * database
        +251      * @throws CorruptIndexException is thrown if the CPE Index is corrupt
        +252      * @throws IOException thrown if there is an IOException with the CPE Index
        +253      */
        +254     public void saveEntry(Vulnerability vuln) throws DatabaseException, CorruptIndexException, IOException {
        +255         if (cveDB == null) {
        +256             return;
        +257         }
        +258         final String cveName = vuln.getName();
        +259         if (prevVersionVulnMap.containsKey(cveName)) {
        +260             final List<VulnerableSoftware> vulnSoftware = prevVersionVulnMap.get(cveName);
        +261             for (VulnerableSoftware vs : vulnSoftware) {
        +262                 vuln.updateVulnerableSoftware(vs);
        +263             }
        +264         }
        +265         for (VulnerableSoftware vs : vuln.getVulnerableSoftware()) {
        +266             if (cpeIndex != null) {
        +267                 cpeIndex.saveEntry(vs);
        +268             }
        +269         }
        +270         cveDB.updateVulnerability(vuln);
        +271     }
        +272     /**
        +273      * the cpe index.
        +274      */
        +275     private CpeIndexWriter cpeIndex;
        +276 
        +277     /**
        +278      * Sets the cpe index writer.
        +279      *
        +280      * @param index the CPE Lucene Index
        +281      */
        +282     public void setCpeIndex(CpeIndexWriter index) {
        +283         cpeIndex = index;
        +284     }
        +285 
        +286     // <editor-fold defaultstate="collapsed" desc="The Element Class that maintains state information about the current node">
        +287     /**
        +288      * A simple class to maintain information about the current element while
        +289      * parsing the NVD CVE XML.
        +290      */
        +291     protected static class Element {
        +292 
        +293         /**
        +294          * A node type in the NVD CVE Schema 2.0
        +295          */
        +296         public static final String NVD = "nvd";
        +297         /**
        +298          * A node type in the NVD CVE Schema 2.0
        +299          */
        +300         public static final String ENTRY = "entry";
        +301         /**
        +302          * A node type in the NVD CVE Schema 2.0
        +303          */
        +304         public static final String VULN_PRODUCT = "vuln:product";
        +305         /**
        +306          * A node type in the NVD CVE Schema 2.0
        +307          */
        +308         public static final String VULN_REFERENCES = "vuln:references";
        +309         /**
        +310          * A node type in the NVD CVE Schema 2.0
        +311          */
        +312         public static final String VULN_SOURCE = "vuln:source";
        +313         /**
        +314          * A node type in the NVD CVE Schema 2.0
        +315          */
        +316         public static final String VULN_REFERENCE = "vuln:reference";
        +317         /**
        +318          * A node type in the NVD CVE Schema 2.0
        +319          */
        +320         public static final String VULN_SUMMARY = "vuln:summary";
        +321         /**
        +322          * A node type in the NVD CVE Schema 2.0
        +323          */
        +324         public static final String VULN_CWE = "vuln:cwe";
        +325         /**
        +326          * A node type in the NVD CVE Schema 2.0
        +327          */
        +328         public static final String CVSS_SCORE = "cvss:score";
        +329         /**
        +330          * A node type in the NVD CVE Schema 2.0
        +331          */
        +332         public static final String CVSS_ACCESS_VECTOR = "cvss:access-vector";
        +333         /**
        +334          * A node type in the NVD CVE Schema 2.0
        +335          */
        +336         public static final String CVSS_ACCESS_COMPLEXITY = "cvss:access-complexity";
        +337         /**
        +338          * A node type in the NVD CVE Schema 2.0
        +339          */
        +340         public static final String CVSS_AUTHENTICATION = "cvss:authentication";
        +341         /**
        +342          * A node type in the NVD CVE Schema 2.0
        +343          */
        +344         public static final String CVSS_CONFIDENTIALITY_IMPACT = "cvss:confidentiality-impact";
        +345         /**
        +346          * A node type in the NVD CVE Schema 2.0
        +347          */
        +348         public static final String CVSS_INTEGRITY_IMPACT = "cvss:integrity-impact";
        +349         /**
        +350          * A node type in the NVD CVE Schema 2.0
        +351          */
        +352         public static final String CVSS_AVAILABILITY_IMPACT = "cvss:availability-impact";
        +353         /**
        +354          * The current node.
        +355          */
        +356         private String node;
        +357 
        +358         /**
        +359          * Gets the value of node.
        +360          *
        +361          * @return the value of node
        +362          */
        +363         public String getNode() {
        +364             return this.node;
        +365         }
        +366 
        +367         /**
        +368          * Sets the value of node.
        +369          *
        +370          * @param node new value of node
        +371          */
        +372         public void setNode(String node) {
        +373             this.node = node;
        +374         }
        +375 
        +376         /**
        +377          * Checks if the handler is at the NVD node.
        +378          *
        +379          * @return true or false
        +380          */
        +381         public boolean isNVDNode() {
        +382             return NVD.equals(node);
        +383         }
        +384 
        +385         /**
        +386          * Checks if the handler is at the ENTRY node.
        +387          *
        +388          * @return true or false
        +389          */
        +390         public boolean isEntryNode() {
        +391             return ENTRY.equals(node);
        +392         }
        +393 
        +394         /**
        +395          * Checks if the handler is at the VULN_PRODUCT node.
        +396          *
        +397          * @return true or false
        +398          */
        +399         public boolean isVulnProductNode() {
        +400             return VULN_PRODUCT.equals(node);
        +401         }
        +402 
        +403         /**
        +404          * Checks if the handler is at the REFERENCES node.
        +405          *
        +406          * @return true or false
        +407          */
        +408         public boolean isVulnReferencesNode() {
        +409             return VULN_REFERENCES.equals(node);
        +410         }
        +411 
        +412         /**
        +413          * Checks if the handler is at the REFERENCE node.
        +414          *
        +415          * @return true or false
        +416          */
        +417         public boolean isVulnReferenceNode() {
        +418             return VULN_REFERENCE.equals(node);
        +419         }
        +420 
        +421         /**
        +422          * Checks if the handler is at the VULN_SOURCE node.
        +423          *
        +424          * @return true or false
        +425          */
        +426         public boolean isVulnSourceNode() {
        +427             return VULN_SOURCE.equals(node);
        +428         }
        +429 
        +430         /**
        +431          * Checks if the handler is at the VULN_SUMMARY node.
        +432          *
        +433          * @return true or false
        +434          */
        +435         public boolean isVulnSummaryNode() {
        +436             return VULN_SUMMARY.equals(node);
        +437         }
        +438 
        +439         /**
        +440          * Checks if the handler is at the VULN_CWE node.
        +441          *
        +442          * @return true or false
        +443          */
        +444         public boolean isVulnCWENode() {
        +445             return VULN_CWE.equals(node);
        +446         }
        +447 
        +448         /**
        +449          * Checks if the handler is at the CVSS_SCORE node.
        +450          *
        +451          * @return true or false
        +452          */
        +453         public boolean isCVSSScoreNode() {
        +454             return CVSS_SCORE.equals(node);
        +455         }
        +456 
        +457         /**
        +458          * Checks if the handler is at the CVSS_ACCESS_VECTOR node.
        +459          *
        +460          * @return true or false
        +461          */
        +462         public boolean isCVSSAccessVectorNode() {
        +463             return CVSS_ACCESS_VECTOR.equals(node);
        +464         }
        +465 
        +466         /**
        +467          * Checks if the handler is at the CVSS_ACCESS_COMPLEXITY node.
        +468          *
        +469          * @return true or false
        +470          */
        +471         public boolean isCVSSAccessComplexityNode() {
        +472             return CVSS_ACCESS_COMPLEXITY.equals(node);
        +473         }
        +474 
        +475         /**
        +476          * Checks if the handler is at the CVSS_AUTHENTICATION node.
        +477          *
        +478          * @return true or false
        +479          */
        +480         public boolean isCVSSAuthenticationNode() {
        +481             return CVSS_AUTHENTICATION.equals(node);
        +482         }
        +483 
        +484         /**
        +485          * Checks if the handler is at the CVSS_CONFIDENTIALITY_IMPACT node.
        +486          *
        +487          * @return true or false
        +488          */
        +489         public boolean isCVSSConfidentialityImpactNode() {
        +490             return CVSS_CONFIDENTIALITY_IMPACT.equals(node);
        +491         }
        +492 
        +493         /**
        +494          * Checks if the handler is at the CVSS_INTEGRITY_IMPACT node.
        +495          *
        +496          * @return true or false
        +497          */
        +498         public boolean isCVSSIntegrityImpactNode() {
        +499             return CVSS_INTEGRITY_IMPACT.equals(node);
        +500         }
        +501 
        +502         /**
        +503          * Checks if the handler is at the CVSS_AVAILABILITY_IMPACT node.
        +504          *
        +505          * @return true or false
        +506          */
        +507         public boolean isCVSSAvailabilityImpactNode() {
        +508             return CVSS_AVAILABILITY_IMPACT.equals(node);
        +509         }
        +510     }
        +511     // </editor-fold>
        +512 }
        +
        +
        + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-frame.html index 616f69cb4..0ab94da72 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.nvdcve + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.nvdcve @@ -25,7 +25,16 @@ DatabaseException
      • - NvdCveAnalyzer + Element +
      • +
      • + InvalidDataException +
      • +
      • + NvdCve12Handler +
      • +
      • + NvdCve20Handler
      diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-summary.html index 1fc52f37b..4cb56b61d 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/nvdcve/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data.nvdcve + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.nvdcve @@ -52,7 +52,22 @@ - NvdCveAnalyzer + Element + + + + + InvalidDataException + + + + + NvdCve12Handler + + + + + NvdCve20Handler diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/package-frame.html index 66a5a3ccb..a7744064a 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/package-summary.html index d9eaf1f23..1180f1d50 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/data/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.data + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html new file mode 100644 index 000000000..9d4027c0f --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html @@ -0,0 +1,255 @@ + + + + +DataStoreMetaInfo xref + + + +
      +
      +1   /*
      +2    * This file is part of dependency-check-core.
      +3    *
      +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
      +5    * under the terms of the GNU General Public License as published by the Free
      +6    * Software Foundation, either version 3 of the License, or (at your option) any
      +7    * later version.
      +8    *
      +9    * Dependency-check-core is distributed in the hope that it will be useful, but
      +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
      +12   * details.
      +13   *
      +14   * You should have received a copy of the GNU General Public License along with
      +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
      +16   *
      +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
      +18   */
      +19  package org.owasp.dependencycheck.data.update;
      +20  
      +21  import java.io.File;
      +22  import java.io.FileInputStream;
      +23  import java.io.FileNotFoundException;
      +24  import java.io.FileOutputStream;
      +25  import java.io.IOException;
      +26  import java.io.InputStream;
      +27  import java.io.OutputStream;
      +28  import java.io.OutputStreamWriter;
      +29  import java.util.Properties;
      +30  import java.util.logging.Level;
      +31  import java.util.logging.Logger;
      +32  import org.owasp.dependencycheck.data.UpdateException;
      +33  import org.owasp.dependencycheck.data.nvdcve.CveDB;
      +34  import org.owasp.dependencycheck.utils.Settings;
      +35  
      +36  /**
      +37   *
      +38   * @author Jeremy Long (jeremy.long@owasp.org)
      +39   */
      +40  public class DataStoreMetaInfo {
      +41  
      +42      /**
      +43       * Batch key word, used as key to store information about batch mode.
      +44       */
      +45      public static final String BATCH = "batch";
      +46      /**
      +47       * Modified key word, used as a key to store information about the modified
      +48       * file (i.e. the containing the last 8 days of updates)..
      +49       */
      +50      public static final String MODIFIED = "modified";
      +51      /**
      +52       * The name of the properties file containing the timestamp of the last
      +53       * update.
      +54       */
      +55      private static final String UPDATE_PROPERTIES_FILE = "data.properties";
      +56      /**
      +57       * The properties file key for the last updated field - used to store the
      +58       * last updated time of the Modified NVD CVE xml file.
      +59       */
      +60      public static final String LAST_UPDATED = "lastupdated.modified";
      +61      /**
      +62       * Stores the last updated time for each of the NVD CVE files. These
      +63       * timestamps should be updated if we process the modified file within 7
      +64       * days of the last update.
      +65       */
      +66      public static final String LAST_UPDATED_BASE = "lastupdated.";
      +67      /**
      +68       * A collection of properties about the data.
      +69       */
      +70      private Properties properties = new Properties();
      +71      /**
      +72       * Indicates whether or not the updates are using a batch update mode or
      +73       * not.
      +74       */
      +75      private boolean batchUpdateMode;
      +76  
      +77      /**
      +78       * Get the value of batchUpdateMode.
      +79       *
      +80       * @return the value of batchUpdateMode
      +81       */
      +82      protected boolean isBatchUpdateMode() {
      +83          return batchUpdateMode;
      +84      }
      +85  
      +86      /**
      +87       * Set the value of batchUpdateMode.
      +88       *
      +89       * @param batchUpdateMode new value of batchUpdateMode
      +90       */
      +91      protected void setBatchUpdateMode(boolean batchUpdateMode) {
      +92          this.batchUpdateMode = batchUpdateMode;
      +93      }
      +94  
      +95      /**
      +96       * Constructs a new data properties object.
      +97       */
      +98      public DataStoreMetaInfo() {
      +99          batchUpdateMode = !Settings.getString(Settings.KEYS.BATCH_UPDATE_URL, "").isEmpty();
      +100         loadProperties();
      +101     }
      +102 
      +103     /**
      +104      * Loads the data's meta properties.
      +105      */
      +106     private void loadProperties() {
      +107         final File file = getPropertiesFile();
      +108         if (file.exists()) {
      +109             InputStream is = null;
      +110             try {
      +111                 is = new FileInputStream(file);
      +112             } catch (FileNotFoundException ignore) {
      +113                 //we will never get here as we check for existence above.
      +114                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ignore);
      +115             }
      +116             try {
      +117                 properties.load(is);
      +118             } catch (IOException ex) {
      +119                 final String msg = String.format("Unable to load properties file '%s'", file.getPath());
      +120                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.WARNING, msg);
      +121                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
      +122             } finally {
      +123                 if (is != null) {
      +124                     try {
      +125                         is.close();
      +126                     } catch (IOException ex) {
      +127                         final String msg = String.format("Unable to close properties file '%s'", file.getPath());
      +128                         Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.WARNING, msg);
      +129                         Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
      +130                     }
      +131                 }
      +132             }
      +133         }
      +134     }
      +135 
      +136     /**
      +137      * Returns whether or not any properties are set.
      +138      *
      +139      * @return whether or not any properties are set
      +140      */
      +141     public boolean isEmpty() {
      +142         return properties.isEmpty();
      +143     }
      +144 
      +145     /**
      +146      * Writes a properties file containing the last updated date to the
      +147      * VULNERABLE_CPE directory.
      +148      *
      +149      * @param updatedValue the updated nvdcve entry
      +150      * @throws UpdateException is thrown if there is an update exception
      +151      */
      +152     public void save(NvdCveInfo updatedValue) throws UpdateException {
      +153         if (updatedValue == null) {
      +154             return;
      +155         }
      +156         final File cveProp = getPropertiesFile();
      +157         final Properties prop = new Properties();
      +158         if (cveProp.exists()) {
      +159             FileInputStream in = null;
      +160             try {
      +161                 in = new FileInputStream(cveProp);
      +162                 prop.load(in);
      +163             } catch (Exception ignoreMe) {
      +164                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ignoreMe);
      +165             } finally {
      +166                 if (in != null) {
      +167                     try {
      +168                         in.close();
      +169                     } catch (Exception ignoreMeToo) {
      +170                         Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ignoreMeToo);
      +171                     }
      +172                 }
      +173             }
      +174         }
      +175         prop.put("version", CveDB.DB_SCHEMA_VERSION);
      +176         prop.put(LAST_UPDATED_BASE + updatedValue.getId(), String.valueOf(updatedValue.getTimestamp()));
      +177 
      +178         OutputStream os = null;
      +179         OutputStreamWriter out = null;
      +180         try {
      +181             os = new FileOutputStream(cveProp);
      +182             out = new OutputStreamWriter(os, "UTF-8");
      +183             prop.store(out, "Meta data about data and data sources used by dependency-check");
      +184         } catch (FileNotFoundException ex) {
      +185             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
      +186             throw new UpdateException("Unable to find last updated properties file.", ex);
      +187         } catch (IOException ex) {
      +188             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
      +189             throw new UpdateException("Unable to update last updated properties file.", ex);
      +190         } finally {
      +191             if (out != null) {
      +192                 try {
      +193                     out.close();
      +194                 } catch (IOException ex) {
      +195                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ex);
      +196                 }
      +197             }
      +198             if (os != null) {
      +199                 try {
      +200                     os.close();
      +201                 } catch (IOException ex) {
      +202                     Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINEST, null, ex);
      +203                 }
      +204             }
      +205         }
      +206     }
      +207 
      +208     /**
      +209      * Returns the property value for the given key. If the key is not contained
      +210      * in the underlying properties null is returned.
      +211      *
      +212      * @param key the property key
      +213      * @return the value of the property
      +214      */
      +215     public String getProperty(String key) {
      +216         return properties.getProperty(key);
      +217     }
      +218 
      +219     /**
      +220      * Returns the property value for the given key. If the key is not contained
      +221      * in the underlying properties the default value is returned.
      +222      *
      +223      * @param key the property key
      +224      * @param defaultValue the default value
      +225      * @return the value of the property
      +226      */
      +227     public String getProperty(String key, String defaultValue) {
      +228         return properties.getProperty(key, defaultValue);
      +229     }
      +230 
      +231     /**
      +232      * Retrieves the properties file.
      +233      *
      +234      * @return the properties file
      +235      */
      +236     public static File getPropertiesFile() {
      +237         final File dataDirectory = Settings.getFile(Settings.KEYS.DATA_DIRECTORY);
      +238         final File file = new File(dataDirectory, UPDATE_PROPERTIES_FILE);
      +239         return file;
      +240     }
      +241 }
      +
      +
      + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/update/DatabaseUpdater.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/DatabaseUpdater.html new file mode 100644 index 000000000..1b97fc5a5 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/DatabaseUpdater.html @@ -0,0 +1,586 @@ + + + + +DatabaseUpdater xref + + + +
      +
      +1   /*
      +2    * This file is part of dependency-check-core.
      +3    *
      +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
      +5    * under the terms of the GNU General Public License as published by the Free
      +6    * Software Foundation, either version 3 of the License, or (at your option) any
      +7    * later version.
      +8    *
      +9    * Dependency-check-core is distributed in the hope that it will be useful, but
      +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
      +12   * details.
      +13   *
      +14   * You should have received a copy of the GNU General Public License along with
      +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
      +16   *
      +17   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
      +18   */
      +19  package org.owasp.dependencycheck.data.update;
      +20  
      +21  import org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler;
      +22  import org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler;
      +23  import org.owasp.dependencycheck.data.nvdcve.InvalidDataException;
      +24  import java.io.File;
      +25  import java.io.FileNotFoundException;
      +26  import java.io.IOException;
      +27  import javax.xml.parsers.ParserConfigurationException;
      +28  import org.xml.sax.SAXException;
      +29  import org.owasp.dependencycheck.data.CachedWebDataSource;
      +30  import java.net.MalformedURLException;
      +31  import java.net.URISyntaxException;
      +32  import java.net.URL;
      +33  import java.sql.SQLException;
      +34  import java.util.Calendar;
      +35  import java.util.Date;
      +36  import java.util.List;
      +37  import java.util.Map;
      +38  import java.util.TreeMap;
      +39  import java.util.logging.Level;
      +40  import java.util.logging.Logger;
      +41  import javax.xml.parsers.SAXParser;
      +42  import javax.xml.parsers.SAXParserFactory;
      +43  import org.owasp.dependencycheck.data.UpdateException;
      +44  import org.owasp.dependencycheck.data.cpe.CpeIndexWriter;
      +45  import org.owasp.dependencycheck.data.nvdcve.CveDB;
      +46  import org.owasp.dependencycheck.dependency.VulnerableSoftware;
      +47  import org.owasp.dependencycheck.utils.DownloadFailedException;
      +48  import org.owasp.dependencycheck.utils.Downloader;
      +49  import org.owasp.dependencycheck.utils.FileUtils;
      +50  import org.owasp.dependencycheck.utils.Settings;
      +51  import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
      +52  import org.owasp.dependencycheck.utils.InvalidSettingException;
      +53  import static org.owasp.dependencycheck.data.update.DataStoreMetaInfo.BATCH;
      +54  import static org.owasp.dependencycheck.data.update.DataStoreMetaInfo.MODIFIED;
      +55  
      +56  /**
      +57   * Class responsible for updating the CPE and NVDCVE data stores.
      +58   *
      +59   * @author Jeremy Long (jeremy.long@owasp.org)
      +60   */
      +61  public class DatabaseUpdater implements CachedWebDataSource {
      +62  
      +63      /**
      +64       * Utility to read and write meta-data about the data.
      +65       */
      +66      private DataStoreMetaInfo properties = null;
      +67      /**
      +68       * Reference to the Cve Database.
      +69       */
      +70      private CveDB cveDB = null;
      +71      /**
      +72       * Reference to the Cpe Index.
      +73       */
      +74      private CpeIndexWriter cpeIndex = null;
      +75      /**
      +76       * A flag indicating whether or not the batch update should be performed.
      +77       */
      +78      private boolean doBatchUpdate;
      +79  
      +80      /**
      +81       * Get the value of doBatchUpdate
      +82       *
      +83       * @return the value of doBatchUpdate
      +84       */
      +85      protected boolean isDoBatchUpdate() {
      +86          return doBatchUpdate;
      +87      }
      +88  
      +89      /**
      +90       * Set the value of doBatchUpdate
      +91       *
      +92       * @param doBatchUpdate new value of doBatchUpdate
      +93       */
      +94      protected void setDoBatchUpdate(boolean doBatchUpdate) {
      +95          this.doBatchUpdate = doBatchUpdate;
      +96      }
      +97  
      +98      /**
      +99       * <p>Downloads the latest NVD CVE XML file from the web and imports it into
      +100      * the current CVE Database.</p>
      +101      *
      +102      * @throws UpdateException is thrown if there is an error updating the
      +103      * database
      +104      */
      +105     @Override
      +106     public void update() throws UpdateException {
      +107         doBatchUpdate = false;
      +108         properties = new DataStoreMetaInfo();
      +109         try {
      +110             final Map<String, NvdCveInfo> update = updateNeeded();
      +111             int maxUpdates = 0;
      +112             for (NvdCveInfo cve : update.values()) {
      +113                 if (cve.getNeedsUpdate()) {
      +114                     maxUpdates += 1;
      +115                 }
      +116             }
      +117             if (maxUpdates > 3 && !properties.isBatchUpdateMode()) {
      +118                 Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
      +119                         "NVD CVE requires several updates; this could take a couple of minutes.");
      +120             }
      +121             if (maxUpdates > 0 && !isDoBatchUpdate()) {
      +122                 openDataStores();
      +123             }
      +124 
      +125             if (properties.isBatchUpdateMode() && isDoBatchUpdate()) {
      +126                 try {
      +127                     performBatchUpdate();
      +128                     openDataStores();
      +129                 } catch (IOException ex) {
      +130                     throw new UpdateException("Unable to perform batch update", ex);
      +131                 }
      +132             }
      +133 
      +134             int count = 0;
      +135             for (NvdCveInfo cve : update.values()) {
      +136                 if (cve.getNeedsUpdate()) {
      +137                     count += 1;
      +138                     Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
      +139                             "Updating NVD CVE ({0} of {1})", new Object[]{count, maxUpdates});
      +140                     URL url = new URL(cve.getUrl());
      +141                     File outputPath = null;
      +142                     File outputPath12 = null;
      +143                     try {
      +144                         Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
      +145                                 "Downloading {0}", cve.getUrl());
      +146                         outputPath = File.createTempFile("cve" + cve.getId() + "_", ".xml");
      +147                         Downloader.fetchFile(url, outputPath);
      +148 
      +149                         url = new URL(cve.getOldSchemaVersionUrl());
      +150                         outputPath12 = File.createTempFile("cve_1_2_" + cve.getId() + "_", ".xml");
      +151                         Downloader.fetchFile(url, outputPath12);
      +152 
      +153                         Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
      +154                                 "Processing {0}", cve.getUrl());
      +155 
      +156                         importXML(outputPath, outputPath12);
      +157 
      +158                         cveDB.commit();
      +159                         cpeIndex.commit();
      +160 
      +161                         properties.save(cve);
      +162 
      +163                         Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.INFO,
      +164                                 "Completed update {0} of {1}", new Object[]{count, maxUpdates});
      +165                     } catch (FileNotFoundException ex) {
      +166                         throw new UpdateException(ex);
      +167                     } catch (ParserConfigurationException ex) {
      +168                         throw new UpdateException(ex);
      +169                     } catch (SAXException ex) {
      +170                         throw new UpdateException(ex);
      +171                     } catch (IOException ex) {
      +172                         throw new UpdateException(ex);
      +173                     } catch (SQLException ex) {
      +174                         throw new UpdateException(ex);
      +175                     } catch (DatabaseException ex) {
      +176                         throw new UpdateException(ex);
      +177                     } catch (ClassNotFoundException ex) {
      +178                         throw new UpdateException(ex);
      +179                     } finally {
      +180                         boolean deleted = false;
      +181                         try {
      +182                             if (outputPath != null && outputPath.exists()) {
      +183                                 deleted = outputPath.delete();
      +184                             }
      +185                         } finally {
      +186                             if (outputPath != null && (outputPath.exists() || !deleted)) {
      +187                                 outputPath.deleteOnExit();
      +188                             }
      +189                         }
      +190                         try {
      +191                             deleted = false;
      +192                             if (outputPath12 != null && outputPath12.exists()) {
      +193                                 deleted = outputPath12.delete();
      +194                             }
      +195                         } finally {
      +196                             if (outputPath12 != null && (outputPath12.exists() || !deleted)) {
      +197                                 outputPath12.deleteOnExit();
      +198                             }
      +199                         }
      +200                     }
      +201                 }
      +202             }
      +203             if (maxUpdates >= 1) { //ensure the modified file date gets written
      +204                 properties.save(update.get(MODIFIED));
      +205                 cveDB.cleanupDatabase();
      +206             }
      +207             if (update.get(BATCH) != null) {
      +208                 properties.save(update.get(BATCH));
      +209             }
      +210         } catch (MalformedURLException ex) {
      +211             throw new UpdateException(ex);
      +212         } catch (DownloadFailedException ex) {
      +213             throw new UpdateException(ex);
      +214         } finally {
      +215             closeDataStores();
      +216         }
      +217     }
      +218 
      +219     /**
      +220      * Imports the NVD CVE XML File into the Lucene Index.
      +221      *
      +222      * @param file the file containing the NVD CVE XML
      +223      * @param oldVersion contains the file containing the NVD CVE XML 1.2
      +224      * @throws ParserConfigurationException is thrown if there is a parser
      +225      * configuration exception
      +226      * @throws SAXException is thrown if there is a SAXException
      +227      * @throws IOException is thrown if there is a IO Exception
      +228      * @throws SQLException is thrown if there is a SQL exception
      +229      * @throws DatabaseException is thrown if there is a database exception
      +230      * @throws ClassNotFoundException thrown if the h2 database driver cannot be
      +231      * loaded
      +232      */
      +233     private void importXML(File file, File oldVersion)
      +234             throws ParserConfigurationException, SAXException, IOException, SQLException, DatabaseException, ClassNotFoundException {
      +235 
      +236         final SAXParserFactory factory = SAXParserFactory.newInstance();
      +237         final SAXParser saxParser = factory.newSAXParser();
      +238 
      +239         final NvdCve12Handler cve12Handler = new NvdCve12Handler();
      +240         saxParser.parse(oldVersion, cve12Handler);
      +241         final Map<String, List<VulnerableSoftware>> prevVersionVulnMap = cve12Handler.getVulnerabilities();
      +242 
      +243         final NvdCve20Handler cve20Handler = new NvdCve20Handler();
      +244         cve20Handler.setCveDB(cveDB);
      +245         cve20Handler.setPrevVersionVulnMap(prevVersionVulnMap);
      +246         cve20Handler.setCpeIndex(cpeIndex);
      +247         saxParser.parse(file, cve20Handler);
      +248     }
      +249 
      +250     /**
      +251      * Deletes the existing data directories.
      +252      *
      +253      * @throws IOException thrown if the directory cannot be deleted
      +254      */
      +255     protected void deleteExistingData() throws IOException {
      +256         File data = Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY);
      +257         if (data.exists()) {
      +258             FileUtils.delete(data);
      +259         }
      +260         data = Settings.getFile(Settings.KEYS.CPE_DATA_DIRECTORY);
      +261         if (data.exists()) {
      +262             FileUtils.delete(data);
      +263         }
      +264         data = DataStoreMetaInfo.getPropertiesFile();
      +265         if (data.exists()) {
      +266             FileUtils.delete(data);
      +267         }
      +268     }
      +269 
      +270     /**
      +271      * Performs the batch update based on the configured batch update URL.
      +272      *
      +273      * @throws UpdateException thrown if there is an exception during the update
      +274      * process
      +275      */
      +276     private void performBatchUpdate() throws UpdateException {
      +277         if (properties.isBatchUpdateMode() && doBatchUpdate) {
      +278             final String batchSrc = Settings.getString(Settings.KEYS.BATCH_UPDATE_URL);
      +279             File tmp = null;
      +280             try {
      +281                 deleteExistingData();
      +282                 final File dataDirectory = CveDB.getDataDirectory().getParentFile();
      +283                 final URL batchUrl = new URL(batchSrc);
      +284                 if ("file".equals(batchUrl.getProtocol())) {
      +285                     try {
      +286                         tmp = new File(batchUrl.toURI());
      +287                     } catch (URISyntaxException ex) {
      +288                         final String msg = String.format("Invalid batch update URI: %s", batchSrc);
      +289                         throw new UpdateException(msg, ex);
      +290                     }
      +291                 } else if ("http".equals(batchUrl.getProtocol())
      +292                         || "https".equals(batchUrl.getProtocol())) {
      +293                     tmp = File.createTempFile("batch_", ".zip");
      +294                     Downloader.fetchFile(batchUrl, tmp);
      +295                 }
      +296                 //TODO add FTP?
      +297                 FileUtils.extractFiles(tmp, dataDirectory);
      +298 
      +299             } catch (IOException ex) {
      +300                 final String msg = String.format("IO Exception Occured performing batch update using: %s", batchSrc);
      +301                 throw new UpdateException(msg, ex);
      +302             } finally {
      +303                 if (tmp != null && !tmp.delete()) {
      +304                     tmp.deleteOnExit();
      +305                 }
      +306             }
      +307         }
      +308     }
      +309 
      +310     /**
      +311      * Closes the CVE and CPE data stores.
      +312      */
      +313     private void closeDataStores() {
      +314         if (cveDB != null) {
      +315             try {
      +316                 cveDB.close();
      +317             } catch (Exception ignore) {
      +318                 Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINEST, "Error closing the cveDB", ignore);
      +319             }
      +320         }
      +321         if (cpeIndex != null) {
      +322             try {
      +323                 cpeIndex.close();
      +324             } catch (Exception ignore) {
      +325                 Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINEST, "Error closing the cpeIndex", ignore);
      +326             }
      +327         }
      +328     }
      +329 
      +330     /**
      +331      * Opens the CVE and CPE data stores.
      +332      *
      +333      * @throws UpdateException thrown if a data store cannot be opened
      +334      */
      +335     private void openDataStores() throws UpdateException {
      +336         //open the cve and cpe data stores
      +337         try {
      +338             cveDB = new CveDB();
      +339             cveDB.open();
      +340             cpeIndex = new CpeIndexWriter();
      +341             cpeIndex.open();
      +342         } catch (IOException ex) {
      +343             closeDataStores();
      +344             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "IO Error opening databases", ex);
      +345             throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
      +346         } catch (SQLException ex) {
      +347             closeDataStores();
      +348             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "SQL Exception opening databases", ex);
      +349             throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
      +350         } catch (DatabaseException ex) {
      +351             closeDataStores();
      +352             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "Database Exception opening databases", ex);
      +353             throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
      +354         } catch (ClassNotFoundException ex) {
      +355             closeDataStores();
      +356             Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, "Class not found exception opening databases", ex);
      +357             throw new UpdateException("Error updating the CPE/CVE data, please see the log file for more details.");
      +358         }
      +359     }
      +360 
      +361     /**
      +362      * Determines if the index needs to be updated. This is done by fetching the
      +363      * NVD CVE meta data and checking the last update date. If the data needs to
      +364      * be refreshed this method will return the NvdCveUrl for the files that
      +365      * need to be updated.
      +366      *
      +367      * @return the NvdCveUrl of the files that need to be updated.
      +368      * @throws MalformedURLException is thrown if the URL for the NVD CVE Meta
      +369      * data is incorrect.
      +370      * @throws DownloadFailedException is thrown if there is an error.
      +371      * downloading the NVD CVE download data file.
      +372      * @throws UpdateException Is thrown if there is an issue with the last
      +373      * updated properties file.
      +374      */
      +375     private Map<String, NvdCveInfo> updateNeeded() throws MalformedURLException, DownloadFailedException, UpdateException {
      +376 
      +377         Map<String, NvdCveInfo> currentlyPublished;
      +378         try {
      +379             currentlyPublished = retrieveCurrentTimestampsFromWeb();
      +380         } catch (InvalidDataException ex) {
      +381             final String msg = "Unable to retrieve valid timestamp from nvd cve downloads page";
      +382             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, msg, ex);
      +383             throw new DownloadFailedException(msg, ex);
      +384         } catch (InvalidSettingException ex) {
      +385             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, "Invalid setting found when retrieving timestamps", ex);
      +386             throw new DownloadFailedException("Invalid settings", ex);
      +387         }
      +388 
      +389         if (currentlyPublished == null) {
      +390             throw new DownloadFailedException("Unable to retrieve the timestamps of the currently published NVD CVE data");
      +391         }
      +392 
      +393 //        final File cpeDataDirectory;
      +394 //        try {
      +395 //            cpeDataDirectory = CveDB.getDataDirectory();
      +396 //        } catch (IOException ex) {
      +397 //            String msg;
      +398 //            try {
      +399 //                msg = String.format("Unable to create the CVE Data Directory '%s'",
      +400 //                        Settings.getFile(Settings.KEYS.CVE_DATA_DIRECTORY).getCanonicalPath());
      +401 //            } catch (IOException ex1) {
      +402 //                msg = String.format("Unable to create the CVE Data Directory, this is likely a configuration issue: '%s%s%s'",
      +403 //                        Settings.getString(Settings.KEYS.DATA_DIRECTORY, ""),
      +404 //                        File.separator,
      +405 //                        Settings.getString(Settings.KEYS.CVE_DATA_DIRECTORY, ""));
      +406 //            }
      +407 //            throw new UpdateException(msg, ex);
      +408 //        }
      +409 
      +410         if (!properties.isEmpty()) {
      +411             try {
      +412                 boolean deleteAndRecreate = false;
      +413                 float version;
      +414 
      +415                 if (properties.getProperty("version") == null) {
      +416                     deleteAndRecreate = true;
      +417                 } else {
      +418                     try {
      +419                         version = Float.parseFloat(properties.getProperty("version"));
      +420                         final float currentVersion = Float.parseFloat(CveDB.DB_SCHEMA_VERSION);
      +421                         if (currentVersion > version) {
      +422                             deleteAndRecreate = true;
      +423                         }
      +424                     } catch (NumberFormatException ex) {
      +425                         deleteAndRecreate = true;
      +426                     }
      +427                 }
      +428 
      +429                 final NvdCveInfo batchInfo = currentlyPublished.get(BATCH);
      +430                 if (properties.isBatchUpdateMode() && batchInfo != null) {
      +431                     final long lastUpdated = Long.parseLong(properties.getProperty(DataStoreMetaInfo.BATCH, "0"));
      +432                     if (lastUpdated != batchInfo.getTimestamp()) {
      +433                         deleteAndRecreate = true;
      +434                     }
      +435                 }
      +436 
      +437                 if (deleteAndRecreate) {
      +438                     setDoBatchUpdate(properties.isBatchUpdateMode());
      +439                     try {
      +440                         deleteExistingData();
      +441                     } catch (IOException ex) {
      +442                         final String msg = "Unable to delete existing data";
      +443                         Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.WARNING, msg);
      +444                         Logger.getLogger(DatabaseUpdater.class.getName()).log(Level.FINE, null, ex);
      +445                     }
      +446                     return currentlyPublished;
      +447                 }
      +448 
      +449                 final long lastUpdated = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED, "0"));
      +450                 final Date now = new Date();
      +451                 final int days = Settings.getInt(Settings.KEYS.CVE_MODIFIED_VALID_FOR_DAYS, 7);
      +452                 final int start = Settings.getInt(Settings.KEYS.CVE_START_YEAR, 2002);
      +453                 final int end = Calendar.getInstance().get(Calendar.YEAR);
      +454                 if (lastUpdated == currentlyPublished.get(MODIFIED).getTimestamp()) {
      +455                     currentlyPublished.clear(); //we don't need to update anything.
      +456                     setDoBatchUpdate(properties.isBatchUpdateMode());
      +457                 } else if (withinRange(lastUpdated, now.getTime(), days)) {
      +458                     currentlyPublished.get(MODIFIED).setNeedsUpdate(true);
      +459                     if (properties.isBatchUpdateMode()) {
      +460                         setDoBatchUpdate(false);
      +461                     } else {
      +462                         for (int i = start; i <= end; i++) {
      +463                             currentlyPublished.get(String.valueOf(i)).setNeedsUpdate(false);
      +464                         }
      +465                     }
      +466                 } else if (properties.isBatchUpdateMode()) {
      +467                     currentlyPublished.get(MODIFIED).setNeedsUpdate(true);
      +468                     setDoBatchUpdate(true);
      +469                 } else { //we figure out which of the several XML files need to be downloaded.
      +470                     currentlyPublished.get(MODIFIED).setNeedsUpdate(false);
      +471                     for (int i = start; i <= end; i++) {
      +472                         final NvdCveInfo cve = currentlyPublished.get(String.valueOf(i));
      +473                         long currentTimestamp = 0;
      +474                         try {
      +475                             currentTimestamp = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED_BASE + String.valueOf(i), "0"));
      +476                         } catch (NumberFormatException ex) {
      +477                             final String msg = String.format("Error parsing '%s' '%s' from nvdcve.lastupdated",
      +478                                     DataStoreMetaInfo.LAST_UPDATED_BASE, String.valueOf(i));
      +479                             Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, msg, ex);
      +480                         }
      +481                         if (currentTimestamp == cve.getTimestamp()) {
      +482                             cve.setNeedsUpdate(false); //they default to true.
      +483                         }
      +484                     }
      +485                 }
      +486             } catch (NumberFormatException ex) {
      +487                 final String msg = "An invalid schema version or timestamp exists in the data.properties file.";
      +488                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.WARNING, msg);
      +489                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.FINE, null, ex);
      +490                 setDoBatchUpdate(properties.isBatchUpdateMode());
      +491             }
      +492         } else {
      +493             setDoBatchUpdate(properties.isBatchUpdateMode());
      +494         }
      +495         return currentlyPublished;
      +496     }
      +497 
      +498     /**
      +499      * Determines if the epoch date is within the range specified of the
      +500      * compareTo epoch time. This takes the (compareTo-date)/1000/60/60/24 to
      +501      * get the number of days. If the calculated days is less then the range the
      +502      * date is considered valid.
      +503      *
      +504      * @param date the date to be checked.
      +505      * @param compareTo the date to compare to.
      +506      * @param range the range in days to be considered valid.
      +507      * @return whether or not the date is within the range.
      +508      */
      +509     private boolean withinRange(long date, long compareTo, int range) {
      +510         final double differenceInDays = (compareTo - date) / 1000.0 / 60.0 / 60.0 / 24.0;
      +511         return differenceInDays < range;
      +512     }
      +513 
      +514     /**
      +515      * Retrieves the timestamps from the NVD CVE meta data file.
      +516      *
      +517      * @return the timestamp from the currently published nvdcve downloads page
      +518      * @throws MalformedURLException thrown if the URL for the NVD CCE Meta data
      +519      * is incorrect.
      +520      * @throws DownloadFailedException thrown if there is an error downloading
      +521      * the nvd cve meta data file
      +522      * @throws InvalidDataException thrown if there is an exception parsing the
      +523      * timestamps
      +524      * @throws InvalidSettingException thrown if the settings are invalid
      +525      */
      +526     private Map<String, NvdCveInfo> retrieveCurrentTimestampsFromWeb()
      +527             throws MalformedURLException, DownloadFailedException, InvalidDataException, InvalidSettingException {
      +528 
      +529         final Map<String, NvdCveInfo> map = new TreeMap<String, NvdCveInfo>();
      +530         String retrieveUrl = Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL);
      +531         if (retrieveUrl == null && properties.isBatchUpdateMode()) {
      +532             final NvdCveInfo item = new NvdCveInfo();
      +533             retrieveUrl = Settings.getString(Settings.KEYS.BATCH_UPDATE_URL);
      +534             if (retrieveUrl == null) {
      +535                 final String msg = "Invalid configuration - neither the modified or batch update URLs are specified in the configuration.";
      +536                 Logger.getLogger(DataStoreMetaInfo.class.getName()).log(Level.SEVERE, msg);
      +537                 throw new InvalidSettingException(msg);
      +538             }
      +539             item.setTimestamp(Downloader.getLastModified(new URL(retrieveUrl)));
      +540             item.setId(BATCH);
      +541             item.setNeedsUpdate(false);
      +542             map.put(BATCH, item);
      +543         } else {
      +544             NvdCveInfo item = new NvdCveInfo();
      +545             item.setNeedsUpdate(false); //the others default to true, to make life easier later this should default to false.
      +546             item.setId(MODIFIED);
      +547             item.setUrl(retrieveUrl);
      +548             item.setOldSchemaVersionUrl(Settings.getString(Settings.KEYS.CVE_MODIFIED_12_URL));
      +549 
      +550             item.setTimestamp(Downloader.getLastModified(new URL(retrieveUrl)));
      +551             map.put(MODIFIED, item);
      +552 
      +553             //only add these urls if we are not in batch mode
      +554             if (!properties.isBatchUpdateMode()) {
      +555                 final int start = Settings.getInt(Settings.KEYS.CVE_START_YEAR);
      +556                 final int end = Calendar.getInstance().get(Calendar.YEAR);
      +557                 final String baseUrl20 = Settings.getString(Settings.KEYS.CVE_SCHEMA_2_0);
      +558                 final String baseUrl12 = Settings.getString(Settings.KEYS.CVE_SCHEMA_1_2);
      +559                 for (int i = start; i <= end; i++) {
      +560                     retrieveUrl = String.format(baseUrl20, i);
      +561                     item = new NvdCveInfo();
      +562                     item.setId(Integer.toString(i));
      +563                     item.setUrl(retrieveUrl);
      +564                     item.setOldSchemaVersionUrl(String.format(baseUrl12, i));
      +565                     item.setTimestamp(Downloader.getLastModified(new URL(retrieveUrl)));
      +566                     map.put(item.getId(), item);
      +567                 }
      +568             }
      +569         }
      +570         return map;
      +571     }
      +572 }
      +
      +
      + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/update/NvdCveInfo.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/NvdCveInfo.html new file mode 100644 index 000000000..94160fd5b --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/NvdCveInfo.html @@ -0,0 +1,152 @@ + + + + +NvdCveInfo xref + + + +
      +
      +1   /*
      +2    * This file is part of dependency-check-core.
      +3    *
      +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
      +5    * under the terms of the GNU General Public License as published by the Free
      +6    * Software Foundation, either version 3 of the License, or (at your option) any
      +7    * later version.
      +8    *
      +9    * Dependency-check-core is distributed in the hope that it will be useful, but
      +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
      +12   * details.
      +13   *
      +14   * You should have received a copy of the GNU General Public License along with
      +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
      +16   *
      +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
      +18   */
      +19  package org.owasp.dependencycheck.data.update;
      +20  
      +21  /**
      +22   * A pojo that contains the Url and timestamp of the current NvdCve XML files.
      +23   *
      +24   * @author Jeremy Long (jeremy.long@owasp.org)
      +25   */
      +26  public class NvdCveInfo {
      +27  
      +28      /**
      +29       * an id.
      +30       */
      +31      private String id;
      +32  
      +33      /**
      +34       * Get the value of id.
      +35       *
      +36       * @return the value of id
      +37       */
      +38      public String getId() {
      +39          return id;
      +40      }
      +41  
      +42      /**
      +43       * Set the value of id.
      +44       *
      +45       * @param id new value of id
      +46       */
      +47      public void setId(String id) {
      +48          this.id = id;
      +49      }
      +50      /**
      +51       * a url.
      +52       */
      +53      private String url;
      +54  
      +55      /**
      +56       * Get the value of url.
      +57       *
      +58       * @return the value of url
      +59       */
      +60      public String getUrl() {
      +61          return url;
      +62      }
      +63  
      +64      /**
      +65       * Set the value of url.
      +66       *
      +67       * @param url new value of url
      +68       */
      +69      public void setUrl(String url) {
      +70          this.url = url;
      +71      }
      +72      /**
      +73       * The 1.2 schema URL.
      +74       */
      +75      private String oldSchemaVersionUrl;
      +76  
      +77      /**
      +78       * Get the value of oldSchemaVersionUrl.
      +79       *
      +80       * @return the value of oldSchemaVersionUrl
      +81       */
      +82      public String getOldSchemaVersionUrl() {
      +83          return oldSchemaVersionUrl;
      +84      }
      +85  
      +86      /**
      +87       * Set the value of oldSchemaVersionUrl.
      +88       *
      +89       * @param oldSchemaVersionUrl new value of oldSchemaVersionUrl
      +90       */
      +91      public void setOldSchemaVersionUrl(String oldSchemaVersionUrl) {
      +92          this.oldSchemaVersionUrl = oldSchemaVersionUrl;
      +93      }
      +94      /**
      +95       * a timestamp - epoch time.
      +96       */
      +97      private long timestamp;
      +98  
      +99      /**
      +100      * Get the value of timestamp - epoch time.
      +101      *
      +102      * @return the value of timestamp - epoch time
      +103      */
      +104     public long getTimestamp() {
      +105         return timestamp;
      +106     }
      +107 
      +108     /**
      +109      * Set the value of timestamp - epoch time.
      +110      *
      +111      * @param timestamp new value of timestamp - epoch time
      +112      */
      +113     public void setTimestamp(long timestamp) {
      +114         this.timestamp = timestamp;
      +115     }
      +116     /**
      +117      * indicates whether or not this item should be updated.
      +118      */
      +119     private boolean needsUpdate = true;
      +120 
      +121     /**
      +122      * Get the value of needsUpdate.
      +123      *
      +124      * @return the value of needsUpdate
      +125      */
      +126     public boolean getNeedsUpdate() {
      +127         return needsUpdate;
      +128     }
      +129 
      +130     /**
      +131      * Set the value of needsUpdate.
      +132      *
      +133      * @param needsUpdate new value of needsUpdate
      +134      */
      +135     public void setNeedsUpdate(boolean needsUpdate) {
      +136         this.needsUpdate = needsUpdate;
      +137     }
      +138 }
      +
      +
      + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/update/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/package-frame.html new file mode 100644 index 000000000..651392f0a --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/package-frame.html @@ -0,0 +1,30 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.update + + + + +

      + org.owasp.dependencycheck.data.update +

      + +

      Classes

      + + + + + \ No newline at end of file diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/data/update/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/package-summary.html new file mode 100644 index 000000000..f7b865283 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/data/update/package-summary.html @@ -0,0 +1,77 @@ + + + + + + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.data.update + + + +
      + +
      +
      + +
      + +

      Package org.owasp.dependencycheck.data.update

      + + + + + + + + + + + + + + + + + + +
      Class Summary
      + DataStoreMetaInfo +
      + DatabaseUpdater +
      + NvdCveInfo +
      + +
      + +
      +
      + +
      +
      + Copyright © 2012-2013 OWASP. All Rights Reserved. + + \ No newline at end of file diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-frame.html index d742403cd..dcf6ebf0d 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.dependency + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.dependency diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-summary.html index cffaab572..b99080137 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/dependency/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.dependency + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.dependency diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html index b55f261ac..3d9f96516 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.jaxb.pom.generated + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.jaxb.pom.generated diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html index d5b742f2e..9be0b3af1 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/generated/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.jaxb.pom.generated + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.jaxb.pom.generated diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-frame.html index ab12f0ddd..96bb43259 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.jaxb.pom + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.jaxb.pom diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-summary.html index d53bf6ea7..b4ec03afc 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/jaxb/pom/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.jaxb.pom + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.jaxb.pom diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/package-frame.html index 1cbb8d411..a07f3d7ae 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/package-summary.html index 2c49ba712..d0d076c04 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-frame.html index b0a5ce443..a6af7630c 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.reporting + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.reporting diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-summary.html index 05e2d273f..179253010 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/reporting/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.reporting + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.reporting diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/utils/Downloader.html b/dependency-check-core/xref/org/owasp/dependencycheck/utils/Downloader.html index 7d575880a..439932ad7 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/utils/Downloader.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/utils/Downloader.html @@ -37,210 +37,186 @@ 27 import java.net.InetSocketAddress; 28 import java.net.Proxy; 29 import java.net.SocketAddress; -30 import java.net.URL; -31 import java.util.logging.Level; -32 import java.util.logging.Logger; -33 import java.util.zip.GZIPInputStream; -34 import java.util.zip.InflaterInputStream; -35 -36 /** -37 * A utility to download files from the Internet. -38 * -39 * @author Jeremy Long (jeremy.long@owasp.org) -40 */ -41 public final class Downloader { -42 -43 /** -44 * Private constructor for utility class. -45 */ -46 private Downloader() { -47 } -48 -49 /** -50 * Retrieves a file from a given URL and saves it to the outputPath. -51 * -52 * @param url the URL of the file to download. -53 * @param outputPath the path to the save the file to. -54 * @throws DownloadFailedException is thrown if there is an error -55 * downloading the file. -56 */ -57 public static void fetchFile(URL url, String outputPath) throws DownloadFailedException { -58 fetchFile(url, outputPath, false); -59 } -60 -61 /** -62 * Retrieves a file from a given URL and saves it to the outputPath. -63 * -64 * @param url the URL of the file to download. -65 * @param outputPath the path to the save the file to. -66 * @param unzip true/false indicating that the file being retrieved is -67 * gzipped and if true, should be uncompressed before writing to the file. -68 * @throws DownloadFailedException is thrown if there is an error -69 * downloading the file. -70 */ -71 public static void fetchFile(URL url, String outputPath, boolean unzip) throws DownloadFailedException { -72 final File f = new File(outputPath); -73 fetchFile(url, f, unzip); -74 } +30 import java.net.URISyntaxException; +31 import java.net.URL; +32 import java.util.logging.Level; +33 import java.util.logging.Logger; +34 import java.util.zip.GZIPInputStream; +35 import java.util.zip.InflaterInputStream; +36 +37 /** +38 * A utility to download files from the Internet. +39 * +40 * @author Jeremy Long (jeremy.long@owasp.org) +41 */ +42 public final class Downloader { +43 +44 /** +45 * Private constructor for utility class. +46 */ +47 private Downloader() { +48 } +49 +50 /** +51 * Retrieves a file from a given URL and saves it to the outputPath. +52 * +53 * @param url the URL of the file to download. +54 * @param outputPath the path to the save the file to. +55 * @throws DownloadFailedException is thrown if there is an error +56 * downloading the file. +57 */ +58 public static void fetchFile(URL url, File outputPath) throws DownloadFailedException { +59 HttpURLConnection conn = null; +60 try { +61 conn = Downloader.getConnection(url); +62 conn.setRequestProperty("Accept-Encoding", "gzip, deflate"); +63 conn.connect(); +64 } catch (IOException ex) { +65 try { +66 if (conn != null) { +67 conn.disconnect(); +68 } +69 } finally { +70 conn = null; +71 } +72 throw new DownloadFailedException("Error downloading file.", ex); +73 } +74 final String encoding = conn.getContentEncoding(); 75 -76 /** -77 * Retrieves a file from a given URL and saves it to the outputPath. -78 * -79 * @param url the URL of the file to download. -80 * @param outputPath the path to the save the file to. -81 * @throws DownloadFailedException is thrown if there is an error -82 * downloading the file. -83 */ -84 public static void fetchFile(URL url, File outputPath) throws DownloadFailedException { -85 fetchFile(url, outputPath, false); -86 } -87 -88 /** -89 * Retrieves a file from a given URL and saves it to the outputPath. -90 * -91 * @param url the URL of the file to download. -92 * @param outputPath the path to the save the file to. -93 * @param unzip true/false indicating that the file being retrieved is -94 * gzipped and if true, should be uncompressed before writing to the file. -95 * @throws DownloadFailedException is thrown if there is an error -96 * downloading the file. -97 */ -98 public static void fetchFile(URL url, File outputPath, boolean unzip) throws DownloadFailedException { -99 HttpURLConnection conn = null; -100 try { -101 conn = Downloader.getConnection(url); -102 conn.setRequestProperty("Accept-Encoding", "gzip, deflate"); -103 conn.connect(); -104 } catch (IOException ex) { -105 try { -106 if (conn != null) { -107 conn.disconnect(); -108 } -109 } finally { -110 conn = null; +76 BufferedOutputStream writer = null; +77 InputStream reader = null; +78 try { +79 if (encoding != null && "gzip".equalsIgnoreCase(encoding)) { +80 reader = new GZIPInputStream(conn.getInputStream()); +81 } else if (encoding != null && "deflate".equalsIgnoreCase(encoding)) { +82 reader = new InflaterInputStream(conn.getInputStream()); +83 } else { +84 reader = conn.getInputStream(); +85 } +86 +87 writer = new BufferedOutputStream(new FileOutputStream(outputPath)); +88 final byte[] buffer = new byte[4096]; +89 int bytesRead; +90 while ((bytesRead = reader.read(buffer)) > 0) { +91 writer.write(buffer, 0, bytesRead); +92 } +93 } catch (Exception ex) { +94 throw new DownloadFailedException("Error saving downloaded file.", ex); +95 } finally { +96 if (writer != null) { +97 try { +98 writer.close(); +99 } catch (Exception ex) { +100 Logger.getLogger(Downloader.class.getName()).log(Level.FINEST, +101 "Error closing the writer in Downloader.", ex); +102 } +103 } +104 if (reader != null) { +105 try { +106 reader.close(); +107 } catch (Exception ex) { +108 Logger.getLogger(Downloader.class.getName()).log(Level.FINEST, +109 "Error closing the reader in Downloader.", ex); +110 } 111 } -112 throw new DownloadFailedException("Error downloading file.", ex); -113 } -114 final String encoding = conn.getContentEncoding(); -115 -116 BufferedOutputStream writer = null; -117 InputStream reader = null; -118 try { -119 if (unzip || (encoding != null && "gzip".equalsIgnoreCase(encoding))) { -120 reader = new GZIPInputStream(conn.getInputStream()); -121 } else if (encoding != null && "deflate".equalsIgnoreCase(encoding)) { -122 reader = new InflaterInputStream(conn.getInputStream()); -123 } else { -124 reader = conn.getInputStream(); -125 } -126 -127 writer = new BufferedOutputStream(new FileOutputStream(outputPath)); -128 final byte[] buffer = new byte[4096]; -129 int bytesRead; -130 while ((bytesRead = reader.read(buffer)) > 0) { -131 writer.write(buffer, 0, bytesRead); -132 } -133 } catch (Exception ex) { -134 throw new DownloadFailedException("Error saving downloaded file.", ex); -135 } finally { -136 if (writer != null) { -137 try { -138 writer.close(); -139 writer = null; -140 } catch (Exception ex) { -141 Logger.getLogger(Downloader.class.getName()).log(Level.FINEST, -142 "Error closing the writer in Downloader.", ex); -143 } -144 } -145 if (reader != null) { -146 try { -147 reader.close(); -148 reader = null; -149 } catch (Exception ex) { -150 -151 Logger.getLogger(Downloader.class.getName()).log(Level.FINEST, -152 "Error closing the reader in Downloader.", ex); -153 } -154 } -155 try { -156 conn.disconnect(); -157 } finally { -158 conn = null; -159 } -160 } -161 } -162 -163 /** -164 * Makes an HTTP Head request to retrieve the last modified date of the -165 * given URL. -166 * -167 * @param url the URL to retrieve the timestamp from -168 * @return an epoch timestamp -169 * @throws DownloadFailedException is thrown if an exception occurs making -170 * the HTTP request -171 */ -172 public static long getLastModified(URL url) throws DownloadFailedException { -173 HttpURLConnection conn = null; -174 long timestamp = 0; -175 try { -176 conn = Downloader.getConnection(url); -177 conn.setRequestMethod("HEAD"); -178 conn.connect(); -179 timestamp = conn.getLastModified(); -180 } catch (Exception ex) { -181 throw new DownloadFailedException("Error making HTTP HEAD request.", ex); -182 } finally { -183 if (conn != null) { -184 try { -185 conn.disconnect(); -186 } finally { -187 conn = null; -188 } -189 } -190 } -191 return timestamp; -192 } -193 -194 /** -195 * Utility method to get an HttpURLConnection. If the app is configured to -196 * use a proxy this method will retrieve the proxy settings and use them -197 * when setting up the connection. -198 * -199 * @param url the url to connect to -200 * @return an HttpURLConnection -201 * @throws DownloadFailedException thrown if there is an exception -202 */ -203 private static HttpURLConnection getConnection(URL url) throws DownloadFailedException { -204 HttpURLConnection conn = null; -205 Proxy proxy = null; -206 final String proxyUrl = Settings.getString(Settings.KEYS.PROXY_URL); -207 try { -208 if (proxyUrl != null) { -209 final int proxyPort = Settings.getInt(Settings.KEYS.PROXY_PORT); -210 final SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort); -211 proxy = new Proxy(Proxy.Type.HTTP, addr); -212 conn = (HttpURLConnection) url.openConnection(proxy); -213 } else { -214 conn = (HttpURLConnection) url.openConnection(); -215 } -216 //added a default timeout of 20000 -217 //if (Settings.getString(Settings.KEYS.CONNECTION_TIMEOUT) != null) { -218 final int timeout = Settings.getInt(Settings.KEYS.CONNECTION_TIMEOUT, 60000); -219 conn.setConnectTimeout(timeout); -220 //} -221 } catch (IOException ex) { -222 if (conn != null) { -223 try { -224 conn.disconnect(); -225 } finally { -226 conn = null; -227 } -228 } -229 throw new DownloadFailedException("Error getting connection.", ex); -230 } -231 return conn; -232 } -233 } +112 try { +113 conn.disconnect(); +114 } finally { +115 conn = null; +116 } +117 } +118 } +119 +120 /** +121 * Makes an HTTP Head request to retrieve the last modified date of the +122 * given URL. If the file:// protocol is specified, then the lastTimestamp +123 * of the file is returned. +124 * +125 * @param url the URL to retrieve the timestamp from +126 * @return an epoch timestamp +127 * @throws DownloadFailedException is thrown if an exception occurs making +128 * the HTTP request +129 */ +130 public static long getLastModified(URL url) throws DownloadFailedException { +131 long timestamp = 0; +132 //TODO add the FPR protocol? +133 if ("file".equalsIgnoreCase(url.getProtocol())) { +134 File lastModifiedFile; +135 try { +136 // if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { +137 // String filePath = url.toString(); +138 // if (filePath.matches("file://[a-zA-Z]:.*")) { +139 // f = new File(filePath.substring(7)); +140 // } else { +141 // f = new File(url.toURI()); +142 // } +143 // } else { +144 lastModifiedFile = new File(url.toURI()); +145 // } +146 } catch (URISyntaxException ex) { +147 final String msg = String.format("Unable to locate '%s'; is the cve.url-2.0.modified property set correctly?", url.toString()); +148 throw new DownloadFailedException(msg); +149 } +150 timestamp = lastModifiedFile.lastModified(); +151 } else { +152 HttpURLConnection conn = null; +153 try { +154 conn = Downloader.getConnection(url); +155 conn.setRequestMethod("HEAD"); +156 conn.connect(); +157 timestamp = conn.getLastModified(); +158 } catch (Exception ex) { +159 throw new DownloadFailedException("Error making HTTP HEAD request.", ex); +160 } finally { +161 if (conn != null) { +162 try { +163 conn.disconnect(); +164 } finally { +165 conn = null; +166 } +167 } +168 } +169 } +170 return timestamp; +171 } +172 +173 /** +174 * Utility method to get an HttpURLConnection. If the app is configured to +175 * use a proxy this method will retrieve the proxy settings and use them +176 * when setting up the connection. +177 * +178 * @param url the url to connect to +179 * @return an HttpURLConnection +180 * @throws DownloadFailedException thrown if there is an exception +181 */ +182 private static HttpURLConnection getConnection(URL url) throws DownloadFailedException { +183 HttpURLConnection conn = null; +184 Proxy proxy = null; +185 final String proxyUrl = Settings.getString(Settings.KEYS.PROXY_URL); +186 try { +187 if (proxyUrl != null) { +188 final int proxyPort = Settings.getInt(Settings.KEYS.PROXY_PORT); +189 final SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort); +190 proxy = new Proxy(Proxy.Type.HTTP, addr); +191 conn = (HttpURLConnection) url.openConnection(proxy); +192 } else { +193 conn = (HttpURLConnection) url.openConnection(); +194 } +195 final int timeout = Settings.getInt(Settings.KEYS.CONNECTION_TIMEOUT, 60000); +196 conn.setConnectTimeout(timeout); +197 } catch (IOException ex) { +198 if (conn != null) { +199 try { +200 conn.disconnect(); +201 } finally { +202 conn = null; +203 } +204 } +205 throw new DownloadFailedException("Error getting connection.", ex); +206 } +207 return conn; +208 } +209 }
      diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/utils/ExtractionException.html b/dependency-check-core/xref/org/owasp/dependencycheck/utils/ExtractionException.html new file mode 100644 index 000000000..66d9d30a7 --- /dev/null +++ b/dependency-check-core/xref/org/owasp/dependencycheck/utils/ExtractionException.html @@ -0,0 +1,83 @@ + + + + +ExtractionException xref + + + +
      +
      +1   /*
      +2    * This file is part of dependency-check-core.
      +3    *
      +4    * Dependency-check-core is free software: you can redistribute it and/or modify it
      +5    * under the terms of the GNU General Public License as published by the Free
      +6    * Software Foundation, either version 3 of the License, or (at your option) any
      +7    * later version.
      +8    *
      +9    * Dependency-check-core is distributed in the hope that it will be useful, but
      +10   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      +11   * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
      +12   * details.
      +13   *
      +14   * You should have received a copy of the GNU General Public License along with
      +15   * dependency-check-core. If not, see http://www.gnu.org/licenses/.
      +16   *
      +17   * Copyright (c) 2013 Jeremy Long. All Rights Reserved.
      +18   */
      +19  package org.owasp.dependencycheck.utils;
      +20  
      +21  import java.io.IOException;
      +22  
      +23  /**
      +24   * An exception used when a file is unable to be un-zipped.
      +25   *
      +26   * @author Jeremy Long (jeremy.long@owasp.org)
      +27   */
      +28  public class ExtractionException extends IOException {
      +29  
      +30      /**
      +31       * The serial version UID.
      +32       */
      +33      private static final long serialVersionUID = 1L;
      +34  
      +35      /**
      +36       * Creates a new ExtractionException.
      +37       */
      +38      public ExtractionException() {
      +39          super();
      +40      }
      +41  
      +42      /**
      +43       * Creates a new ExtractionException.
      +44       *
      +45       * @param msg a message for the exception.
      +46       */
      +47      public ExtractionException(String msg) {
      +48          super(msg);
      +49      }
      +50  
      +51      /**
      +52       * Creates a new ExtractionException.
      +53       *
      +54       * @param ex the cause of the download failure.
      +55       */
      +56      public ExtractionException(Throwable ex) {
      +57          super(ex);
      +58      }
      +59  
      +60      /**
      +61       * Creates a new ExtractionException.
      +62       *
      +63       * @param msg a message for the exception.
      +64       * @param ex the cause of the download failure.
      +65       */
      +66      public ExtractionException(String msg, Throwable ex) {
      +67          super(msg, ex);
      +68      }
      +69  }
      +
      +
      + + diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/utils/FileUtils.html b/dependency-check-core/xref/org/owasp/dependencycheck/utils/FileUtils.html index 670c84d89..79099c3f1 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/utils/FileUtils.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/utils/FileUtils.html @@ -28,103 +28,242 @@ 18 */ 19 package org.owasp.dependencycheck.utils; 20 -21 import java.io.File; -22 import java.io.FileNotFoundException; -23 import java.io.IOException; -24 import java.io.UnsupportedEncodingException; -25 import java.net.URLDecoder; -26 -27 /** -28 * A collection of utilities for processing information about files. -29 * -30 * @author Jeremy Long (jeremy.long@owasp.org) -31 */ -32 public final class FileUtils { -33 -34 /** -35 * Private constructor for a utility class. -36 */ -37 private FileUtils() { -38 } -39 -40 /** -41 * Returns the (lowercase) file extension for a specified file. -42 * -43 * @param fileName the file name to retrieve the file extension from. -44 * @return the file extension. +21 import java.io.BufferedInputStream; +22 import java.io.BufferedOutputStream; +23 import java.io.File; +24 import java.io.FileInputStream; +25 import java.io.FileNotFoundException; +26 import java.io.FileOutputStream; +27 import java.io.IOException; +28 import java.io.UnsupportedEncodingException; +29 import java.net.URLDecoder; +30 import java.util.logging.Level; +31 import java.util.logging.Logger; +32 import java.util.zip.ZipEntry; +33 import java.util.zip.ZipInputStream; +34 import org.owasp.dependencycheck.Engine; +35 +36 /** +37 * A collection of utilities for processing information about files. +38 * +39 * @author Jeremy Long (jeremy.long@owasp.org) +40 */ +41 public final class FileUtils { +42 +43 /** +44 * The buffer size to use when extracting files from the archive. 45 */ -46 public static String getFileExtension(String fileName) { -47 String ret = null; -48 final int pos = fileName.lastIndexOf("."); -49 if (pos >= 0) { -50 ret = fileName.substring(pos + 1, fileName.length()).toLowerCase(); -51 } -52 return ret; -53 } -54 -55 /** -56 * Deletes a file. If the File is a directory it will recursively delete the -57 * contents. -58 * -59 * @param file the File to delete -60 * @throws IOException is thrown if the file could not be deleted -61 */ -62 public static void delete(File file) throws IOException { -63 if (file.isDirectory()) { -64 for (File c : file.listFiles()) { -65 delete(c); -66 } -67 } -68 if (!file.delete()) { -69 throw new FileNotFoundException("Failed to delete file: " + file); -70 } -71 } -72 -73 /** -74 * Returns the data directory. If a path was specified in -75 * dependencycheck.properties or was specified using the Settings object, -76 * and the path exists, that path will be returned as a File object. If it -77 * does not exist, then a File object will be created based on the file -78 * location of the JAR containing the specified class. -79 * -80 * @param configuredFilePath the configured relative or absolute path -81 * @param clazz the class whos path will be resolved -82 * @return a File object -83 * @throws IOException is thrown if the path could not be decoded -84 * @deprecated This method should no longer be used. See the implementation -85 * in dependency-check-cli/App.java to see how the data directory should be -86 * set. -87 */ -88 @java.lang.Deprecated -89 public static File getDataDirectory(String configuredFilePath, Class clazz) throws IOException { -90 final File file = new File(configuredFilePath); -91 if (file.isDirectory() && file.canWrite()) { -92 return new File(file.getCanonicalPath()); -93 } else { -94 final File exePath = getPathToJar(clazz); -95 return new File(exePath, configuredFilePath); -96 } -97 } -98 -99 /** -100 * Retrieves the physical path to the parent directory containing the -101 * provided class. For example, if a JAR file contained a class -102 * org.something.clazz this method would return the parent directory of the -103 * JAR file. -104 * -105 * @param clazz the class to determine the parent directory of -106 * @return the parent directory of the file containing the specified class. -107 * @throws UnsupportedEncodingException thrown if UTF-8 is not supported. -108 * @deprecated this should no longer be used. -109 */ -110 @java.lang.Deprecated -111 public static File getPathToJar(Class clazz) throws UnsupportedEncodingException { -112 final String filePath = clazz.getProtectionDomain().getCodeSource().getLocation().getPath(); -113 final String decodedPath = URLDecoder.decode(filePath, "UTF-8"); -114 final File jarPath = new File(decodedPath); -115 return jarPath.getParentFile(); -116 } -117 } +46 private static final int BUFFER_SIZE = 4096; +47 +48 /** +49 * Private constructor for a utility class. +50 */ +51 private FileUtils() { +52 } +53 +54 /** +55 * Returns the (lowercase) file extension for a specified file. +56 * +57 * @param fileName the file name to retrieve the file extension from. +58 * @return the file extension. +59 */ +60 public static String getFileExtension(String fileName) { +61 String ret = null; +62 final int pos = fileName.lastIndexOf("."); +63 if (pos >= 0) { +64 ret = fileName.substring(pos + 1, fileName.length()).toLowerCase(); +65 } +66 return ret; +67 } +68 +69 /** +70 * Deletes a file. If the File is a directory it will recursively delete the +71 * contents. +72 * +73 * @param file the File to delete +74 * @throws IOException is thrown if the file could not be deleted +75 */ +76 public static void delete(File file) throws IOException { +77 if (file.isDirectory()) { +78 for (File c : file.listFiles()) { +79 delete(c); +80 } +81 } +82 if (!org.apache.commons.io.FileUtils.deleteQuietly(file)) { +83 //if (!file.delete()) { +84 throw new FileNotFoundException("Failed to delete file: " + file); +85 } else { +86 file.deleteOnExit(); +87 } +88 } +89 +90 /** +91 * Deletes a file. If the File is a directory it will recursively delete the +92 * contents. +93 * +94 * @param file the File to delete +95 * @param deleteOnExit setting this to true will cause errors to be ignored +96 * and if there is an error deleting the file it will be setup to be deleted +97 * when the JVM exits. +98 * @throws IOException is thrown if the file could not be deleted +99 */ +100 public static void delete(File file, boolean deleteOnExit) throws IOException { +101 if (file.isDirectory()) { +102 for (File c : file.listFiles()) { +103 delete(c); +104 } +105 } +106 if (!org.apache.commons.io.FileUtils.deleteQuietly(file)) { +107 //if (!file.delete()) { +108 if (deleteOnExit) { +109 file.deleteOnExit(); +110 } else { +111 throw new FileNotFoundException("Failed to delete file: " + file); +112 } +113 } +114 } +115 +116 /** +117 * Returns the data directory. If a path was specified in +118 * dependencycheck.properties or was specified using the Settings object, +119 * and the path exists, that path will be returned as a File object. If it +120 * does not exist, then a File object will be created based on the file +121 * location of the JAR containing the specified class. +122 * +123 * @param configuredFilePath the configured relative or absolute path +124 * @param clazz the class whos path will be resolved +125 * @return a File object +126 * @throws IOException is thrown if the path could not be decoded +127 * @deprecated This method should no longer be used. See the implementation +128 * in dependency-check-cli/App.java to see how the data directory should be +129 * set. +130 */ +131 @java.lang.Deprecated +132 public static File getDataDirectory(String configuredFilePath, Class clazz) throws IOException { +133 final File file = new File(configuredFilePath); +134 if (file.isDirectory() && file.canWrite()) { +135 return new File(file.getCanonicalPath()); +136 } else { +137 final File exePath = getPathToJar(clazz); +138 return new File(exePath, configuredFilePath); +139 } +140 } +141 +142 /** +143 * Retrieves the physical path to the parent directory containing the +144 * provided class. For example, if a JAR file contained a class +145 * org.something.clazz this method would return the parent directory of the +146 * JAR file. +147 * +148 * @param clazz the class to determine the parent directory of +149 * @return the parent directory of the file containing the specified class. +150 * @throws UnsupportedEncodingException thrown if UTF-8 is not supported. +151 * @deprecated this should no longer be used. +152 */ +153 @java.lang.Deprecated +154 public static File getPathToJar(Class clazz) throws UnsupportedEncodingException { +155 final String filePath = clazz.getProtectionDomain().getCodeSource().getLocation().getPath(); +156 final String decodedPath = URLDecoder.decode(filePath, "UTF-8"); +157 final File jarPath = new File(decodedPath); +158 return jarPath.getParentFile(); +159 } +160 +161 /** +162 * Extracts the contents of an archive into the specified directory. +163 * +164 * @param archive an archive file such as a WAR or EAR +165 * @param extractTo a directory to extract the contents to +166 * @throws ExtractionException thrown if an exception occurs while +167 * extracting the files +168 */ +169 public static void extractFiles(File archive, File extractTo) throws ExtractionException { +170 extractFiles(archive, extractTo, null); +171 } +172 +173 /** +174 * Extracts the contents of an archive into the specified directory. The +175 * files are only extracted if they are supported by the analyzers loaded +176 * into the specified engine. If the engine is specified as null then all +177 * files are extracted. +178 * +179 * @param archive an archive file such as a WAR or EAR +180 * @param extractTo a directory to extract the contents to +181 * @param engine the scanning engine +182 * @throws ExtractionException thrown if there is an error extracting the +183 * files +184 */ +185 public static void extractFiles(File archive, File extractTo, Engine engine) throws ExtractionException { +186 if (archive == null || extractTo == null) { +187 return; +188 } +189 +190 FileInputStream fis = null; +191 ZipInputStream zis = null; +192 +193 try { +194 fis = new FileInputStream(archive); +195 } catch (FileNotFoundException ex) { +196 Logger.getLogger(FileUtils.class.getName()).log(Level.INFO, null, ex); +197 throw new ExtractionException("Archive file was not found.", ex); +198 } +199 zis = new ZipInputStream(new BufferedInputStream(fis)); +200 ZipEntry entry; +201 try { +202 while ((entry = zis.getNextEntry()) != null) { +203 if (entry.isDirectory()) { +204 final File d = new File(extractTo, entry.getName()); +205 if (!d.exists() && !d.mkdirs()) { +206 final String msg = String.format("Unable to create '%s'.", d.getAbsolutePath()); +207 throw new ExtractionException(msg); +208 } +209 } else { +210 final File file = new File(extractTo, entry.getName()); +211 final String ext = getFileExtension(file.getName()); +212 if (engine == null || engine.supportsExtension(ext)) { +213 BufferedOutputStream bos = null; +214 FileOutputStream fos; +215 try { +216 fos = new FileOutputStream(file); +217 bos = new BufferedOutputStream(fos, BUFFER_SIZE); +218 int count; +219 final byte data[] = new byte[BUFFER_SIZE]; +220 while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) { +221 bos.write(data, 0, count); +222 } +223 bos.flush(); +224 } catch (FileNotFoundException ex) { +225 Logger.getLogger(FileUtils.class.getName()).log(Level.FINE, null, ex); +226 final String msg = String.format("Unable to find file '%s'.", file.getName()); +227 throw new ExtractionException(msg, ex); +228 } catch (IOException ex) { +229 Logger.getLogger(FileUtils.class.getName()).log(Level.FINE, null, ex); +230 final String msg = String.format("IO Exception while parsing file '%s'.", file.getName()); +231 throw new ExtractionException(msg, ex); +232 } finally { +233 if (bos != null) { +234 try { +235 bos.close(); +236 } catch (IOException ex) { +237 Logger.getLogger(FileUtils.class.getName()).log(Level.FINEST, null, ex); +238 } +239 } +240 } +241 } +242 } +243 } +244 } catch (IOException ex) { +245 final String msg = String.format("Exception reading archive '%s'.", archive.getName()); +246 Logger.getLogger(FileUtils.class.getName()).log(Level.FINE, msg, ex); +247 throw new ExtractionException(msg, ex); +248 } finally { +249 try { +250 zis.close(); +251 } catch (IOException ex) { +252 Logger.getLogger(FileUtils.class.getName()).log(Level.FINEST, null, ex); +253 } +254 } +255 } +256 }
      diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/utils/Settings.html b/dependency-check-core/xref/org/owasp/dependencycheck/utils/Settings.html index 6edcd78b2..4c7918026 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/utils/Settings.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/utils/Settings.html @@ -78,351 +78,353 @@ 68 */ 69 public static final String DATA_DIRECTORY = "data.directory"; 70 /** -71 * The properties key for the path where the CPE Lucene Index will be -72 * stored. +71 * The location of the batch update URL. This is a zip file that +72 * contains the contents of the data directory. 73 */ -74 public static final String CPE_DATA_DIRECTORY = "data.cpe"; +74 public static final String BATCH_UPDATE_URL = "batch.update.url"; 75 /** -76 * The properties key for the path where the CVE H2 database will be +76 * The properties key for the path where the CPE Lucene Index will be 77 * stored. 78 */ -79 public static final String CVE_DATA_DIRECTORY = "data.cve"; +79 public static final String CPE_DATA_DIRECTORY = "data.cpe"; 80 /** -81 * The properties key for the URL to the CPE. -82 */ -83 public static final String CPE_URL = "cpe.url"; -84 /** -85 * The properties key for the URL to the CPE. -86 */ -87 public static final String CPE_META_URL = "cpe.meta.url"; -88 /** -89 * The properties key for the URL to retrieve the "meta" data from about -90 * the CVE entries. -91 */ -92 public static final String CVE_META_URL = "cve.url.meta"; -93 /** -94 * The properties key for the URL to retrieve the recently modified and -95 * added CVE entries (last 8 days) using the 2.0 schema. -96 */ -97 public static final String CVE_MODIFIED_20_URL = "cve.url-2.0.modified"; -98 /** -99 * The properties key for the URL to retrieve the recently modified and -100 * added CVE entries (last 8 days) using the 1.2 schema. -101 */ -102 public static final String CVE_MODIFIED_12_URL = "cve.url-1.2.modified"; -103 /** -104 * The properties key for the URL to retrieve the recently modified and -105 * added CVE entries (last 8 days). -106 */ -107 public static final String CVE_MODIFIED_VALID_FOR_DAYS = "cve.url.modified.validfordays"; -108 /** -109 * The properties key for the telling us how many cvr.url.* URLs exists. -110 * This is used in combination with CVE_BASE_URL to be able to retrieve -111 * the URLs for all of the files that make up the NVD CVE listing. -112 */ -113 public static final String CVE_START_YEAR = "cve.startyear"; -114 /** -115 * The properties key for the CVE schema version 1.2. -116 */ -117 public static final String CVE_SCHEMA_1_2 = "cve.url-1.2.base"; -118 /** -119 * The properties key for the CVE schema version 2.0. -120 */ -121 public static final String CVE_SCHEMA_2_0 = "cve.url-2.0.base"; -122 /** -123 * The properties key for the proxy url. -124 */ -125 public static final String PROXY_URL = "proxy.url"; -126 /** -127 * The properties key for the proxy port - this must be an integer -128 * value. -129 */ -130 public static final String PROXY_PORT = "proxy.port"; -131 /** -132 * The properties key for the connection timeout. -133 */ -134 public static final String CONNECTION_TIMEOUT = "connection.timeout"; -135 /** -136 * The location of the temporary directory. -137 */ -138 public static final String TEMP_DIRECTORY = "temp.directory"; -139 } -140 /** -141 * The properties file location. -142 */ -143 private static final String PROPERTIES_FILE = "dependencycheck.properties"; -144 /** -145 * The singleton instance variable. -146 */ -147 private static final Settings INSTANCE = new Settings(); -148 /** -149 * The properties. -150 */ -151 private Properties props = null; -152 -153 /** -154 * Private constructor for the Settings class. This class loads the -155 * properties files. -156 */ -157 private Settings() { -158 InputStream in = null; -159 props = new Properties(); -160 try { -161 in = this.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE); -162 props.load(in); -163 } catch (IOException ex) { -164 Logger.getLogger(Settings.class.getName()).log(Level.SEVERE, "Unable to load default settings."); -165 Logger.getLogger(Settings.class.getName()).log(Level.FINE, null, ex); -166 } finally { -167 if (in != null) { -168 try { -169 in.close(); -170 } catch (IOException ex) { -171 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex); -172 } -173 } -174 } -175 } -176 -177 /** -178 * Sets a property value. -179 * -180 * @param key the key for the property -181 * @param value the value for the property -182 */ -183 public static void setString(String key, String value) { -184 INSTANCE.props.setProperty(key, value); -185 } -186 -187 /** -188 * Sets a property value. -189 * -190 * @param key the key for the property -191 * @param value the value for the property -192 */ -193 public static void setBoolean(String key, boolean value) { -194 if (value) { -195 INSTANCE.props.setProperty(key, Boolean.TRUE.toString()); -196 } else { -197 INSTANCE.props.setProperty(key, Boolean.FALSE.toString()); -198 } -199 } -200 -201 /** -202 * Merges a new properties file into the current properties. This method -203 * allows for the loading of a user provided properties file.<br/><br/> -204 * Note: even if using this method - system properties will be loaded before -205 * properties loaded from files. -206 * -207 * @param filePath the path to the properties file to merge. -208 * @throws FileNotFoundException is thrown when the filePath points to a -209 * non-existent file -210 * @throws IOException is thrown when there is an exception loading/merging -211 * the properties -212 */ -213 public static void mergeProperties(String filePath) throws FileNotFoundException, IOException { -214 final FileInputStream fis = new FileInputStream(filePath); -215 mergeProperties(fis); -216 } -217 -218 /** -219 * Merges a new properties file into the current properties. This method -220 * allows for the loading of a user provided properties file.<br/><br/> -221 * Note: even if using this method - system properties will be loaded before -222 * properties loaded from files. -223 * -224 * @param stream an Input Stream pointing at a properties file to merge -225 * @throws IOException is thrown when there is an exception loading/merging -226 * the properties -227 */ -228 public static void mergeProperties(InputStream stream) throws IOException { -229 INSTANCE.props.load(stream); -230 } -231 -232 /** -233 * Returns a value from the properties file as a File object. If the value -234 * was specified as a system property or passed in via the -Dprop=value -235 * argument - this method will return the value from the system properties -236 * before the values in the contained configuration file. +81 * The properties key for the path where the CVE H2 database will be +82 * stored. +83 */ +84 public static final String CVE_DATA_DIRECTORY = "data.cve"; +85 /** +86 * The properties key for the URL to retrieve the "meta" data from about +87 * the CVE entries. +88 */ +89 public static final String CVE_META_URL = "cve.url.meta"; +90 /** +91 * The properties key for the URL to retrieve the recently modified and +92 * added CVE entries (last 8 days) using the 2.0 schema. +93 */ +94 public static final String CVE_MODIFIED_20_URL = "cve.url-2.0.modified"; +95 /** +96 * The properties key for the URL to retrieve the recently modified and +97 * added CVE entries (last 8 days) using the 1.2 schema. +98 */ +99 public static final String CVE_MODIFIED_12_URL = "cve.url-1.2.modified"; +100 /** +101 * The properties key for the URL to retrieve the recently modified and +102 * added CVE entries (last 8 days). +103 */ +104 public static final String CVE_MODIFIED_VALID_FOR_DAYS = "cve.url.modified.validfordays"; +105 /** +106 * The properties key for the telling us how many cvr.url.* URLs exists. +107 * This is used in combination with CVE_BASE_URL to be able to retrieve +108 * the URLs for all of the files that make up the NVD CVE listing. +109 */ +110 public static final String CVE_START_YEAR = "cve.startyear"; +111 /** +112 * The properties key for the CVE schema version 1.2. +113 */ +114 public static final String CVE_SCHEMA_1_2 = "cve.url-1.2.base"; +115 /** +116 * The properties key for the CVE schema version 2.0. +117 */ +118 public static final String CVE_SCHEMA_2_0 = "cve.url-2.0.base"; +119 /** +120 * The properties key for the proxy url. +121 */ +122 public static final String PROXY_URL = "proxy.url"; +123 /** +124 * The properties key for the proxy port - this must be an integer +125 * value. +126 */ +127 public static final String PROXY_PORT = "proxy.port"; +128 /** +129 * The properties key for the connection timeout. +130 */ +131 public static final String CONNECTION_TIMEOUT = "connection.timeout"; +132 /** +133 * The location of the temporary directory. +134 */ +135 public static final String TEMP_DIRECTORY = "temp.directory"; +136 } +137 /** +138 * The properties file location. +139 */ +140 private static final String PROPERTIES_FILE = "dependencycheck.properties"; +141 /** +142 * The singleton instance variable. +143 */ +144 private static final Settings INSTANCE = new Settings(); +145 /** +146 * The properties. +147 */ +148 private Properties props = null; +149 +150 /** +151 * Private constructor for the Settings class. This class loads the +152 * properties files. +153 */ +154 private Settings() { +155 InputStream in = null; +156 props = new Properties(); +157 try { +158 in = this.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE); +159 props.load(in); +160 } catch (IOException ex) { +161 Logger.getLogger(Settings.class.getName()).log(Level.SEVERE, "Unable to load default settings."); +162 Logger.getLogger(Settings.class.getName()).log(Level.FINE, null, ex); +163 } finally { +164 if (in != null) { +165 try { +166 in.close(); +167 } catch (IOException ex) { +168 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex); +169 } +170 } +171 } +172 } +173 +174 /** +175 * Sets a property value. +176 * +177 * @param key the key for the property +178 * @param value the value for the property +179 */ +180 public static void setString(String key, String value) { +181 INSTANCE.props.setProperty(key, value); +182 } +183 +184 /** +185 * Sets a property value. +186 * +187 * @param key the key for the property +188 * @param value the value for the property +189 */ +190 public static void setBoolean(String key, boolean value) { +191 if (value) { +192 INSTANCE.props.setProperty(key, Boolean.TRUE.toString()); +193 } else { +194 INSTANCE.props.setProperty(key, Boolean.FALSE.toString()); +195 } +196 } +197 +198 /** +199 * Merges a new properties file into the current properties. This method +200 * allows for the loading of a user provided properties file.<br/><br/> +201 * Note: even if using this method - system properties will be loaded before +202 * properties loaded from files. +203 * +204 * @param filePath the path to the properties file to merge. +205 * @throws FileNotFoundException is thrown when the filePath points to a +206 * non-existent file +207 * @throws IOException is thrown when there is an exception loading/merging +208 * the properties +209 */ +210 public static void mergeProperties(String filePath) throws FileNotFoundException, IOException { +211 final FileInputStream fis = new FileInputStream(filePath); +212 mergeProperties(fis); +213 } +214 +215 /** +216 * Merges a new properties file into the current properties. This method +217 * allows for the loading of a user provided properties file.<br/><br/> +218 * Note: even if using this method - system properties will be loaded before +219 * properties loaded from files. +220 * +221 * @param stream an Input Stream pointing at a properties file to merge +222 * @throws IOException is thrown when there is an exception loading/merging +223 * the properties +224 */ +225 public static void mergeProperties(InputStream stream) throws IOException { +226 INSTANCE.props.load(stream); +227 } +228 +229 /** +230 * Returns a value from the properties file as a File object. If the value +231 * was specified as a system property or passed in via the -Dprop=value +232 * argument - this method will return the value from the system properties +233 * before the values in the contained configuration file. +234 * +235 * This method will also replace a leading "[JAR]\" sequence with the path +236 * to the folder containing the JAR file containing this class. 237 * 238 * @param key the key to lookup within the properties file -239 * @param defaultValue the default value for the requested property -240 * @return the property from the properties file as a File object -241 */ -242 public static File getFile(String key, String defaultValue) { +239 * @return the property from the properties file converted to a File object +240 */ +241 public static File getFile(String key) { +242 final String file = getString(key); 243 final String baseDir = getString(Settings.KEYS.DATA_DIRECTORY); -244 final String str = getString(key, defaultValue); -245 if (baseDir != null) { -246 return new File(baseDir, str); -247 } -248 return new File(str); -249 } -250 -251 /** -252 * Returns a value from the properties file as a File object. If the value -253 * was specified as a system property or passed in via the -Dprop=value -254 * argument - this method will return the value from the system properties -255 * before the values in the contained configuration file. -256 * -257 * This method will also replace a leading "[JAR]\" sequence with the path -258 * to the folder containing the JAR file containing this class. -259 * -260 * @param key the key to lookup within the properties file -261 * @return the property from the properties file converted to a File object -262 * @throws IOException thrown if the file path to the JAR cannot be found -263 */ -264 public static File getFile(String key) throws IOException { -265 final String file = getString(key); -266 final String baseDir = getString(Settings.KEYS.DATA_DIRECTORY); -267 if (baseDir != null) { -268 if (baseDir.startsWith("[JAR]/")) { -269 final File jarPath = getJarPath(); -270 final File newBase = new File(jarPath.getCanonicalPath(), baseDir.substring(6)); -271 return new File(newBase, file); -272 } -273 return new File(baseDir, file); +244 if (baseDir != null) { +245 if (baseDir.startsWith("[JAR]/")) { +246 final File jarPath = getJarPath(); +247 final File newBase = new File(jarPath, baseDir.substring(6)); +248 if (Settings.KEYS.DATA_DIRECTORY.equals(key)) { +249 return newBase; +250 } +251 return new File(newBase, file); +252 } +253 if (Settings.KEYS.DATA_DIRECTORY.equals(key)) { +254 return new File(baseDir); +255 } +256 return new File(baseDir, file); +257 } +258 return new File(file); +259 } +260 +261 /** +262 * Attempts to retrieve the folder containing the Jar file containing the +263 * Settings class. +264 * +265 * @return a File object +266 */ +267 private static File getJarPath() { +268 final String jarPath = Settings.class.getProtectionDomain().getCodeSource().getLocation().getPath(); +269 String decodedPath = "."; +270 try { +271 decodedPath = URLDecoder.decode(jarPath, "UTF-8"); +272 } catch (UnsupportedEncodingException ex) { +273 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex); 274 } -275 return new File(file); -276 } -277 -278 /** -279 * Attempts to retrieve the folder containing the Jar file containing the -280 * Settings class. -281 * -282 * @return a File object -283 */ -284 private static File getJarPath() { -285 final String jarPath = Settings.class.getProtectionDomain().getCodeSource().getLocation().getPath(); -286 String decodedPath = "."; -287 try { -288 decodedPath = URLDecoder.decode(jarPath, "UTF-8"); -289 } catch (UnsupportedEncodingException ex) { -290 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, null, ex); -291 } -292 -293 final File path = new File(decodedPath); -294 if (path.getName().toLowerCase().endsWith(".jar")) { -295 return path.getParentFile(); -296 } else { -297 return new File("."); -298 } -299 } -300 -301 /** -302 * Returns a value from the properties file. If the value was specified as a -303 * system property or passed in via the -Dprop=value argument - this method -304 * will return the value from the system properties before the values in the -305 * contained configuration file. -306 * -307 * @param key the key to lookup within the properties file -308 * @param defaultValue the default value for the requested property -309 * @return the property from the properties file -310 */ -311 public static String getString(String key, String defaultValue) { -312 final String str = System.getProperty(key, INSTANCE.props.getProperty(key, defaultValue)); -313 return str; -314 } -315 -316 /** -317 * Returns a value from the properties file. If the value was specified as a -318 * system property or passed in via the -Dprop=value argument - this method -319 * will return the value from the system properties before the values in the -320 * contained configuration file. -321 * -322 * @param key the key to lookup within the properties file -323 * @return the property from the properties file -324 */ -325 public static String getString(String key) { -326 return System.getProperty(key, INSTANCE.props.getProperty(key)); -327 } -328 -329 /** -330 * Returns an int value from the properties file. If the value was specified -331 * as a system property or passed in via the -Dprop=value argument - this -332 * method will return the value from the system properties before the values -333 * in the contained configuration file. -334 * -335 * @param key the key to lookup within the properties file -336 * @return the property from the properties file -337 * @throws InvalidSettingException is thrown if there is an error retrieving -338 * the setting -339 */ -340 public static int getInt(String key) throws InvalidSettingException { -341 int value; -342 try { -343 value = Integer.parseInt(Settings.getString(key)); -344 } catch (NumberFormatException ex) { -345 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex); -346 } -347 return value; -348 } -349 -350 /** -351 * Returns an int value from the properties file. If the value was specified -352 * as a system property or passed in via the -Dprop=value argument - this -353 * method will return the value from the system properties before the values -354 * in the contained configuration file. -355 * -356 * @param key the key to lookup within the properties file -357 * @param defaultValue the default value to return -358 * @return the property from the properties file or the defaultValue if the -359 * property does not exist or cannot be converted to an integer -360 */ -361 public static int getInt(String key, int defaultValue) { -362 int value; -363 try { -364 value = Integer.parseInt(Settings.getString(key)); -365 } catch (NumberFormatException ex) { -366 final String msg = String.format("Could not convert property '%s' to an int.", key); -367 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, msg, ex); -368 value = defaultValue; -369 } -370 return value; -371 } -372 -373 /** -374 * Returns a long value from the properties file. If the value was specified -375 * as a system property or passed in via the -Dprop=value argument - this -376 * method will return the value from the system properties before the values -377 * in the contained configuration file. -378 * -379 * @param key the key to lookup within the properties file -380 * @return the property from the properties file -381 * @throws InvalidSettingException is thrown if there is an error retrieving -382 * the setting -383 */ -384 public static long getLong(String key) throws InvalidSettingException { -385 long value; -386 try { -387 value = Long.parseLong(Settings.getString(key)); -388 } catch (NumberFormatException ex) { -389 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex); -390 } -391 return value; -392 } -393 -394 /** -395 * Returns a boolean value from the properties file. If the value was -396 * specified as a system property or passed in via the -397 * <code>-Dprop=value</code> argument this method will return the value from -398 * the system properties before the values in the contained configuration -399 * file. -400 * -401 * @param key the key to lookup within the properties file -402 * @return the property from the properties file -403 * @throws InvalidSettingException is thrown if there is an error retrieving -404 * the setting -405 */ -406 public static boolean getBoolean(String key) throws InvalidSettingException { -407 boolean value; -408 try { -409 value = Boolean.parseBoolean(Settings.getString(key)); -410 } catch (NumberFormatException ex) { -411 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex); -412 } -413 return value; -414 } -415 } +275 +276 final File path = new File(decodedPath); +277 if (path.getName().toLowerCase().endsWith(".jar")) { +278 return path.getParentFile(); +279 } else { +280 return new File("."); +281 } +282 } +283 +284 /** +285 * Returns a value from the properties file. If the value was specified as a +286 * system property or passed in via the -Dprop=value argument - this method +287 * will return the value from the system properties before the values in the +288 * contained configuration file. +289 * +290 * @param key the key to lookup within the properties file +291 * @param defaultValue the default value for the requested property +292 * @return the property from the properties file +293 */ +294 public static String getString(String key, String defaultValue) { +295 final String str = System.getProperty(key, INSTANCE.props.getProperty(key, defaultValue)); +296 return str; +297 } +298 +299 /** +300 * Returns the temporary directory. +301 * +302 * @return the temporary directory +303 */ +304 public static File getTempDirectory() { +305 return new File(Settings.getString(Settings.KEYS.TEMP_DIRECTORY, System.getProperty("java.io.tmpdir"))); +306 } +307 +308 /** +309 * Returns a value from the properties file. If the value was specified as a +310 * system property or passed in via the -Dprop=value argument - this method +311 * will return the value from the system properties before the values in the +312 * contained configuration file. +313 * +314 * @param key the key to lookup within the properties file +315 * @return the property from the properties file +316 */ +317 public static String getString(String key) { +318 return System.getProperty(key, INSTANCE.props.getProperty(key)); +319 } +320 +321 /** +322 * Removes a property from the local properties collection. This is mainly +323 * used in test cases. +324 * +325 * @param key the property key to remove +326 */ +327 public static void removeProperty(String key) { +328 INSTANCE.props.remove(key); +329 } +330 +331 /** +332 * Returns an int value from the properties file. If the value was specified +333 * as a system property or passed in via the -Dprop=value argument - this +334 * method will return the value from the system properties before the values +335 * in the contained configuration file. +336 * +337 * @param key the key to lookup within the properties file +338 * @return the property from the properties file +339 * @throws InvalidSettingException is thrown if there is an error retrieving +340 * the setting +341 */ +342 public static int getInt(String key) throws InvalidSettingException { +343 int value; +344 try { +345 value = Integer.parseInt(Settings.getString(key)); +346 } catch (NumberFormatException ex) { +347 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex); +348 } +349 return value; +350 } +351 +352 /** +353 * Returns an int value from the properties file. If the value was specified +354 * as a system property or passed in via the -Dprop=value argument - this +355 * method will return the value from the system properties before the values +356 * in the contained configuration file. +357 * +358 * @param key the key to lookup within the properties file +359 * @param defaultValue the default value to return +360 * @return the property from the properties file or the defaultValue if the +361 * property does not exist or cannot be converted to an integer +362 */ +363 public static int getInt(String key, int defaultValue) { +364 int value; +365 try { +366 value = Integer.parseInt(Settings.getString(key)); +367 } catch (NumberFormatException ex) { +368 final String msg = String.format("Could not convert property '%s' to an int.", key); +369 Logger.getLogger(Settings.class.getName()).log(Level.FINEST, msg, ex); +370 value = defaultValue; +371 } +372 return value; +373 } +374 +375 /** +376 * Returns a long value from the properties file. If the value was specified +377 * as a system property or passed in via the -Dprop=value argument - this +378 * method will return the value from the system properties before the values +379 * in the contained configuration file. +380 * +381 * @param key the key to lookup within the properties file +382 * @return the property from the properties file +383 * @throws InvalidSettingException is thrown if there is an error retrieving +384 * the setting +385 */ +386 public static long getLong(String key) throws InvalidSettingException { +387 long value; +388 try { +389 value = Long.parseLong(Settings.getString(key)); +390 } catch (NumberFormatException ex) { +391 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex); +392 } +393 return value; +394 } +395 +396 /** +397 * Returns a boolean value from the properties file. If the value was +398 * specified as a system property or passed in via the +399 * <code>-Dprop=value</code> argument this method will return the value from +400 * the system properties before the values in the contained configuration +401 * file. +402 * +403 * @param key the key to lookup within the properties file +404 * @return the property from the properties file +405 * @throws InvalidSettingException is thrown if there is an error retrieving +406 * the setting +407 */ +408 public static boolean getBoolean(String key) throws InvalidSettingException { +409 boolean value; +410 try { +411 value = Boolean.parseBoolean(Settings.getString(key)); +412 } catch (NumberFormatException ex) { +413 throw new InvalidSettingException("Could not convert property '" + key + "' to an int.", ex); +414 } +415 return value; +416 } +417 }
      diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/utils/UrlStringUtils.html b/dependency-check-core/xref/org/owasp/dependencycheck/utils/UrlStringUtils.html index 333b58321..daba102fa 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/utils/UrlStringUtils.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/utils/UrlStringUtils.html @@ -31,87 +31,94 @@ 21 import java.net.MalformedURLException; 22 import java.net.URL; 23 import java.util.ArrayList; -24 import java.util.List; -25 import java.util.regex.Pattern; -26 -27 /** -28 * -29 * @author Jeremy Long (jeremy.long@owasp.org) -30 */ -31 public final class UrlStringUtils { -32 -33 /** -34 * Private constructor for a utility class. -35 */ -36 private UrlStringUtils() { -37 } -38 /** -39 * A regular expression to test if a string contains a URL. -40 */ -41 private static final Pattern CONTAINS_URL_TEST = Pattern.compile("^.*(ht|f)tps?://.*$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); -42 /** -43 * A regular expression to test if a string is a URL. -44 */ -45 private static final Pattern IS_URL_TEST = Pattern.compile("^(ht|f)tps?://.*", Pattern.CASE_INSENSITIVE); -46 -47 /** -48 * Tests if the text provided contains a URL. This is somewhat limited -49 * search in that it only looks for (ftp|http|https):// -50 * -51 * @param text the text to search -52 * @return true if the text contains a url, otherwise false -53 */ -54 public static boolean containsUrl(String text) { -55 return CONTAINS_URL_TEST.matcher(text).matches(); -56 } -57 -58 /** -59 * Tests if the given text is url. -60 * -61 * @param text the string to test -62 * @return returns true if the text is a url, otherwise false -63 */ -64 public static boolean isUrl(String text) { -65 return IS_URL_TEST.matcher(text).matches(); -66 } -67 -68 /** -69 * <p>Takes a URL, in String format, and adds the important parts of the URL -70 * to a list of strings.</p> -71 * <p>Example, given the following input:</p> -72 * <code>"https://www.somedomain.com/path1/path2/file.php?id=439"</code> -73 * <p>The function would return:</p> -74 * <code>{"somedomain", "path1", "path2", "file"}</code> -75 * -76 * @param text a URL -77 * @return importantParts a list of the important parts of the URL -78 * @throws MalformedURLException thrown if the URL is malformed -79 */ -80 public static List<String> extractImportantUrlData(String text) throws MalformedURLException { -81 final ArrayList<String> importantParts = new ArrayList<String>(); -82 final URL url = new URL(text); -83 final String[] domain = url.getHost().split("\\."); -84 //add the domain except www and the tld. -85 for (int i = 0; i < domain.length - 1; i++) { -86 final String sub = domain[i]; -87 if (!"www".equalsIgnoreCase(sub)) { -88 importantParts.add(sub); -89 } -90 } -91 final String document = url.getPath(); -92 final String[] pathParts = document.split("[\\//]"); -93 for (int i = 0; i < pathParts.length - 2; i++) { -94 if (!pathParts[i].isEmpty()) { -95 importantParts.add(pathParts[i]); +24 import java.util.Arrays; +25 import java.util.HashSet; +26 import java.util.List; +27 import java.util.regex.Pattern; +28 +29 /** +30 * +31 * @author Jeremy Long (jeremy.long@owasp.org) +32 */ +33 public final class UrlStringUtils { +34 +35 /** +36 * Private constructor for a utility class. +37 */ +38 private UrlStringUtils() { +39 } +40 /** +41 * A regular expression to test if a string contains a URL. +42 */ +43 private static final Pattern CONTAINS_URL_TEST = Pattern.compile("^.*(ht|f)tps?://.*$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); +44 /** +45 * A regular expression to test if a string is a URL. +46 */ +47 private static final Pattern IS_URL_TEST = Pattern.compile("^(ht|f)tps?://.*", Pattern.CASE_INSENSITIVE); +48 +49 /** +50 * Tests if the text provided contains a URL. This is somewhat limited +51 * search in that it only looks for (ftp|http|https):// +52 * +53 * @param text the text to search +54 * @return true if the text contains a url, otherwise false +55 */ +56 public static boolean containsUrl(String text) { +57 return CONTAINS_URL_TEST.matcher(text).matches(); +58 } +59 +60 /** +61 * Tests if the given text is url. +62 * +63 * @param text the string to test +64 * @return returns true if the text is a url, otherwise false +65 */ +66 public static boolean isUrl(String text) { +67 return IS_URL_TEST.matcher(text).matches(); +68 } +69 /** +70 * A listing of domain parts that shold not be used as evidence. Yes, this +71 * is an incomplete list. +72 */ +73 private static final HashSet<String> IGNORE_LIST = new HashSet<String>(Arrays.asList("www", "com", "org", "gov", "info", "name", "net", "pro", "tel", "mobi", "xxx")); +74 +75 /** +76 * <p>Takes a URL, in String format, and adds the important parts of the URL +77 * to a list of strings.</p> +78 * <p>Example, given the following input:</p> +79 * <code>"https://www.somedomain.com/path1/path2/file.php?id=439"</code> +80 * <p>The function would return:</p> +81 * <code>{"somedomain", "path1", "path2", "file"}</code> +82 * +83 * @param text a URL +84 * @return importantParts a list of the important parts of the URL +85 * @throws MalformedURLException thrown if the URL is malformed +86 */ +87 public static List<String> extractImportantUrlData(String text) throws MalformedURLException { +88 final ArrayList<String> importantParts = new ArrayList<String>(); +89 final URL url = new URL(text); +90 final String[] domain = url.getHost().split("\\."); +91 //add the domain except www and the tld. +92 for (int i = 0; i < domain.length - 1; i++) { +93 final String sub = domain[i]; +94 if (!IGNORE_LIST.contains(sub.toLowerCase())) { +95 importantParts.add(sub); 96 } 97 } -98 if (pathParts.length > 0 && !pathParts[pathParts.length - 1].isEmpty()) { -99 final String fileNameNoExt = pathParts[pathParts.length - 1].replaceAll("\\..*{0,5}$", ""); -100 importantParts.add(fileNameNoExt); -101 } -102 return importantParts; -103 } -104 } +98 final String document = url.getPath(); +99 final String[] pathParts = document.split("[\\//]"); +100 for (int i = 0; i < pathParts.length - 2; i++) { +101 if (!pathParts[i].isEmpty()) { +102 importantParts.add(pathParts[i]); +103 } +104 } +105 if (pathParts.length > 0 && !pathParts[pathParts.length - 1].isEmpty()) { +106 final String fileNameNoExt = pathParts[pathParts.length - 1].replaceAll("\\..*{0,5}$", ""); +107 importantParts.add(fileNameNoExt); +108 } +109 return importantParts; +110 } +111 }
      diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-frame.html b/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-frame.html index 7b3f12f3e..ad6c74312 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-frame.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.utils + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.utils @@ -29,6 +29,9 @@
    • Downloader +
    • +
    • + ExtractionException
    • FileUtils diff --git a/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-summary.html b/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-summary.html index 068433eae..0e95e239f 100644 --- a/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-summary.html +++ b/dependency-check-core/xref/org/owasp/dependencycheck/utils/package-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference Package org.owasp.dependencycheck.utils + Dependency-Check Core 1.0.2 Reference Package org.owasp.dependencycheck.utils @@ -59,6 +59,11 @@ Downloader + + + + ExtractionException + diff --git a/dependency-check-core/xref/overview-frame.html b/dependency-check-core/xref/overview-frame.html index 254a0f2c8..09fc78dd1 100644 --- a/dependency-check-core/xref/overview-frame.html +++ b/dependency-check-core/xref/overview-frame.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference + Dependency-Check Core 1.0.2 Reference @@ -20,6 +20,9 @@
    • org.owasp.dependencycheck.analyzer +
    • +
    • + org.owasp.dependencycheck.concurrency
    • org.owasp.dependencycheck.data @@ -37,7 +40,7 @@ org.owasp.dependencycheck.data.nvdcve
    • - org.owasp.dependencycheck.data.nvdcve.xml + org.owasp.dependencycheck.data.update
    • org.owasp.dependencycheck.dependency diff --git a/dependency-check-core/xref/overview-summary.html b/dependency-check-core/xref/overview-summary.html index 78dce9dac..8803afe8b 100644 --- a/dependency-check-core/xref/overview-summary.html +++ b/dependency-check-core/xref/overview-summary.html @@ -3,7 +3,7 @@ - dependency-check-core 1.0.1 Reference + Dependency-Check Core 1.0.2 Reference @@ -24,7 +24,7 @@
    -

    dependency-check-core 1.0.1 Reference

    +

    Dependency-Check Core 1.0.2 Reference

    @@ -42,6 +42,11 @@ + + + diff --git a/dependency-check-jenkins/css/apache-maven-fluido-1.3.0.min.css b/dependency-check-jenkins/css/apache-maven-fluido-1.3.0.min.css new file mode 100644 index 000000000..7db41338d --- /dev/null +++ b/dependency-check-jenkins/css/apache-maven-fluido-1.3.0.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.1.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:20px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:1;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1{font-size:36px;line-height:40px}h2{font-size:30px;line-height:40px}h3{font-size:24px;line-height:40px}h4{font-size:18px;line-height:20px}h5{font-size:14px;line-height:20px}h6{font-size:12px;line-height:20px}h1 small{font-size:24px}h2 small{font-size:18px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal dt{float:left;width:120px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:9px;font-size:14px;line-height:20px;color:#555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}input,textarea{width:210px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal;cursor:pointer}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #bbb}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:18px;padding-left:18px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"]{float:left}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning .checkbox:focus,.control-group.warning .radio:focus,.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error .checkbox:focus,.control-group.error .radio:focus,.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success .checkbox:focus,.control-group.success .radio:focus,.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;font-size:14px;vertical-align:top;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn{margin-left:-1px;vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:160px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:160px}.form-horizontal .help-block{margin-top:10px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child,.table-bordered tfoot:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child,.table-bordered tfoot:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-right-topleft:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}table [class*=span],.row-fluid table [class*=span]{display:table-cell;float:none;margin-left:0}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.info td{background-color:#d9edf7}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav>.active>a>[class^="icon-"],.nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#08c;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c;background-color:#0081c2;background-image:linear-gradient(to bottom,#08c,#0077b3);background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover .dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;overflow:visible \9;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 14px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;*line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^="icon-"]{margin-top:2px}.btn-small{padding:3px 9px;font-size:12px;line-height:18px}.btn-small [class^="icon-"]{margin-top:0}.btn-mini{padding:2px 6px;font-size:11px;line-height:16px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#c5c5c5;border-color:rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-image:-moz-linear-gradient(top,#08c,#04c);background-repeat:repeat-x;border-color:#04c #0044cc #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-image:-moz-linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-image:-moz-linear-gradient(top,#444,#222);background-repeat:repeat-x;border-color:#222 #222222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-group{position:relative;*margin-left:.3em;font-size:0;white-space:nowrap}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.btn-toolbar .btn+.btn,.btn-toolbar .btn-group+.btn,.btn-toolbar .btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu{font-size:14px}.btn-group>.btn-mini{font-size:11px}.btn-group>.btn-small{font-size:12px}.btn-group>.btn-large{font-size:16px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-top:0;border-bottom:5px solid #000}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical .btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical .btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical .btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eeeeee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #dddddd #eee #eeeeee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eeeeee #eee #dddddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible;color:#555}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#555;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px}.navbar-link{color:#555}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:6px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;width:100%;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner,.navbar-static-top .navbar-inner{border:0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 -1px 10px rgba(0,0,0,0.1);box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#555;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse{color:#999}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-image:-moz-linear-gradient(top,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb .divider{padding:0 5px;color:#ccc}.breadcrumb .active{color:#999}.pagination{height:40px;margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination li{display:inline}.pagination a,.pagination span{float:left;padding:0 14px;line-height:38px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination a:hover,.pagination .active a,.pagination .active span{background-color:#f5f5f5}.pagination .active a,.pagination .active span{color:#999;cursor:default}.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999;cursor:default;background-color:transparent}.pagination li:first-child a,.pagination li:first-child span{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination li:last-child a,.pagination li:last-child span{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a{float:right}.pager .previous a{float:left}.pager .disabled a,.pager .disabled a:hover{color:#999;cursor:default;background-color:#fff}.modal-open .dropdown-menu{z-index:2050}.modal-open .dropdown.open{*z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2080}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:50%;left:50%;z-index:1050;width:560px;margin:-250px 0 0 -280px;overflow:auto;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:50%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-bottom:10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-right:10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0}.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow:after{z-index:-1;content:""}.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-top-color:#fff;border-width:10px 10px 0}.popover.top .arrow:after{bottom:-1px;left:-11px;border-top-color:rgba(0,0,0,0.25);border-width:11px 11px 0}.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-right-color:#fff;border-width:10px 10px 10px 0}.popover.right .arrow:after{bottom:-11px;left:-1px;border-right-color:rgba(0,0,0,0.25);border-width:11px 11px 11px 0}.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-bottom-color:#fff;border-width:0 10px 10px}.popover.bottom .arrow:after{top:-1px;left:-11px;border-bottom-color:rgba(0,0,0,0.25);border-width:0 11px 11px}.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-left-color:#fff;border-width:10px 0 10px 10px}.popover.left .arrow:after{right:-1px;bottom:-11px;border-left-color:rgba(0,0,0,0.25);border-width:11px 0 11px 11px}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.label,.badge{font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel .item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel .item>img{display:block;line-height:1}.carousel .active,.carousel .next,.carousel .prev{display:block}.carousel .active{left:0}.carousel .next,.carousel .prev{position:absolute;top:0;width:100%}.carousel .next{left:100%}.carousel .prev{left:-100%}.carousel .next.left,.carousel .prev.right{left:0}.carousel .active.left{left:-100%}.carousel .active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit p{font-size:18px;font-weight:200;line-height:30px;color:inherit}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}.clear{clear:both;visibility:hidden}.clear hr{display:none}.section p,.section p,.section dt,.section dt{margin-right:7px;margin-left:7px}#ohloh{margin-bottom:10px}#poweredBy{text-align:center}a.externalLink{background:url('../images/external.png') right center no-repeat;padding-right:18px}a.newWindow{background:url('../images/window-new.png') right center no-repeat;padding-right:18px}a.externalLink[href^=http]{background:url('../images/internet-web-browser.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".asc"]{background:url('../images/accessories-text-editor.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".jpg"],a.externalLink[href$=".jpeg"],a.externalLink[href$=".gif"],a.externalLink[href$=".png"]{background:url('../images/image-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".tar.gz"],a.externalLink[href$=".zip"]{background:url('../images/package-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".md5"],a.externalLink[href$=".sha1"]{background:url('../images/document-properties.png') right center no-repeat;padding-right:18px}a.externalLink[href^=https]{background:url('../images/application-certificate.png') right center no-repeat;padding-right:18px}a.externalLink[href^=file]{background:url('../images/drive-harddisk.png') right center no-repeat;padding-right:18px}a.externalLink[href^=ftp]{background:url('../images/network-server.png') right center no-repeat;padding-right:18px}a.externalLink[href^=mailto]{background:url('../images/contact-new.png') right center no-repeat;padding-right:18px}li.none{list-style:none}.search-query{background-image:url(http://www.google.com/cse/intl/en/images/google_custom_search_watermark.gif);background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#fff;background-position:0 50%;background-repeat:no-repeat no-repeat;width:95%}body.topBarEnabled{padding-top:60px}body.topBarDisabled{padding-top:20px}.builtBy{display:block}img.builtBy{margin:10px auto}#search-form{margin-left:9px;margin-right:9px}.hero-unit h2{font-size:60px}tt{padding:0 3px 2px;font-family:Monaco,Andale Mono,Courier New,monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#fee9cc;color:rgba(0,0,0,0.75);padding:1px 3px}li{color:#404040}table.zebra-striped{background-color:#FFF}.footer{background-color:#EEE}.sidebar-nav{padding-left:0;padding-right:0}.sidebar-nav .icon-chevron-right,.sidebar-nav .icon-chevron-down{margin-top:2px;margin-right:-6px;float:right;opacity:.25}.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0;padding-left:15px}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/dependency-check-jenkins/css/print.css b/dependency-check-jenkins/css/print.css new file mode 100644 index 000000000..1cd02d9b4 --- /dev/null +++ b/dependency-check-jenkins/css/print.css @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* $Id: print.css 1201871 2011-11-14 20:18:24Z simonetripodi $ */ + +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {display: none !important;} +#bodyColumn, body.docs div.docs {margin: 0 !important;border: none !important} diff --git a/dependency-check-jenkins/css/site.css b/dependency-check-jenkins/css/site.css new file mode 100644 index 000000000..055e7e286 --- /dev/null +++ b/dependency-check-jenkins/css/site.css @@ -0,0 +1 @@ +/* You can override this file with your own styles */ \ No newline at end of file diff --git a/dependency-check-jenkins/images/accessories-text-editor.png b/dependency-check-jenkins/images/accessories-text-editor.png new file mode 100644 index 000000000..abc3366ed Binary files /dev/null and b/dependency-check-jenkins/images/accessories-text-editor.png differ diff --git a/dependency-check-jenkins/images/add.gif b/dependency-check-jenkins/images/add.gif new file mode 100644 index 000000000..1cb3dbf93 Binary files /dev/null and b/dependency-check-jenkins/images/add.gif differ diff --git a/dependency-check-jenkins/images/apache-maven-project-2.png b/dependency-check-jenkins/images/apache-maven-project-2.png new file mode 100644 index 000000000..6c096ec0c Binary files /dev/null and b/dependency-check-jenkins/images/apache-maven-project-2.png differ diff --git a/dependency-check-jenkins/images/application-certificate.png b/dependency-check-jenkins/images/application-certificate.png new file mode 100644 index 000000000..cc6aff616 Binary files /dev/null and b/dependency-check-jenkins/images/application-certificate.png differ diff --git a/dependency-check-jenkins/images/contact-new.png b/dependency-check-jenkins/images/contact-new.png new file mode 100644 index 000000000..ebc4316d8 Binary files /dev/null and b/dependency-check-jenkins/images/contact-new.png differ diff --git a/dependency-check-jenkins/images/document-properties.png b/dependency-check-jenkins/images/document-properties.png new file mode 100644 index 000000000..34c2409a7 Binary files /dev/null and b/dependency-check-jenkins/images/document-properties.png differ diff --git a/dependency-check-jenkins/images/drive-harddisk.png b/dependency-check-jenkins/images/drive-harddisk.png new file mode 100644 index 000000000..d7ce475f8 Binary files /dev/null and b/dependency-check-jenkins/images/drive-harddisk.png differ diff --git a/dependency-check-jenkins/images/fix.gif b/dependency-check-jenkins/images/fix.gif new file mode 100644 index 000000000..b7eb3dc44 Binary files /dev/null and b/dependency-check-jenkins/images/fix.gif differ diff --git a/dependency-check-jenkins/images/icon_error_sml.gif b/dependency-check-jenkins/images/icon_error_sml.gif new file mode 100644 index 000000000..12e9a01a9 Binary files /dev/null and b/dependency-check-jenkins/images/icon_error_sml.gif differ diff --git a/dependency-check-jenkins/images/icon_help_sml.gif b/dependency-check-jenkins/images/icon_help_sml.gif new file mode 100644 index 000000000..aaf20e6ee Binary files /dev/null and b/dependency-check-jenkins/images/icon_help_sml.gif differ diff --git a/dependency-check-jenkins/images/icon_info_sml.gif b/dependency-check-jenkins/images/icon_info_sml.gif new file mode 100644 index 000000000..b77632670 Binary files /dev/null and b/dependency-check-jenkins/images/icon_info_sml.gif differ diff --git a/dependency-check-jenkins/images/icon_success_sml.gif b/dependency-check-jenkins/images/icon_success_sml.gif new file mode 100644 index 000000000..0a195279b Binary files /dev/null and b/dependency-check-jenkins/images/icon_success_sml.gif differ diff --git a/dependency-check-jenkins/images/icon_warning_sml.gif b/dependency-check-jenkins/images/icon_warning_sml.gif new file mode 100644 index 000000000..ac6ad6ada Binary files /dev/null and b/dependency-check-jenkins/images/icon_warning_sml.gif differ diff --git a/dependency-check-jenkins/images/image-x-generic.png b/dependency-check-jenkins/images/image-x-generic.png new file mode 100644 index 000000000..ab49efb34 Binary files /dev/null and b/dependency-check-jenkins/images/image-x-generic.png differ diff --git a/dependency-check-jenkins/images/internet-web-browser.png b/dependency-check-jenkins/images/internet-web-browser.png new file mode 100644 index 000000000..307d6aca6 Binary files /dev/null and b/dependency-check-jenkins/images/internet-web-browser.png differ diff --git a/dependency-check-jenkins/images/logos/build-by-maven-black.png b/dependency-check-jenkins/images/logos/build-by-maven-black.png new file mode 100644 index 000000000..919fd0f66 Binary files /dev/null and b/dependency-check-jenkins/images/logos/build-by-maven-black.png differ diff --git a/dependency-check-jenkins/images/logos/build-by-maven-white.png b/dependency-check-jenkins/images/logos/build-by-maven-white.png new file mode 100644 index 000000000..7d44c9c2e Binary files /dev/null and b/dependency-check-jenkins/images/logos/build-by-maven-white.png differ diff --git a/dependency-check-jenkins/images/logos/maven-feather.png b/dependency-check-jenkins/images/logos/maven-feather.png new file mode 100644 index 000000000..b5ada836e Binary files /dev/null and b/dependency-check-jenkins/images/logos/maven-feather.png differ diff --git a/dependency-check-jenkins/images/network-server.png b/dependency-check-jenkins/images/network-server.png new file mode 100644 index 000000000..1d12e1938 Binary files /dev/null and b/dependency-check-jenkins/images/network-server.png differ diff --git a/dependency-check-jenkins/images/package-x-generic.png b/dependency-check-jenkins/images/package-x-generic.png new file mode 100644 index 000000000..8b7e9e67b Binary files /dev/null and b/dependency-check-jenkins/images/package-x-generic.png differ diff --git a/dependency-check-jenkins/images/profiles/pre-release.png b/dependency-check-jenkins/images/profiles/pre-release.png new file mode 100644 index 000000000..d448e850c Binary files /dev/null and b/dependency-check-jenkins/images/profiles/pre-release.png differ diff --git a/dependency-check-jenkins/images/profiles/retired.png b/dependency-check-jenkins/images/profiles/retired.png new file mode 100644 index 000000000..f89f6a29c Binary files /dev/null and b/dependency-check-jenkins/images/profiles/retired.png differ diff --git a/dependency-check-jenkins/images/profiles/sandbox.png b/dependency-check-jenkins/images/profiles/sandbox.png new file mode 100644 index 000000000..f88b36267 Binary files /dev/null and b/dependency-check-jenkins/images/profiles/sandbox.png differ diff --git a/dependency-check-jenkins/images/remove.gif b/dependency-check-jenkins/images/remove.gif new file mode 100644 index 000000000..fc65631ca Binary files /dev/null and b/dependency-check-jenkins/images/remove.gif differ diff --git a/dependency-check-jenkins/images/rss.png b/dependency-check-jenkins/images/rss.png new file mode 100644 index 000000000..a9850ee2c Binary files /dev/null and b/dependency-check-jenkins/images/rss.png differ diff --git a/dependency-check-jenkins/images/update.gif b/dependency-check-jenkins/images/update.gif new file mode 100644 index 000000000..b2a6d0bf6 Binary files /dev/null and b/dependency-check-jenkins/images/update.gif differ diff --git a/dependency-check-jenkins/images/window-new.png b/dependency-check-jenkins/images/window-new.png new file mode 100644 index 000000000..0e12ef954 Binary files /dev/null and b/dependency-check-jenkins/images/window-new.png differ diff --git a/dependency-check-jenkins/img/glyphicons-halflings-white.png b/dependency-check-jenkins/img/glyphicons-halflings-white.png new file mode 100644 index 000000000..3bf6484a2 Binary files /dev/null and b/dependency-check-jenkins/img/glyphicons-halflings-white.png differ diff --git a/dependency-check-jenkins/img/glyphicons-halflings.png b/dependency-check-jenkins/img/glyphicons-halflings.png new file mode 100644 index 000000000..a99699932 Binary files /dev/null and b/dependency-check-jenkins/img/glyphicons-halflings.png differ diff --git a/dependency-check-jenkins/index.html b/dependency-check-jenkins/index.html new file mode 100644 index 000000000..51ce14811 --- /dev/null +++ b/dependency-check-jenkins/index.html @@ -0,0 +1,173 @@ + + + + + + + + + dependency-check-jenkins - + + + + + + + + + + + + + + + + + + + + + Fork me on GitHub + + + + + +
    + + + + + +
    +
    + +
    + + +
    + +

    Dependency-Check Jenkins Plugin

    +

    The Dependency-Check Jenkins Plugin features the ability to perform a dependency analysis build and later view results post build. The plugin is built using analysis-core and features many of the same features that Jenkins static analysis plugins offer, including thresholds, charts and the ability to view vulnerability information should a dependency have one identified.

    +

    The main repository is located at jenkins-cli/dependency-check-jenkins.

    +

    The main site for documentation is located at OWASP Dependency-Check-Jenkins.

    +

    More information can be found on the wiki.

    + +
    +

    Copyright & License

    +

    Dependency-Check Jenkins Plugin is Copyright (c) 2013 Steve Springett. All Rights Reserved.

    +

    Permission to modify and redistribute is granted under the terms of the GPLv3 license. See the LICENSE.txt file for the full license.

    +
    +
    +
    + +
    + +
    +
    +
    Copyright © 2012-2013 + OWASP. + All Rights Reserved. + +
    + + + +
    +
    + + diff --git a/dependency-check-jenkins/js/apache-maven-fluido-1.3.0.min.js b/dependency-check-jenkins/js/apache-maven-fluido-1.3.0.min.js new file mode 100644 index 000000000..677e611ef --- /dev/null +++ b/dependency-check-jenkins/js/apache-maven-fluido-1.3.0.min.js @@ -0,0 +1,21 @@ +/*! + * jQuery JavaScript Library v1.8.0 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: Thu Aug 09 2012 16:24:48 GMT-0400 (Eastern Daylight Time) + */ +(function(a2,aB){var x,af,o=a2.document,aI=a2.location,d=a2.navigator,bg=a2.jQuery,I=a2.$,am=Array.prototype.push,a4=Array.prototype.slice,aK=Array.prototype.indexOf,A=Object.prototype.toString,V=Object.prototype.hasOwnProperty,aN=String.prototype.trim,bG=function(e,bZ){return new bG.fn.init(e,bZ,x)},bx=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,aa=/\S/,aV=/\s+/,D=aa.test("\xA0")?(/^[\s\xA0]+|[\s\xA0]+$/g):/^\s+|\s+$/g,bo=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,a=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,bf=/^[\],:{}\s]*$/,bi=/(?:^|:|,)(?:\s*\[)+/g,bD=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,a0=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,bP=/^-ms-/,aU=/-([\da-z])/gi,N=function(e,bZ){return(bZ+"").toUpperCase()},aF=function(){if(o.addEventListener){o.removeEventListener("DOMContentLoaded",aF,false);bG.ready()}else{if(o.readyState==="complete"){o.detachEvent("onreadystatechange",aF);bG.ready()}}},Z={};bG.fn=bG.prototype={constructor:bG,init:function(e,b2,b1){var b0,b3,bZ,b4;if(!e){return this}if(e.nodeType){this.context=this[0]=e;this.length=1;return this}if(typeof e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){b0=[null,e,null]}else{b0=bo.exec(e)}if(b0&&(b0[1]||!b2)){if(b0[1]){b2=b2 instanceof bG?b2[0]:b2;b4=(b2&&b2.nodeType?b2.ownerDocument||b2:o);e=bG.parseHTML(b0[1],b4,true);if(a.test(b0[1])&&bG.isPlainObject(b2)){this.attr.call(e,b2,true)}return bG.merge(this,e)}else{b3=o.getElementById(b0[2]);if(b3&&b3.parentNode){if(b3.id!==b0[2]){return b1.find(e)}this.length=1;this[0]=b3}this.context=o;this.selector=e;return this}}else{if(!b2||b2.jquery){return(b2||b1).find(e)}else{return this.constructor(b2).find(e)}}}else{if(bG.isFunction(e)){return b1.ready(e)}}if(e.selector!==aB){this.selector=e.selector;this.context=e.context}return bG.makeArray(e,this)},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return a4.call(this)},get:function(e){return e==null?this.toArray():(e<0?this[this.length+e]:this[e])},pushStack:function(bZ,b1,e){var b0=bG.merge(this.constructor(),bZ);b0.prevObject=this;b0.context=this.context;if(b1==="find"){b0.selector=this.selector+(this.selector?" ":"")+e}else{if(b1){b0.selector=this.selector+"."+b1+"("+e+")"}}return b0},each:function(bZ,e){return bG.each(this,bZ,e)},ready:function(e){bG.ready.promise().done(e);return this},eq:function(e){e=+e;return e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(a4.apply(this,arguments),"slice",a4.call(arguments).join(","))},map:function(e){return this.pushStack(bG.map(this,function(b0,bZ){return e.call(b0,bZ,b0)}))},end:function(){return this.prevObject||this.constructor(null)},push:am,sort:[].sort,splice:[].splice};bG.fn.init.prototype=bG.fn;bG.extend=bG.fn.extend=function(){var b7,b0,e,bZ,b4,b5,b3=arguments[0]||{},b2=1,b1=arguments.length,b6=false;if(typeof b3==="boolean"){b6=b3;b3=arguments[1]||{};b2=2}if(typeof b3!=="object"&&!bG.isFunction(b3)){b3={}}if(b1===b2){b3=this;--b2}for(;b20){return}af.resolveWith(o,[bG]);if(bG.fn.trigger){bG(o).trigger("ready").off("ready")}},isFunction:function(e){return bG.type(e)==="function"},isArray:Array.isArray||function(e){return bG.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return !isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):Z[A.call(e)]||"object"},isPlainObject:function(b1){if(!b1||bG.type(b1)!=="object"||b1.nodeType||bG.isWindow(b1)){return false}try{if(b1.constructor&&!V.call(b1,"constructor")&&!V.call(b1.constructor.prototype,"isPrototypeOf")){return false}}catch(b0){return false}var bZ;for(bZ in b1){}return bZ===aB||V.call(b1,bZ)},isEmptyObject:function(bZ){var e;for(e in bZ){return false}return true},error:function(e){throw new Error(e)},parseHTML:function(b1,b0,e){var bZ;if(!b1||typeof b1!=="string"){return null}if(typeof b0==="boolean"){e=b0;b0=0}b0=b0||o;if((bZ=a.exec(b1))){return[b0.createElement(bZ[1])]}bZ=bG.buildFragment([b1],b0,e?null:[]);return bG.merge([],(bZ.cacheable?bG.clone(bZ.fragment):bZ.fragment).childNodes)},parseJSON:function(e){if(!e||typeof e!=="string"){return null}e=bG.trim(e);if(a2.JSON&&a2.JSON.parse){return a2.JSON.parse(e)}if(bf.test(e.replace(bD,"@").replace(a0,"]").replace(bi,""))){return(new Function("return "+e))()}bG.error("Invalid JSON: "+e)},parseXML:function(b1){var bZ,b0;if(!b1||typeof b1!=="string"){return null}try{if(a2.DOMParser){b0=new DOMParser();bZ=b0.parseFromString(b1,"text/xml")}else{bZ=new ActiveXObject("Microsoft.XMLDOM");bZ.async="false";bZ.loadXML(b1)}}catch(b2){bZ=aB}if(!bZ||!bZ.documentElement||bZ.getElementsByTagName("parsererror").length){bG.error("Invalid XML: "+b1)}return bZ},noop:function(){},globalEval:function(e){if(e&&aa.test(e)){(a2.execScript||function(bZ){a2["eval"].call(a2,bZ)})(e)}},camelCase:function(e){return e.replace(bP,"ms-").replace(aU,N)},nodeName:function(bZ,e){return bZ.nodeName&&bZ.nodeName.toUpperCase()===e.toUpperCase()},each:function(b3,b4,b0){var bZ,b1=0,b2=b3.length,e=b2===aB||bG.isFunction(b3);if(b0){if(e){for(bZ in b3){if(b4.apply(b3[bZ],b0)===false){break}}}else{for(;b10&&e[0]&&e[bZ-1])||bZ===0||bG.isArray(e));if(b1){for(;b0-1){b5.splice(ca,1);if(b2){if(ca<=b3){b3--}if(ca<=b4){b4--}}}})}return this},has:function(b9){return bG.inArray(b9,b5)>-1},empty:function(){b5=[];return this},disable:function(){b5=b6=b1=aB;return this},disabled:function(){return !b5},lock:function(){b6=aB;if(!b1){b7.disable()}return this},locked:function(){return !b6},fireWith:function(ca,b9){b9=b9||[];b9=[ca,b9.slice?b9.slice():b9];if(b5&&(!e||b6)){if(b2){b6.push(b9)}else{bZ(b9)}}return this},fire:function(){b7.fireWith(this,arguments);return this},fired:function(){return !!e}};return b7};bG.extend({Deferred:function(b0){var bZ=[["resolve","done",bG.Callbacks("once memory"),"resolved"],["reject","fail",bG.Callbacks("once memory"),"rejected"],["notify","progress",bG.Callbacks("memory")]],b1="pending",b2={state:function(){return b1},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var b3=arguments;return bG.Deferred(function(b4){bG.each(bZ,function(b6,b5){var b8=b5[0],b7=b3[b6];e[b5[1]](bG.isFunction(b7)?function(){var b9=b7.apply(this,arguments);if(b9&&bG.isFunction(b9.promise)){b9.promise().done(b4.resolve).fail(b4.reject).progress(b4.notify)}else{b4[b8+"With"](this===e?b4:this,[b9])}}:b4[b8])});b3=null}).promise()},promise:function(b3){return typeof b3==="object"?bG.extend(b3,b2):b2}},e={};b2.pipe=b2.then;bG.each(bZ,function(b4,b3){var b6=b3[2],b5=b3[3];b2[b3[1]]=b6.add;if(b5){b6.add(function(){b1=b5},bZ[b4^1][2].disable,bZ[2][2].lock)}e[b3[0]]=b6.fire;e[b3[0]+"With"]=b6.fireWith});b2.promise(e);if(b0){b0.call(e,e)}return e},when:function(b2){var b0=0,b4=a4.call(arguments),e=b4.length,bZ=e!==1||(b2&&bG.isFunction(b2.promise))?e:0,b7=bZ===1?b2:bG.Deferred(),b1=function(b9,ca,b8){return function(cb){ca[b9]=this;b8[b9]=arguments.length>1?a4.call(arguments):cb;if(b8===b6){b7.notifyWith(ca,b8)}else{if(!(--bZ)){b7.resolveWith(ca,b8)}}}},b6,b3,b5;if(e>1){b6=new Array(e);b3=new Array(e);b5=new Array(e);for(;b0
    org.owasp.dependencycheck.analyzer
    + org.owasp.dependencycheck.concurrency +
    @@ -70,7 +75,7 @@
    - org.owasp.dependencycheck.data.nvdcve.xml + org.owasp.dependencycheck.data.update
    a";ca=b0.getElementsByTagName("*");b8=b0.getElementsByTagName("a")[0];b8.style.cssText="top:1px;float:left;opacity:.5";if(!ca||!ca.length||!b8){return{}}b9=o.createElement("select");b2=b9.appendChild(o.createElement("option"));b7=b0.getElementsByTagName("input")[0];cb={leadingWhitespace:(b0.firstChild.nodeType===3),tbody:!b0.getElementsByTagName("tbody").length,htmlSerialize:!!b0.getElementsByTagName("link").length,style:/top/.test(b8.getAttribute("style")),hrefNormalized:(b8.getAttribute("href")==="/a"),opacity:/^0.5/.test(b8.style.opacity),cssFloat:!!b8.style.cssFloat,checkOn:(b7.value==="on"),optSelected:b2.selected,getSetAttribute:b0.className!=="t",enctype:!!o.createElement("form").enctype,html5Clone:o.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",boxModel:(o.compatMode==="CSS1Compat"),submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};b7.checked=true;cb.noCloneChecked=b7.cloneNode(true).checked;b9.disabled=true;cb.optDisabled=!b2.disabled;try{delete b0.test}catch(b5){cb.deleteExpando=false}if(!b0.addEventListener&&b0.attachEvent&&b0.fireEvent){b0.attachEvent("onclick",bZ=function(){cb.noCloneEvent=false});b0.cloneNode(true).fireEvent("onclick");b0.detachEvent("onclick",bZ)}b7=o.createElement("input");b7.value="t";b7.setAttribute("type","radio");cb.radioValue=b7.value==="t";b7.setAttribute("checked","checked");b7.setAttribute("name","t");b0.appendChild(b7);b6=o.createDocumentFragment();b6.appendChild(b0.lastChild);cb.checkClone=b6.cloneNode(true).cloneNode(true).lastChild.checked;cb.appendChecked=b7.checked;b6.removeChild(b7);b6.appendChild(b0);if(b0.attachEvent){for(b3 in {submit:true,change:true,focusin:true}){b4="on"+b3;b1=(b4 in b0);if(!b1){b0.setAttribute(b4,"return;");b1=(typeof b0[b4]==="function")}cb[b3+"Bubbles"]=b1}}bG(function(){var cc,cg,ce,cf,cd="padding:0;margin:0;border:0;display:block;overflow:hidden;",e=o.getElementsByTagName("body")[0];if(!e){return}cc=o.createElement("div");cc.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";e.insertBefore(cc,e.firstChild);cg=o.createElement("div");cc.appendChild(cg);cg.innerHTML="
    t
    ";ce=cg.getElementsByTagName("td");ce[0].style.cssText="padding:0;margin:0;border:0;display:none";b1=(ce[0].offsetHeight===0);ce[0].style.display="";ce[1].style.display="none";cb.reliableHiddenOffsets=b1&&(ce[0].offsetHeight===0);cg.innerHTML="";cg.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";cb.boxSizing=(cg.offsetWidth===4);cb.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==1);if(a2.getComputedStyle){cb.pixelPosition=(a2.getComputedStyle(cg,null)||{}).top!=="1%";cb.boxSizingReliable=(a2.getComputedStyle(cg,null)||{width:"4px"}).width==="4px";cf=o.createElement("div");cf.style.cssText=cg.style.cssText=cd;cf.style.marginRight=cf.style.width="0";cg.style.width="1px";cg.appendChild(cf);cb.reliableMarginRight=!parseFloat((a2.getComputedStyle(cf,null)||{}).marginRight)}if(typeof cg.style.zoom!=="undefined"){cg.innerHTML="";cg.style.cssText=cd+"width:1px;padding:1px;display:inline;zoom:1";cb.inlineBlockNeedsLayout=(cg.offsetWidth===3);cg.style.display="block";cg.style.overflow="visible";cg.innerHTML="
    ";cg.firstChild.style.width="5px";cb.shrinkWrapBlocks=(cg.offsetWidth!==3);cc.style.zoom=1}e.removeChild(cc);cc=cg=ce=cf=null});b6.removeChild(b0);ca=b8=b9=b2=b7=b6=b0=null;return cb})();var bt=/^(?:\{.*\}|\[.*\])$/,aL=/([A-Z])/g;bG.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(bG.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?bG.cache[e[bG.expando]]:e[bG.expando];return !!e&&!O(e)},data:function(b1,bZ,b3,b2){if(!bG.acceptData(b1)){return}var b4,b6,b7=bG.expando,b5=typeof bZ==="string",b8=b1.nodeType,e=b8?bG.cache:b1,b0=b8?b1[b7]:b1[b7]&&b7;if((!b0||!e[b0]||(!b2&&!e[b0].data))&&b5&&b3===aB){return}if(!b0){if(b8){b1[b7]=b0=bG.deletedIds.pop()||++bG.uuid}else{b0=b7}}if(!e[b0]){e[b0]={};if(!b8){e[b0].toJSON=bG.noop}}if(typeof bZ==="object"||typeof bZ==="function"){if(b2){e[b0]=bG.extend(e[b0],bZ)}else{e[b0].data=bG.extend(e[b0].data,bZ)}}b4=e[b0];if(!b2){if(!b4.data){b4.data={}}b4=b4.data}if(b3!==aB){b4[bG.camelCase(bZ)]=b3}if(b5){b6=b4[bZ];if(b6==null){b6=b4[bG.camelCase(bZ)]}}else{b6=b4}return b6},removeData:function(b1,bZ,b2){if(!bG.acceptData(b1)){return}var b5,b4,b3,b6=b1.nodeType,e=b6?bG.cache:b1,b0=b6?b1[bG.expando]:bG.expando;if(!e[b0]){return}if(bZ){b5=b2?e[b0]:e[b0].data;if(b5){if(!bG.isArray(bZ)){if(bZ in b5){bZ=[bZ]}else{bZ=bG.camelCase(bZ);if(bZ in b5){bZ=[bZ]}else{bZ=bZ.split(" ")}}}for(b4=0,b3=bZ.length;b41,null,false)},removeData:function(e){return this.each(function(){bG.removeData(this,e)})}});function bv(b1,b0,b2){if(b2===aB&&b1.nodeType===1){var bZ="data-"+b0.replace(aL,"-$1").toLowerCase();b2=b1.getAttribute(bZ);if(typeof b2==="string"){try{b2=b2==="true"?true:b2==="false"?false:b2==="null"?null:+b2+""===b2?+b2:bt.test(b2)?bG.parseJSON(b2):b2}catch(b3){}bG.data(b1,b0,b2)}else{b2=aB}}return b2}function O(bZ){var e;for(e in bZ){if(e==="data"&&bG.isEmptyObject(bZ[e])){continue}if(e!=="toJSON"){return false}}return true}bG.extend({queue:function(b0,bZ,b1){var e;if(b0){bZ=(bZ||"fx")+"queue";e=bG._data(b0,bZ);if(b1){if(!e||bG.isArray(b1)){e=bG._data(b0,bZ,bG.makeArray(b1))}else{e.push(b1)}}return e||[]}},dequeue:function(b3,b2){b2=b2||"fx";var bZ=bG.queue(b3,b2),b1=bZ.shift(),e=bG._queueHooks(b3,b2),b0=function(){bG.dequeue(b3,b2)};if(b1==="inprogress"){b1=bZ.shift()}if(b1){if(b2==="fx"){bZ.unshift("inprogress")}delete e.stop;b1.call(b3,b0,e)}if(!bZ.length&&e){e.empty.fire()}},_queueHooks:function(b0,bZ){var e=bZ+"queueHooks";return bG._data(b0,e)||bG._data(b0,e,{empty:bG.Callbacks("once memory").add(function(){bG.removeData(b0,bZ+"queue",true);bG.removeData(b0,e,true)})})}});bG.fn.extend({queue:function(e,bZ){var b0=2;if(typeof e!=="string"){bZ=e;e="fx";b0--}if(arguments.length1)},removeAttr:function(e){return this.each(function(){bG.removeAttr(this,e)})},prop:function(e,bZ){return bG.access(this,bG.prop,e,bZ,arguments.length>1)},removeProp:function(e){e=bG.propFix[e]||e;return this.each(function(){try{this[e]=aB;delete this[e]}catch(bZ){}})},addClass:function(b2){var b4,b0,bZ,b1,b3,b5,e;if(bG.isFunction(b2)){return this.each(function(b6){bG(this).addClass(b2.call(this,b6,this.className))})}if(b2&&typeof b2==="string"){b4=b2.split(aV);for(b0=0,bZ=this.length;b0-1){b2=b2.replace(" "+b1[b5]+" "," ")}}b3.className=b4?bG.trim(b2):""}}}return this},toggleClass:function(b1,bZ){var b0=typeof b1,e=typeof bZ==="boolean";if(bG.isFunction(b1)){return this.each(function(b2){bG(this).toggleClass(b1.call(this,b2,this.className,bZ),bZ)})}return this.each(function(){if(b0==="string"){var b4,b3=0,b2=bG(this),b5=bZ,b6=b1.split(aV);while((b4=b6[b3++])){b5=e?b5:!b2.hasClass(b4);b2[b5?"addClass":"removeClass"](b4)}}else{if(b0==="undefined"||b0==="boolean"){if(this.className){bG._data(this,"__className__",this.className)}this.className=this.className||b1===false?"":bG._data(this,"__className__")||""}}})},hasClass:function(e){var b1=" "+e+" ",b0=0,bZ=this.length;for(;b0-1){return true}}return false},val:function(b1){var e,bZ,b2,b0=this[0];if(!arguments.length){if(b0){e=bG.valHooks[b0.type]||bG.valHooks[b0.nodeName.toLowerCase()];if(e&&"get" in e&&(bZ=e.get(b0,"value"))!==aB){return bZ}bZ=b0.value;return typeof bZ==="string"?bZ.replace(ai,""):bZ==null?"":bZ}return}b2=bG.isFunction(b1);return this.each(function(b4){var b5,b3=bG(this);if(this.nodeType!==1){return}if(b2){b5=b1.call(this,b4,b3.val())}else{b5=b1}if(b5==null){b5=""}else{if(typeof b5==="number"){b5+=""}else{if(bG.isArray(b5)){b5=bG.map(b5,function(b6){return b6==null?"":b6+""})}}}e=bG.valHooks[this.type]||bG.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,b5,"value")===aB){this.value=b5}})}});bG.extend({valHooks:{option:{get:function(e){var bZ=e.attributes.value;return !bZ||bZ.specified?e.value:e.text}},select:{get:function(e){var b4,bZ,b3,b1,b2=e.selectedIndex,b5=[],b6=e.options,b0=e.type==="select-one";if(b2<0){return null}bZ=b0?b2:0;b3=b0?b2+1:b6.length;for(;bZ=0});if(!e.length){bZ.selectedIndex=-1}return e}}},attrFn:{},attr:function(b4,b1,b5,b3){var b0,e,b2,bZ=b4.nodeType;if(!b4||bZ===3||bZ===8||bZ===2){return}if(b3&&bG.isFunction(bG.fn[b1])){return bG(b4)[b1](b5)}if(typeof b4.getAttribute==="undefined"){return bG.prop(b4,b1,b5)}b2=bZ!==1||!bG.isXMLDoc(b4);if(b2){b1=b1.toLowerCase();e=bG.attrHooks[b1]||(M.test(b1)?bV:a7)}if(b5!==aB){if(b5===null){bG.removeAttr(b4,b1);return}else{if(e&&"set" in e&&b2&&(b0=e.set(b4,b5,b1))!==aB){return b0}else{b4.setAttribute(b1,""+b5);return b5}}}else{if(e&&"get" in e&&b2&&(b0=e.get(b4,b1))!==null){return b0}else{b0=b4.getAttribute(b1);return b0===null?aB:b0}}},removeAttr:function(b1,b3){var b2,b4,bZ,e,b0=0;if(b3&&b1.nodeType===1){b4=b3.split(aV);for(;b0=0)}}})});var bE=/^(?:textarea|input|select)$/i,br=/^([^\.]*|)(?:\.(.+)|)$/,ba=/(?:^|\s)hover(\.\S+|)\b/,a3=/^key/,bK=/^(?:mouse|contextmenu)|click/,by=/^(?:focusinfocus|focusoutblur)$/,aq=function(e){return bG.event.special.hover?e:e.replace(ba,"mouseenter$1 mouseleave$1")};bG.event={add:function(b1,b5,cc,b3,b2){var b6,b4,cd,cb,ca,b8,e,b9,bZ,b0,b7;if(b1.nodeType===3||b1.nodeType===8||!b5||!cc||!(b6=bG._data(b1))){return}if(cc.handler){bZ=cc;cc=bZ.handler;b2=bZ.selector}if(!cc.guid){cc.guid=bG.guid++}cd=b6.events;if(!cd){b6.events=cd={}}b4=b6.handle;if(!b4){b6.handle=b4=function(ce){return typeof bG!=="undefined"&&(!ce||bG.event.triggered!==ce.type)?bG.event.dispatch.apply(b4.elem,arguments):aB};b4.elem=b1}b5=bG.trim(aq(b5)).split(" ");for(cb=0;cb=0){ca=ca.slice(0,-1);b1=true}if(ca.indexOf(".")>=0){b0=ca.split(".");ca=b0.shift();b0.sort()}if((!b4||bG.event.customEvent[ca])&&!bG.event.global[ca]){return}bZ=typeof bZ==="object"?bZ[bG.expando]?bZ:new bG.Event(ca,bZ):new bG.Event(ca);bZ.type=ca;bZ.isTrigger=true;bZ.exclusive=b1;bZ.namespace=b0.join(".");bZ.namespace_re=bZ.namespace?new RegExp("(^|\\.)"+b0.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b2=ca.indexOf(":")<0?"on"+ca:"";if(!b4){e=bG.cache;for(b7 in e){if(e[b7].events&&e[b7].events[ca]){bG.event.trigger(bZ,b6,e[b7].handle.elem,true)}}return}bZ.result=aB;if(!bZ.target){bZ.target=b4}b6=b6!=null?bG.makeArray(b6):[];b6.unshift(bZ);b9=bG.event.special[ca]||{};if(b9.trigger&&b9.trigger.apply(b4,b6)===false){return}b5=[[b4,b9.bindType||ca]];if(!cd&&!b9.noBubble&&!bG.isWindow(b4)){cc=b9.delegateType||ca;cb=by.test(cc+ca)?b4:b4.parentNode;for(b3=b4;cb;cb=cb.parentNode){b5.push([cb,cc]);b3=cb}if(b3===(b4.ownerDocument||o)){b5.push([b3.defaultView||b3.parentWindow||a2,cc])}}for(b7=0;b7b6){bZ.push({elem:this,matches:b7.slice(b6)})}for(cd=0;cd0?this.on(e,null,b1,b0):this.trigger(e)};if(a3.test(e)){bG.event.fixHooks[e]=bG.event.keyHooks}if(bK.test(e)){bG.event.fixHooks[e]=bG.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function(cO,cg){var cT,co,cf,b2,b8,b6=cO.document,b9=b6.documentElement,cw="undefined",ca=false,b7=true,ce=0,cj=[].slice,cS=[].push,cW=("sizcache"+Math.random()).replace(".",""),cz="[\\x20\\t\\r\\n\\f]",ci="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",ch=ci.replace("w","w#"),c1="([*^$|!~]?=)",cL="\\["+cz+"*("+ci+")"+cz+"*(?:"+c1+cz+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+ch+")|)|)"+cz+"*\\]",c2=":("+ci+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",cB=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",cd=cz+"*([\\x20\\t\\r\\n\\f>+~])"+cz+"*",cc="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+cL+"|"+c2.replace(2,7)+"|[^\\\\(),])+",cU=new RegExp("^"+cz+"+|((?:^|[^\\\\])(?:\\\\.)*)"+cz+"+$","g"),cF=new RegExp("^"+cd),ct=new RegExp(cc+"?(?="+cz+"*,|$)","g"),cJ=new RegExp("^(?:(?!,)(?:(?:^|,)"+cz+"*"+cc+")*?|"+cz+"*(.*?))(\\)|$)"),cZ=new RegExp(cc.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+cd,"g"),cK=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,cP=/[\x20\t\r\n\f]*[+~]/,cX=/:not\($/,cp=/h\d/i,cM=/input|select|textarea|button/i,cs=/\\(?!\\)/g,cE={ID:new RegExp("^#("+ci+")"),CLASS:new RegExp("^\\.("+ci+")"),NAME:new RegExp("^\\[name=['\"]?("+ci+")['\"]?\\]"),TAG:new RegExp("^("+ci.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+cL),PSEUDO:new RegExp("^"+c2),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+cz+"*(even|odd|(([+-]|)(\\d*)n|)"+cz+"*(?:([+-]|)"+cz+"*(\\d+)|))"+cz+"*\\)|)","i"),POS:new RegExp(cB,"ig"),needsContext:new RegExp("^"+cz+"*[>+~]|"+cB,"i")},cR={},cq=[],cl={},cu=[],cY=function(e){e.sizzleFilter=true;return e},b3=function(e){return function(c3){return c3.nodeName.toLowerCase()==="input"&&c3.type===e}},cr=function(e){return function(c4){var c3=c4.nodeName.toLowerCase();return(c3==="input"||c3==="button")&&c4.type===e}},cH=function(c3){var c4=false,c6=b6.createElement("div");try{c4=c3(c6)}catch(c5){}c6=null;return c4},cn=cH(function(c3){c3.innerHTML="";var e=typeof c3.lastChild.getAttribute("multiple");return e!=="boolean"&&e!=="string"}),b0=cH(function(c3){c3.id=cW+0;c3.innerHTML="
    ";b9.insertBefore(c3,b9.firstChild);var e=b6.getElementsByName&&b6.getElementsByName(cW).length===2+b6.getElementsByName(cW+0).length;b8=!b6.getElementById(cW);b9.removeChild(c3);return e}),b5=cH(function(e){e.appendChild(b6.createComment(""));return e.getElementsByTagName("*").length===0}),cD=cH(function(e){e.innerHTML="";return e.firstChild&&typeof e.firstChild.getAttribute!==cw&&e.firstChild.getAttribute("href")==="#"}),cC=cH(function(e){e.innerHTML="";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return false}e.lastChild.className="e";return e.getElementsByClassName("e").length!==1});var cN=function(c5,e,c7,da){c7=c7||[];e=e||b6;var c8,c3,c9,c4,c6=e.nodeType;if(c6!==1&&c6!==9){return[]}if(!c5||typeof c5!=="string"){return c7}c9=ck(e);if(!c9&&!da){if((c8=cK.exec(c5))){if((c4=c8[1])){if(c6===9){c3=e.getElementById(c4);if(c3&&c3.parentNode){if(c3.id===c4){c7.push(c3);return c7}}else{return c7}}else{if(e.ownerDocument&&(c3=e.ownerDocument.getElementById(c4))&&cA(e,c3)&&c3.id===c4){c7.push(c3);return c7}}}else{if(c8[2]){cS.apply(c7,cj.call(e.getElementsByTagName(c5),0));return c7}else{if((c4=c8[3])&&cC&&e.getElementsByClassName){cS.apply(c7,cj.call(e.getElementsByClassName(c4),0));return c7}}}}}return cV(c5,e,c7,da,c9)};var cG=cN.selectors={cacheLength:50,match:cE,order:["ID","TAG"],attrHandle:{},createPseudo:cY,find:{ID:b8?function(c5,c4,c3){if(typeof c4.getElementById!==cw&&!c3){var e=c4.getElementById(c5);return e&&e.parentNode?[e]:[]}}:function(c5,c4,c3){if(typeof c4.getElementById!==cw&&!c3){var e=c4.getElementById(c5);return e?e.id===c5||typeof e.getAttributeNode!==cw&&e.getAttributeNode("id").value===c5?[e]:cg:[]}},TAG:b5?function(e,c3){if(typeof c3.getElementsByTagName!==cw){return c3.getElementsByTagName(e)}}:function(e,c6){var c5=c6.getElementsByTagName(e);if(e==="*"){var c7,c4=[],c3=0;for(;(c7=c5[c3]);c3++){if(c7.nodeType===1){c4.push(c7)}}return c4}return c5}},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){e[1]=e[1].replace(cs,"");e[3]=(e[4]||e[5]||"").replace(cs,"");if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},CHILD:function(e){e[1]=e[1].toLowerCase();if(e[1]==="nth"){if(!e[2]){cN.error(e[0])}e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd"));e[4]=+((e[6]+e[7])||e[2]==="odd")}else{if(e[2]){cN.error(e[0])}}return e},PSEUDO:function(e){var c3,c4=e[4];if(cE.CHILD.test(e[0])){return null}if(c4&&(c3=cJ.exec(c4))&&c3.pop()){e[0]=e[0].slice(0,c3[0].length-c4.length-1);c4=c3[0].slice(0,-1)}e.splice(2,3,c4||e[3]);return e}},filter:{ID:b8?function(e){e=e.replace(cs,"");return function(c3){return c3.getAttribute("id")===e}}:function(e){e=e.replace(cs,"");return function(c4){var c3=typeof c4.getAttributeNode!==cw&&c4.getAttributeNode("id");return c3&&c3.value===e}},TAG:function(e){if(e==="*"){return function(){return true}}e=e.replace(cs,"").toLowerCase();return function(c3){return c3.nodeName&&c3.nodeName.toLowerCase()===e}},CLASS:function(e){var c3=cR[e];if(!c3){c3=cR[e]=new RegExp("(^|"+cz+")"+e+"("+cz+"|$)");cq.push(e);if(cq.length>cG.cacheLength){delete cR[cq.shift()]}}return function(c4){return c3.test(c4.className||(typeof c4.getAttribute!==cw&&c4.getAttribute("class"))||"")}},ATTR:function(c4,c3,e){if(!c3){return function(c5){return cN.attr(c5,c4)!=null}}return function(c6){var c5=cN.attr(c6,c4),c7=c5+"";if(c5==null){return c3==="!="}switch(c3){case"=":return c7===e;case"!=":return c7!==e;case"^=":return e&&c7.indexOf(e)===0;case"*=":return e&&c7.indexOf(e)>-1;case"$=":return e&&c7.substr(c7.length-e.length)===e;case"~=":return(" "+c7+" ").indexOf(e)>-1;case"|=":return c7===e||c7.substr(0,e.length+1)===e+"-"}}},CHILD:function(c3,c5,c6,c4){if(c3==="nth"){var e=ce++;return function(da){var c7,db,c9=0,c8=da;if(c6===1&&c4===0){return true}c7=da.parentNode;if(c7&&(c7[cW]!==e||!da.sizset)){for(c8=c7.firstChild;c8;c8=c8.nextSibling){if(c8.nodeType===1){c8.sizset=++c9;if(c8===da){break}}}c7[cW]=e}db=da.sizset-c4;if(c6===0){return db===0}else{return(db%c6===0&&db/c6>=0)}}}return function(c8){var c7=c8;switch(c3){case"only":case"first":while((c7=c7.previousSibling)){if(c7.nodeType===1){return false}}if(c3==="first"){return true}c7=c8;case"last":while((c7=c7.nextSibling)){if(c7.nodeType===1){return false}}return true}}},PSEUDO:function(c6,c5,c3,e){var c4=cG.pseudos[c6]||cG.pseudos[c6.toLowerCase()];if(!c4){cN.error("unsupported pseudo: "+c6)}if(!c4.sizzleFilter){return c4}return c4(c5,c3,e)}},pseudos:{not:cY(function(e,c4,c3){var c5=cb(e.replace(cU,"$1"),c4,c3);return function(c6){return !c5(c6)}}),enabled:function(e){return e.disabled===false},disabled:function(e){return e.disabled===true},checked:function(e){var c3=e.nodeName.toLowerCase();return(c3==="input"&&!!e.checked)||(c3==="option"&&!!e.selected)},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !cG.pseudos.empty(e)},empty:function(c3){var e;c3=c3.firstChild;while(c3){if(c3.nodeName>"@"||(e=c3.nodeType)===3||e===4){return false}c3=c3.nextSibling}return true},contains:cY(function(e){return function(c3){return(c3.textContent||c3.innerText||bZ(c3)).indexOf(e)>-1}}),has:cY(function(e){return function(c3){return cN(e,c3).length>0}}),header:function(e){return cp.test(e.nodeName)},text:function(c4){var c3,e;return c4.nodeName.toLowerCase()==="input"&&(c3=c4.type)==="text"&&((e=c4.getAttribute("type"))==null||e.toLowerCase()===c3)},radio:b3("radio"),checkbox:b3("checkbox"),file:b3("file"),password:b3("password"),image:b3("image"),submit:cr("submit"),reset:cr("reset"),button:function(c3){var e=c3.nodeName.toLowerCase();return e==="input"&&c3.type==="button"||e==="button"},input:function(e){return cM.test(e.nodeName)},focus:function(e){var c3=e.ownerDocument;return e===c3.activeElement&&(!c3.hasFocus||c3.hasFocus())&&!!(e.type||e.href)},active:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(c4,c3,e){return e?c4.slice(1):[c4[0]]},last:function(c5,c4,c3){var e=c5.pop();return c3?c5:[e]},even:function(c7,c6,c5){var c4=[],c3=c5?1:0,e=c7.length;for(;c30?c6(c5,c8,c7):[]}function cQ(dc,e,da,c4,dg){var c7,c3,c6,di,c9,dh,db,df,dd=0,de=dg.length,c5=cE.POS,c8=new RegExp("^"+c5.source+"(?!"+cz+")","i"),dj=function(){var dl=1,dk=arguments.length-2;for(;dlc6){db=dc.slice(c6,c7.index);c6=df;dh=[e];if(cF.test(db)){if(c9){dh=c9}c9=c4}if((c3=cX.test(db))){db=db.slice(0,-5).replace(cF,"$&*")}if(c7.length>1){c7[0].replace(c8,dj)}c9=cI(db,c7[1],c7[2],dh,c9,c3)}}if(c9){di=di.concat(c9);if((db=dc.slice(c6))&&db!==")"){if(cF.test(db)){cm(db,di,da,c4)}else{cN(db,e,da,c4?c4.concat(c9):c9)}}else{cS.apply(da,di)}}else{cN(dc,e,da,c4)}}return de===1?da:cN.uniqueSort(da)}function b1(c8,c4,db){var dd,dc,de,c6=[],c9=0,da=cJ.exec(c8),c3=!da.pop()&&!da.pop(),df=c3&&c8.match(ct)||[""],e=cG.preFilter,c5=cG.filter,c7=!db&&c4!==b6;for(;(dc=df[c9])!=null&&c3;c9++){c6.push(dd=[]);if(c7){dc=" "+dc}while(dc){c3=false;if((da=cF.exec(dc))){dc=dc.slice(da[0].length);c3=dd.push({part:da.pop().replace(cU," "),captures:da})}for(de in c5){if((da=cE[de].exec(dc))&&(!e[de]||(da=e[de](da,c4,db)))){dc=dc.slice(da.shift().length);c3=dd.push({part:de,captures:da})}}if(!c3){break}}}if(!c3){cN.error(c8)}return c6}function cx(c6,c5,c4){var e=c5.dir,c3=ce++;if(!c6){c6=function(c7){return c7===c4}}return c5.first?function(c8,c7){while((c8=c8[e])){if(c8.nodeType===1){return c6(c8,c7)&&c8}}}:function(c9,c8){var c7,da=c3+"."+co,db=da+"."+cT;while((c9=c9[e])){if(c9.nodeType===1){if((c7=c9[cW])===db){return c9.sizset}else{if(typeof c7==="string"&&c7.indexOf(da)===0){if(c9.sizset){return c9}}else{c9[cW]=db;if(c6(c9,c8)){c9.sizset=true;return c9}c9.sizset=false}}}}}}function cv(e,c3){return e?function(c6,c5){var c4=c3(c6,c5);return c4&&e(c4===true?c6:c4,c5)}:c3}function cy(c7,c5,e){var c4,c6,c3=0;for(;(c4=c7[c3]);c3++){if(cG.relative[c4.part]){c6=cx(c6,cG.relative[c4.part],c5)}else{c4.captures.push(c5,e);c6=cv(c6,cG.filter[c4.part].apply(null,c4.captures))}}return c6}function b4(e){return function(c5,c4){var c6,c3=0;for(;(c6=e[c3]);c3++){if(c6(c5,c4)){return true}}return false}}var cb=cN.compile=function(e,c5,c3){var c8,c7,c4,c6=cl[e];if(c6&&c6.context===c5){return c6}c7=b1(e,c5,c3);for(c4=0;(c8=c7[c4]);c4++){c7[c4]=cy(c8,c5,c3)}c6=cl[e]=b4(c7);c6.context=c5;c6.runs=c6.dirruns=0;cu.push(e);if(cu.length>cG.cacheLength){delete cl[cu.shift()]}return c6};cN.matches=function(c3,e){return cN(c3,null,null,e)};cN.matchesSelector=function(e,c3){return cN(c3,null,null,[e]).length>0};var cV=function(c6,c3,c8,dc,db){c6=c6.replace(cU,"$1");var e,dd,c9,de,c4,c5,dg,dh,c7,da=c6.match(ct),df=c6.match(cZ),di=c3.nodeType;if(cE.POS.test(c6)){return cQ(c6,c3,c8,dc,da)}if(dc){e=cj.call(dc,0)}else{if(da&&da.length===1){if(df.length>1&&di===9&&!db&&(da=cE.ID.exec(df[0]))){c3=cG.find.ID(da[1],c3,db)[0];if(!c3){return c8}c6=c6.slice(df.shift().length)}dh=((da=cP.exec(df[0]))&&!da.index&&c3.parentNode)||c3;c7=df.pop();c5=c7.split(":not")[0];for(c9=0,de=cG.order.length;c9";if(!c9.querySelectorAll("[selected]").length){c3.push("\\["+cz+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)")}if(!c9.querySelectorAll(":checked").length){c3.push(":checked")}});cH(function(c9){c9.innerHTML="

    ";if(c9.querySelectorAll("[test^='']").length){c3.push("[*^$]="+cz+"*(?:\"\"|'')")}c9.innerHTML="";if(!c9.querySelectorAll(":enabled").length){c3.push(":enabled",":disabled")}});c3=c3.length&&new RegExp(c3.join("|"));cV=function(de,da,df,dh,dg){if(!dh&&!dg&&(!c3||!c3.test(de))){if(da.nodeType===9){try{cS.apply(df,cj.call(da.querySelectorAll(de),0));return df}catch(dd){}}else{if(da.nodeType===1&&da.nodeName.toLowerCase()!=="object"){var dc=da.getAttribute("id"),c9=dc||cW,db=cP.test(de)&&da.parentNode||da;if(dc){c9=c9.replace(c6,"\\$&")}else{da.setAttribute("id",c9)}try{cS.apply(df,cj.call(db.querySelectorAll(de.replace(ct,"[id='"+c9+"'] $&")),0));return df}catch(dd){}finally{if(!dc){da.removeAttribute("id")}}}}}return c8(de,da,df,dh,dg)};if(c5){cH(function(da){c7=c5.call(da,"div");try{c5.call(da,"[test!='']:sizzle");e.push(cG.match.PSEUDO)}catch(c9){}});e=new RegExp(e.join("|"));cN.matchesSelector=function(da,dc){dc=dc.replace(c4,"='$1']");if(!ck(da)&&!e.test(dc)&&(!c3||!c3.test(dc))){try{var c9=c5.call(da,dc);if(c9||c7||da.document&&da.document.nodeType!==11){return c9}}catch(db){}}return cN(dc,null,null,[da]).length>0}}})()}cN.attr=bG.attr;bG.find=cN;bG.expr=cN.selectors;bG.expr[":"]=bG.expr.pseudos;bG.unique=cN.uniqueSort;bG.text=cN.getText;bG.isXMLDoc=cN.isXML;bG.contains=cN.contains})(a2);var ag=/Until$/,bq=/^(?:parents|prev(?:Until|All))/,al=/^.[^:#\[\.,]*$/,z=bG.expr.match.needsContext,bu={children:true,contents:true,next:true,prev:true};bG.fn.extend({find:function(e){var b2,bZ,b4,b5,b3,b1,b0=this;if(typeof e!=="string"){return bG(e).filter(function(){for(b2=0,bZ=b0.length;b20){for(b5=b4;b5=0:bG.filter(e,this).length>0:this.filter(e).length>0)},closest:function(b2,b1){var b3,b0=0,e=this.length,bZ=[],b4=z.test(b2)||typeof b2!=="string"?bG(b2,b1||this.context):0;for(;b0-1:bG.find.matchesSelector(b3,b2)){bZ.push(b3);break}b3=b3.parentNode}}bZ=bZ.length>1?bG.unique(bZ):bZ;return this.pushStack(bZ,"closest",b2)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return bG.inArray(this[0],bG(e))}return bG.inArray(e.jquery?e[0]:e,this)},add:function(e,bZ){var b1=typeof e==="string"?bG(e,bZ):bG.makeArray(e&&e.nodeType?[e]:e),b0=bG.merge(this.get(),b1);return this.pushStack(aR(b1[0])||aR(b0[0])?b0:bG.unique(b0))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});bG.fn.andSelf=bG.fn.addBack;function aR(e){return !e||!e.parentNode||e.parentNode.nodeType===11}function aY(bZ,e){do{bZ=bZ[e]}while(bZ&&bZ.nodeType!==1);return bZ}bG.each({parent:function(bZ){var e=bZ.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return bG.dir(e,"parentNode")},parentsUntil:function(bZ,e,b0){return bG.dir(bZ,"parentNode",b0)},next:function(e){return aY(e,"nextSibling")},prev:function(e){return aY(e,"previousSibling")},nextAll:function(e){return bG.dir(e,"nextSibling")},prevAll:function(e){return bG.dir(e,"previousSibling")},nextUntil:function(bZ,e,b0){return bG.dir(bZ,"nextSibling",b0)},prevUntil:function(bZ,e,b0){return bG.dir(bZ,"previousSibling",b0)},siblings:function(e){return bG.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return bG.sibling(e.firstChild)},contents:function(e){return bG.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:bG.merge([],e.childNodes)}},function(e,bZ){bG.fn[e]=function(b2,b0){var b1=bG.map(this,bZ,b2);if(!ag.test(e)){b0=b2}if(b0&&typeof b0==="string"){b1=bG.filter(b0,b1)}b1=this.length>1&&!bu[e]?bG.unique(b1):b1;if(this.length>1&&bq.test(e)){b1=b1.reverse()}return this.pushStack(b1,e,a4.call(arguments).join(","))}});bG.extend({filter:function(b0,e,bZ){if(bZ){b0=":not("+b0+")"}return e.length===1?bG.find.matchesSelector(e[0],b0)?[e[0]]:[]:bG.find.matches(b0,e)},dir:function(b0,bZ,b2){var e=[],b1=b0[bZ];while(b1&&b1.nodeType!==9&&(b2===aB||b1.nodeType!==1||!bG(b1).is(b2))){if(b1.nodeType===1){e.push(b1)}b1=b1[bZ]}return e},sibling:function(b0,bZ){var e=[];for(;b0;b0=b0.nextSibling){if(b0.nodeType===1&&b0!==bZ){e.push(b0)}}return e}});function aM(b1,b0,e){b0=b0||0;if(bG.isFunction(b0)){return bG.grep(b1,function(b3,b2){var b4=!!b0.call(b3,b2,b3);return b4===e})}else{if(b0.nodeType){return bG.grep(b1,function(b3,b2){return(b3===b0)===e})}else{if(typeof b0==="string"){var bZ=bG.grep(b1,function(b2){return b2.nodeType===1});if(al.test(b0)){return bG.filter(b0,bZ,!e)}else{b0=bG.filter(b0,bZ)}}}}return bG.grep(b1,function(b3,b2){return(bG.inArray(b3,b0)>=0)===e})}function B(e){var b0=c.split("|"),bZ=e.createDocumentFragment();if(bZ.createElement){while(b0.length){bZ.createElement(b0.pop())}}return bZ}var c="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",av=/ jQuery\d+="(?:null|\d+)"/g,bY=/^\s+/,ay=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,p=/<([\w:]+)/,bT=/]","i"),aE=/^(?:checkbox|radio)$/,bR=/checked\s*(?:[^=]|=\s*.checked.)/i,bw=/\/(java|ecma)script/i,aH=/^\s*\s*$/g,T={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},aQ=B(o),l=aQ.appendChild(o.createElement("div"));T.optgroup=T.option;T.tbody=T.tfoot=T.colgroup=T.caption=T.thead;T.th=T.td;if(!bG.support.htmlSerialize){T._default=[1,"X
    ","
    "]}bG.fn.extend({text:function(e){return bG.access(this,function(bZ){return bZ===aB?bG.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(bZ))},null,e,arguments.length)},wrapAll:function(e){if(bG.isFunction(e)){return this.each(function(b0){bG(this).wrapAll(e.call(this,b0))})}if(this[0]){var bZ=bG(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bZ.insertBefore(this[0])}bZ.map(function(){var b0=this;while(b0.firstChild&&b0.firstChild.nodeType===1){b0=b0.firstChild}return b0}).append(this)}return this},wrapInner:function(e){if(bG.isFunction(e)){return this.each(function(bZ){bG(this).wrapInner(e.call(this,bZ))})}return this.each(function(){var bZ=bG(this),b0=bZ.contents();if(b0.length){b0.wrapAll(e)}else{bZ.append(e)}})},wrap:function(e){var bZ=bG.isFunction(e);return this.each(function(b0){bG(this).wrapAll(bZ?e.call(this,b0):e)})},unwrap:function(){return this.parent().each(function(){if(!bG.nodeName(this,"body")){bG(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11){this.insertBefore(e,this.firstChild)}})},before:function(){if(!aR(this[0])){return this.domManip(arguments,false,function(bZ){this.parentNode.insertBefore(bZ,this)})}if(arguments.length){var e=bG.clean(arguments);return this.pushStack(bG.merge(e,this),"before",this.selector)}},after:function(){if(!aR(this[0])){return this.domManip(arguments,false,function(bZ){this.parentNode.insertBefore(bZ,this.nextSibling)})}if(arguments.length){var e=bG.clean(arguments);return this.pushStack(bG.merge(this,e),"after",this.selector)}},remove:function(e,b1){var b0,bZ=0;for(;(b0=this[bZ])!=null;bZ++){if(!e||bG.filter(e,[b0]).length){if(!b1&&b0.nodeType===1){bG.cleanData(b0.getElementsByTagName("*"));bG.cleanData([b0])}if(b0.parentNode){b0.parentNode.removeChild(b0)}}}return this},empty:function(){var bZ,e=0;for(;(bZ=this[e])!=null;e++){if(bZ.nodeType===1){bG.cleanData(bZ.getElementsByTagName("*"))}while(bZ.firstChild){bZ.removeChild(bZ.firstChild)}}return this},clone:function(bZ,e){bZ=bZ==null?false:bZ;e=e==null?bZ:e;return this.map(function(){return bG.clone(this,bZ,e)})},html:function(e){return bG.access(this,function(b2){var b1=this[0]||{},b0=0,bZ=this.length;if(b2===aB){return b1.nodeType===1?b1.innerHTML.replace(av,""):aB}if(typeof b2==="string"&&!aj.test(b2)&&(bG.support.htmlSerialize||!K.test(b2))&&(bG.support.leadingWhitespace||!bY.test(b2))&&!T[(p.exec(b2)||["",""])[1].toLowerCase()]){b2=b2.replace(ay,"<$1>");try{for(;b01&&typeof b5==="string"&&bR.test(b5)){return this.each(function(){bG(this).domManip(b4,b8,b7)})}if(bG.isFunction(b5)){return this.each(function(ca){var b9=bG(this);b4[0]=b5.call(this,ca,b8?b9.html():aB);b9.domManip(b4,b8,b7)})}if(this[0]){b0=bG.buildFragment(b4,this,bZ);b3=b0.fragment;b2=b3.firstChild;if(b3.childNodes.length===1){b3=b2}if(b2){b8=b8&&bG.nodeName(b2,"tr");for(b6=b0.cacheable||e-1;b10?this.clone(true):this).get();bG(b6[b4])[bZ](b2);b3=b3.concat(b2)}return this.pushStack(b3,e,b6.selector)}}});function m(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function bS(e){if(aE.test(e.type)){e.defaultChecked=e.checked}}bG.extend({clone:function(b2,b4,b0){var e,bZ,b1,b3;if(bG.support.html5Clone||bG.isXMLDoc(b2)||!K.test("<"+b2.nodeName+">")){b3=b2.cloneNode(true)}else{l.innerHTML=b2.outerHTML;l.removeChild(b3=l.firstChild)}if((!bG.support.noCloneEvent||!bG.support.noCloneChecked)&&(b2.nodeType===1||b2.nodeType===11)&&!bG.isXMLDoc(b2)){G(b2,b3);e=m(b2);bZ=m(b3);for(b1=0;e[b1];++b1){if(bZ[b1]){G(e[b1],bZ[b1])}}}if(b4){ao(b2,b3);if(b0){e=m(b2);bZ=m(b3);for(b1=0;e[b1];++b1){ao(e[b1],bZ[b1])}}}e=bZ=null;return b3},clean:function(cb,b0,e,b1){var b7,b3,ca,cf,b4,ce,b5,b2,bZ,b9,cd,b6,b8=0,cc=[];if(!b0||typeof b0.createDocumentFragment==="undefined"){b0=o}for(b3=b0===o&&aQ;(ca=cb[b8])!=null;b8++){if(typeof ca==="number"){ca+=""}if(!ca){continue}if(typeof ca==="string"){if(!J.test(ca)){ca=b0.createTextNode(ca)}else{b3=b3||B(b0);b5=b5||b3.appendChild(b0.createElement("div"));ca=ca.replace(ay,"<$1>");cf=(p.exec(ca)||["",""])[1].toLowerCase();b4=T[cf]||T._default;ce=b4[0];b5.innerHTML=b4[1]+ca+b4[2];while(ce--){b5=b5.lastChild}if(!bG.support.tbody){b2=bT.test(ca);bZ=cf==="table"&&!b2?b5.firstChild&&b5.firstChild.childNodes:b4[1]===""&&!b2?b5.childNodes:[];for(b7=bZ.length-1;b7>=0;--b7){if(bG.nodeName(bZ[b7],"tbody")&&!bZ[b7].childNodes.length){bZ[b7].parentNode.removeChild(bZ[b7])}}}if(!bG.support.leadingWhitespace&&bY.test(ca)){b5.insertBefore(b0.createTextNode(bY.exec(ca)[0]),b5.firstChild)}ca=b5.childNodes;b5=b3.lastChild}}if(ca.nodeType){cc.push(ca)}else{cc=bG.merge(cc,ca)}}if(b5){b3.removeChild(b5);ca=b5=b3=null}if(!bG.support.appendChecked){for(b8=0;(ca=cc[b8])!=null;b8++){if(bG.nodeName(ca,"input")){bS(ca)}else{if(typeof ca.getElementsByTagName!=="undefined"){bG.grep(ca.getElementsByTagName("input"),bS)}}}}if(e){cd=function(cg){if(!cg.type||bw.test(cg.type)){return b1?b1.push(cg.parentNode?cg.parentNode.removeChild(cg):cg):e.appendChild(cg)}};for(b8=0;(ca=cc[b8])!=null;b8++){if(!(bG.nodeName(ca,"script")&&cd(ca))){e.appendChild(ca);if(typeof ca.getElementsByTagName!=="undefined"){b6=bG.grep(bG.merge([],ca.getElementsByTagName("script")),cd);cc.splice.apply(cc,[b8+1,0].concat(b6));b8+=b6.length}}}}return cc},cleanData:function(bZ,b7){var b2,b0,b1,b6,b3=0,b8=bG.expando,e=bG.cache,b4=bG.support.deleteExpando,b5=bG.event.special;for(;(b1=bZ[b3])!=null;b3++){if(b7||bG.acceptData(b1)){b0=b1[b8];b2=b0&&e[b0];if(b2){if(b2.events){for(b6 in b2.events){if(b5[b6]){bG.event.remove(b1,b6)}else{bG.removeEvent(b1,b6,b2.handle)}}}if(e[b0]){delete e[b0];if(b4){delete b1[b8]}else{if(b1.removeAttribute){b1.removeAttribute(b8)}else{b1[b8]=null}}bG.deletedIds.push(b0)}}}}}});(function(){var e,bZ;bG.uaMatch=function(b1){b1=b1.toLowerCase();var b0=/(chrome)[ \/]([\w.]+)/.exec(b1)||/(webkit)[ \/]([\w.]+)/.exec(b1)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(b1)||/(msie) ([\w.]+)/.exec(b1)||b1.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}};e=bG.uaMatch(d.userAgent);bZ={};if(e.browser){bZ[e.browser]=true;bZ.version=e.version}if(bZ.webkit){bZ.safari=true}bG.browser=bZ;bG.sub=function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bG.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bG&&!(b4 instanceof b0)){b4=b0(b4)}return bG.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(o);return b0}})();var F,az,aW,be=/alpha\([^)]*\)/i,aS=/opacity=([^)]*)/,bk=/^(top|right|bottom|left)$/,aZ=/^margin/,a8=new RegExp("^("+bx+")(.*)$","i"),W=new RegExp("^("+bx+")(?!px)[a-z%]+$","i"),S=new RegExp("^([-+])=("+bx+")","i"),bh={},a9={position:"absolute",visibility:"hidden",display:"block"},bA={letterSpacing:0,fontWeight:400,lineHeight:1},bQ=["Top","Right","Bottom","Left"],ar=["Webkit","O","Moz","ms"],aJ=bG.fn.toggle;function b(b1,bZ){if(bZ in b1){return bZ}var b2=bZ.charAt(0).toUpperCase()+bZ.slice(1),e=bZ,b0=ar.length;while(b0--){bZ=ar[b0]+b2;if(bZ in b1){return bZ}}return e}function Q(bZ,e){bZ=e||bZ;return bG.css(bZ,"display")==="none"||!bG.contains(bZ.ownerDocument,bZ)}function t(b3,e){var b2,b4,bZ=[],b0=0,b1=b3.length;for(;b01)},show:function(){return t(this,true)},hide:function(){return t(this)},toggle:function(b0,bZ){var e=typeof b0==="boolean";if(bG.isFunction(b0)&&bG.isFunction(bZ)){return aJ.apply(this,arguments)}return this.each(function(){if(e?b0:Q(this)){bG(this).show()}else{bG(this).hide()}})}});bG.extend({cssHooks:{opacity:{get:function(b0,bZ){if(bZ){var e=F(b0,"opacity");return e===""?"1":e}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":bG.support.cssFloat?"cssFloat":"styleFloat"},style:function(b1,b0,b7,b2){if(!b1||b1.nodeType===3||b1.nodeType===8||!b1.style){return}var b5,b6,b8,b3=bG.camelCase(b0),bZ=b1.style;b0=bG.cssProps[b3]||(bG.cssProps[b3]=b(bZ,b3));b8=bG.cssHooks[b0]||bG.cssHooks[b3];if(b7!==aB){b6=typeof b7;if(b6==="string"&&(b5=S.exec(b7))){b7=(b5[1]+1)*b5[2]+parseFloat(bG.css(b1,b0));b6="number"}if(b7==null||b6==="number"&&isNaN(b7)){return}if(b6==="number"&&!bG.cssNumber[b3]){b7+="px"}if(!b8||!("set" in b8)||(b7=b8.set(b1,b7,b2))!==aB){try{bZ[b0]=b7}catch(b4){}}}else{if(b8&&"get" in b8&&(b5=b8.get(b1,false,b2))!==aB){return b5}return bZ[b0]}},css:function(b4,b2,b3,bZ){var b5,b1,e,b0=bG.camelCase(b2);b2=bG.cssProps[b0]||(bG.cssProps[b0]=b(b4.style,b0));e=bG.cssHooks[b2]||bG.cssHooks[b0];if(e&&"get" in e){b5=e.get(b4,true,bZ)}if(b5===aB){b5=F(b4,b2)}if(b5==="normal"&&b2 in bA){b5=bA[b2]}if(b3||bZ!==aB){b1=parseFloat(b5);return b3||bG.isNumeric(b1)?b1||0:b5}return b5},swap:function(b2,b1,b3){var b0,bZ,e={};for(bZ in b1){e[bZ]=b2.style[bZ];b2.style[bZ]=b1[bZ]}b0=b3.call(b2);for(bZ in b1){b2.style[bZ]=e[bZ]}return b0}});if(a2.getComputedStyle){F=function(b5,bZ){var e,b2,b1,b4,b3=getComputedStyle(b5,null),b0=b5.style;if(b3){e=b3[bZ];if(e===""&&!bG.contains(b5.ownerDocument.documentElement,b5)){e=bG.style(b5,bZ)}if(W.test(e)&&aZ.test(bZ)){b2=b0.width;b1=b0.minWidth;b4=b0.maxWidth;b0.minWidth=b0.maxWidth=b0.width=e;e=b3.width;b0.width=b2;b0.minWidth=b1;b0.maxWidth=b4}}return e}}else{if(o.documentElement.currentStyle){F=function(b2,b0){var b3,e,bZ=b2.currentStyle&&b2.currentStyle[b0],b1=b2.style;if(bZ==null&&b1&&b1[b0]){bZ=b1[b0]}if(W.test(bZ)&&!bk.test(b0)){b3=b1.left;e=b2.runtimeStyle&&b2.runtimeStyle.left;if(e){b2.runtimeStyle.left=b2.currentStyle.left}b1.left=b0==="fontSize"?"1em":bZ;bZ=b1.pixelLeft+"px";b1.left=b3;if(e){b2.runtimeStyle.left=e}}return bZ===""?"auto":bZ}}}function aG(e,b0,b1){var bZ=a8.exec(b0);return bZ?Math.max(0,bZ[1]-(b1||0))+(bZ[2]||"px"):b0}function at(b1,bZ,e,b3){var b0=e===(b3?"border":"content")?4:bZ==="width"?1:0,b2=0;for(;b0<4;b0+=2){if(e==="margin"){b2+=bG.css(b1,e+bQ[b0],true)}if(b3){if(e==="content"){b2-=parseFloat(F(b1,"padding"+bQ[b0]))||0}if(e!=="margin"){b2-=parseFloat(F(b1,"border"+bQ[b0]+"Width"))||0}}else{b2+=parseFloat(F(b1,"padding"+bQ[b0]))||0;if(e!=="padding"){b2+=parseFloat(F(b1,"border"+bQ[b0]+"Width"))||0}}}return b2}function v(b1,bZ,e){var b2=bZ==="width"?b1.offsetWidth:b1.offsetHeight,b0=true,b3=bG.support.boxSizing&&bG.css(b1,"boxSizing")==="border-box";if(b2<=0){b2=F(b1,bZ);if(b2<0||b2==null){b2=b1.style[bZ]}if(W.test(b2)){return b2}b0=b3&&(bG.support.boxSizingReliable||b2===b1.style[bZ]);b2=parseFloat(b2)||0}return(b2+at(b1,bZ,e||(b3?"border":"content"),b0))+"px"}function bC(b0){if(bh[b0]){return bh[b0]}var e=bG("<"+b0+">").appendTo(o.body),bZ=e.css("display");e.remove();if(bZ==="none"||bZ===""){az=o.body.appendChild(az||bG.extend(o.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!aW||!az.createElement){aW=(az.contentWindow||az.contentDocument).document;aW.write("");aW.close()}e=aW.body.appendChild(aW.createElement(b0));bZ=F(e,"display");o.body.removeChild(az)}bh[b0]=bZ;return bZ}bG.each(["height","width"],function(bZ,e){bG.cssHooks[e]={get:function(b2,b1,b0){if(b1){if(b2.offsetWidth!==0||F(b2,"display")!=="none"){return v(b2,e,b0)}else{return bG.swap(b2,a9,function(){return v(b2,e,b0)})}}},set:function(b1,b2,b0){return aG(b1,b2,b0?at(b1,e,b0,bG.support.boxSizing&&bG.css(b1,"boxSizing")==="border-box"):0)}}});if(!bG.support.opacity){bG.cssHooks.opacity={get:function(bZ,e){return aS.test((e&&bZ.currentStyle?bZ.currentStyle.filter:bZ.style.filter)||"")?(0.01*parseFloat(RegExp.$1))+"":e?"1":""},set:function(b2,b3){var b1=b2.style,bZ=b2.currentStyle,e=bG.isNumeric(b3)?"alpha(opacity="+b3*100+")":"",b0=bZ&&bZ.filter||b1.filter||"";b1.zoom=1;if(b3>=1&&bG.trim(b0.replace(be,""))===""&&b1.removeAttribute){b1.removeAttribute("filter");if(bZ&&!bZ.filter){return}}b1.filter=be.test(b0)?b0.replace(be,e):b0+" "+e}}}bG(function(){if(!bG.support.reliableMarginRight){bG.cssHooks.marginRight={get:function(bZ,e){return bG.swap(bZ,{display:"inline-block"},function(){if(e){return F(bZ,"marginRight")}})}}}if(!bG.support.pixelPosition&&bG.fn.position){bG.each(["top","left"],function(e,bZ){bG.cssHooks[bZ]={get:function(b2,b1){if(b1){var b0=F(b2,bZ);return W.test(b0)?bG(b2).position()[bZ]+"px":b0}}}})}});if(bG.expr&&bG.expr.filters){bG.expr.filters.hidden=function(e){return(e.offsetWidth===0&&e.offsetHeight===0)||(!bG.support.reliableHiddenOffsets&&((e.style&&e.style.display)||F(e,"display"))==="none")};bG.expr.filters.visible=function(e){return !bG.expr.filters.hidden(e)}}bG.each({margin:"",padding:"",border:"Width"},function(e,bZ){bG.cssHooks[e+bZ]={expand:function(b2){var b1,b3=typeof b2==="string"?b2.split(" "):[b2],b0={};for(b1=0;b1<4;b1++){b0[e+bQ[b1]+bZ]=b3[b1]||b3[b1-2]||b3[0]}return b0}};if(!aZ.test(e)){bG.cssHooks[e+bZ].set=aG}});var bs=/%20/g,aP=/\[\]$/,U=/\r?\n/g,bz=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aD=/^(?:select|textarea)/i;bG.fn.extend({serialize:function(){return bG.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?bG.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||aD.test(this.nodeName)||bz.test(this.type))}).map(function(e,bZ){var b0=bG(this).val();return b0==null?null:bG.isArray(b0)?bG.map(b0,function(b2,b1){return{name:bZ.name,value:b2.replace(U,"\r\n")}}):{name:bZ.name,value:b0.replace(U,"\r\n")}}).get()}});bG.param=function(e,b0){var b1,bZ=[],b2=function(b3,b4){b4=bG.isFunction(b4)?b4():(b4==null?"":b4);bZ[bZ.length]=encodeURIComponent(b3)+"="+encodeURIComponent(b4)};if(b0===aB){b0=bG.ajaxSettings&&bG.ajaxSettings.traditional}if(bG.isArray(e)||(e.jquery&&!bG.isPlainObject(e))){bG.each(e,function(){b2(this.name,this.value)})}else{for(b1 in e){k(b1,e[b1],b0,b2)}}return bZ.join("&").replace(bs,"+")};function k(b0,b2,bZ,b1){var e;if(bG.isArray(b2)){bG.each(b2,function(b4,b3){if(bZ||aP.test(b0)){b1(b0,b3)}else{k(b0+"["+(typeof b3==="object"?b4:"")+"]",b3,bZ,b1)}})}else{if(!bZ&&bG.type(b2)==="object"){for(e in b2){k(b0+"["+e+"]",b2[e],bZ,b1)}}else{b1(b0,b2)}}}var Y,bX,an=/#.*$/,ad=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,C=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,s=/^(?:GET|HEAD)$/,aC=/^\/\//,bN=/\?/,g=/)<[^<]*)*<\/script>/gi,P=/([?&])_=[^&]*/,aT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,bW=bG.fn.load,w={},a6={},aX=["*/"]+["*"];try{Y=aI.href}catch(bd){Y=o.createElement("a");Y.href="";Y=Y.href}bX=aT.exec(Y.toLowerCase())||[];function bI(e){return function(b2,b4){if(typeof b2!=="string"){b4=b2;b2="*"}var bZ,b5,b6,b1=b2.toLowerCase().split(aV),b0=0,b3=b1.length;if(bG.isFunction(b4)){for(;b0=0){e=b1.slice(b3,b1.length);b1=b1.slice(0,b3)}if(bG.isFunction(b4)){b5=b4;b4=aB}else{if(typeof b4==="object"){b2="POST"}}bG.ajax({url:b1,type:b2,dataType:"html",data:b4,complete:function(b7,b6){if(b5){bZ.each(b5,b0||[b7.responseText,b6,b7])}}}).done(function(b6){b0=arguments;bZ.html(e?bG("
    ").append(b6.replace(g,"")).find(e):b6)});return this};bG.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bZ){bG.fn[bZ]=function(b0){return this.on(bZ,b0)}});bG.each(["get","post"],function(e,bZ){bG[bZ]=function(b0,b2,b3,b1){if(bG.isFunction(b2)){b1=b1||b3;b3=b2;b2=aB}return bG.ajax({type:bZ,url:b0,data:b2,success:b3,dataType:b1})}});bG.extend({getScript:function(e,bZ){return bG.get(e,aB,bZ,"script")},getJSON:function(e,bZ,b0){return bG.get(e,bZ,b0,"json")},ajaxSetup:function(bZ,e){if(e){u(bZ,bG.ajaxSettings)}else{e=bZ;bZ=bG.ajaxSettings}u(bZ,e);return bZ},ajaxSettings:{url:Y,isLocal:C.test(bX[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a2.String,"text html":true,"text json":bG.parseJSON,"text xml":bG.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:bI(w),ajaxTransport:bI(a6),ajax:function(b4,b1){if(typeof b4==="object"){b1=b4;b4=aB}b1=b1||{};var b7,cl,b2,cg,b9,cd,b0,cf,b8=bG.ajaxSetup({},b1),cn=b8.context||b8,cb=cn!==b8&&(cn.nodeType||cn instanceof bG)?bG(cn):bG.event,cm=bG.Deferred(),ci=bG.Callbacks("once memory"),b5=b8.statusCode||{},cc={},cj={},b3=0,b6="canceled",ce={readyState:0,setRequestHeader:function(co,cp){if(!b3){var e=co.toLowerCase();co=cj[e]=cj[e]||co;cc[co]=cp}return this},getAllResponseHeaders:function(){return b3===2?cl:null},getResponseHeader:function(co){var e;if(b3===2){if(!b2){b2={};while((e=ad.exec(cl))){b2[e[1].toLowerCase()]=e[2]}}e=b2[co.toLowerCase()]}return e===aB?null:e},overrideMimeType:function(e){if(!b3){b8.mimeType=e}return this},abort:function(e){e=e||b6;if(cg){cg.abort(e)}ca(0,e);return this}};function ca(cs,co,ct,cq){var e,cw,cu,cr,cv,cp=co;if(b3===2){return}b3=2;if(b9){clearTimeout(b9)}cg=aB;cl=cq||"";ce.readyState=cs>0?4:0;if(ct){cr=h(b8,ce,ct)}if(cs>=200&&cs<300||cs===304){if(b8.ifModified){cv=ce.getResponseHeader("Last-Modified");if(cv){bG.lastModified[b7]=cv}cv=ce.getResponseHeader("Etag");if(cv){bG.etag[b7]=cv}}if(cs===304){cp="notmodified";e=true}else{e=ae(b8,cr);cp=e.state;cw=e.data;cu=e.error;e=!cu}}else{cu=cp;if(!cp||cs){cp="error";if(cs<0){cs=0}}}ce.status=cs;ce.statusText=""+(co||cp);if(e){cm.resolveWith(cn,[cw,cp,ce])}else{cm.rejectWith(cn,[ce,cp,cu])}ce.statusCode(b5);b5=aB;if(b0){cb.trigger("ajax"+(e?"Success":"Error"),[ce,b8,e?cw:cu])}ci.fireWith(cn,[ce,cp]);if(b0){cb.trigger("ajaxComplete",[ce,b8]);if(!(--bG.active)){bG.event.trigger("ajaxStop")}}}cm.promise(ce);ce.success=ce.done;ce.error=ce.fail;ce.complete=ci.add;ce.statusCode=function(co){if(co){var e;if(b3<2){for(e in co){b5[e]=[b5[e],co[e]]}}else{e=co[ce.status];ce.always(e)}}return this};b8.url=((b4||b8.url)+"").replace(an,"").replace(aC,bX[1]+"//");b8.dataTypes=bG.trim(b8.dataType||"*").toLowerCase().split(aV);if(b8.crossDomain==null){cd=aT.exec(b8.url.toLowerCase());b8.crossDomain=!!(cd&&(cd[1]!=bX[1]||cd[2]!=bX[2]||(cd[3]||(cd[1]==="http:"?80:443))!=(bX[3]||(bX[1]==="http:"?80:443))))}if(b8.data&&b8.processData&&typeof b8.data!=="string"){b8.data=bG.param(b8.data,b8.traditional)}r(w,b8,b1,ce);if(b3===2){return ce}b0=b8.global;b8.type=b8.type.toUpperCase();b8.hasContent=!s.test(b8.type);if(b0&&bG.active++===0){bG.event.trigger("ajaxStart")}if(!b8.hasContent){if(b8.data){b8.url+=(bN.test(b8.url)?"&":"?")+b8.data;delete b8.data}b7=b8.url;if(b8.cache===false){var bZ=bG.now(),ck=b8.url.replace(P,"$1_="+bZ);b8.url=ck+((ck===b8.url)?(bN.test(b8.url)?"&":"?")+"_="+bZ:"")}}if(b8.data&&b8.hasContent&&b8.contentType!==false||b1.contentType){ce.setRequestHeader("Content-Type",b8.contentType)}if(b8.ifModified){b7=b7||b8.url;if(bG.lastModified[b7]){ce.setRequestHeader("If-Modified-Since",bG.lastModified[b7])}if(bG.etag[b7]){ce.setRequestHeader("If-None-Match",bG.etag[b7])}}ce.setRequestHeader("Accept",b8.dataTypes[0]&&b8.accepts[b8.dataTypes[0]]?b8.accepts[b8.dataTypes[0]]+(b8.dataTypes[0]!=="*"?", "+aX+"; q=0.01":""):b8.accepts["*"]);for(cf in b8.headers){ce.setRequestHeader(cf,b8.headers[cf])}if(b8.beforeSend&&(b8.beforeSend.call(cn,ce,b8)===false||b3===2)){return ce.abort()}b6="abort";for(cf in {success:1,error:1,complete:1}){ce[cf](b8[cf])}cg=r(a6,b8,b1,ce);if(!cg){ca(-1,"No Transport")}else{ce.readyState=1;if(b0){cb.trigger("ajaxSend",[ce,b8])}if(b8.async&&b8.timeout>0){b9=setTimeout(function(){ce.abort("timeout")},b8.timeout)}try{b3=1;cg.send(cc,ca)}catch(ch){if(b3<2){ca(-1,ch)}else{throw ch}}}return ce},active:0,lastModified:{},etag:{}});function h(b7,b6,b3){var b2,b4,b1,e,bZ=b7.contents,b5=b7.dataTypes,b0=b7.responseFields;for(b4 in b0){if(b4 in b3){b6[b0[b4]]=b3[b4]}}while(b5[0]==="*"){b5.shift();if(b2===aB){b2=b7.mimeType||b6.getResponseHeader("content-type")}}if(b2){for(b4 in bZ){if(bZ[b4]&&bZ[b4].test(b2)){b5.unshift(b4);break}}}if(b5[0] in b3){b1=b5[0]}else{for(b4 in b3){if(!b5[0]||b7.converters[b4+" "+b5[0]]){b1=b4;break}if(!e){e=b4}}b1=b1||e}if(b1){if(b1!==b5[0]){b5.unshift(b1)}return b3[b1]}}function ae(b9,b1){var b7,bZ,b5,b3,b6=b9.dataTypes.slice(),b0=b6[0],b8={},b2=0;if(b9.dataFilter){b1=b9.dataFilter(b1,b9.dataType)}if(b6[1]){for(b7 in b9.converters){b8[b7.toLowerCase()]=b9.converters[b7]}}for(;(b5=b6[++b2]);){if(b5!=="*"){if(b0!=="*"&&b0!==b5){b7=b8[b0+" "+b5]||b8["* "+b5];if(!b7){for(bZ in b8){b3=bZ.split(" ");if(b3[1]===b5){b7=b8[b0+" "+b3[0]]||b8["* "+b3[0]];if(b7){if(b7===true){b7=b8[bZ]}else{if(b8[bZ]!==true){b5=b3[0];b6.splice(b2--,0,b5)}}break}}}}if(b7!==true){if(b7&&b9["throws"]){b1=b7(b1)}else{try{b1=b7(b1)}catch(b4){return{state:"parsererror",error:b7?b4:"No conversion from "+b0+" to "+b5}}}}}b0=b5}}return{state:"success",data:b1}}var bp=[],aw=/\?/,a5=/(=)\?(?=&|$)|\?\?/,bl=bG.now();bG.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=bp.pop()||(bG.expando+"_"+(bl++));this[e]=true;return e}});bG.ajaxPrefilter("json jsonp",function(b8,b3,b7){var b6,e,b5,b1=b8.data,bZ=b8.url,b0=b8.jsonp!==false,b4=b0&&a5.test(bZ),b2=b0&&!b4&&typeof b1==="string"&&!(b8.contentType||"").indexOf("application/x-www-form-urlencoded")&&a5.test(b1);if(b8.dataTypes[0]==="jsonp"||b4||b2){b6=b8.jsonpCallback=bG.isFunction(b8.jsonpCallback)?b8.jsonpCallback():b8.jsonpCallback;e=a2[b6];if(b4){b8.url=bZ.replace(a5,"$1"+b6)}else{if(b2){b8.data=b1.replace(a5,"$1"+b6)}else{if(b0){b8.url+=(aw.test(bZ)?"&":"?")+b8.jsonp+"="+b6}}}b8.converters["script json"]=function(){if(!b5){bG.error(b6+" was not called")}return b5[0]};b8.dataTypes[0]="json";a2[b6]=function(){b5=arguments};b7.always(function(){a2[b6]=e;if(b8[b6]){b8.jsonpCallback=b3.jsonpCallback;bp.push(b6)}if(b5&&bG.isFunction(e)){e(b5[0])}b5=e=aB});return"script"}});bG.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){bG.globalEval(e);return e}}});bG.ajaxPrefilter("script",function(e){if(e.cache===aB){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});bG.ajaxTransport("script",function(b0){if(b0.crossDomain){var e,bZ=o.head||o.getElementsByTagName("head")[0]||o.documentElement;return{send:function(b1,b2){e=o.createElement("script");e.async="async";if(b0.scriptCharset){e.charset=b0.scriptCharset}e.src=b0.url;e.onload=e.onreadystatechange=function(b4,b3){if(b3||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bZ&&e.parentNode){bZ.removeChild(e)}e=aB;if(!b3){b2(200,"success")}}};bZ.insertBefore(e,bZ.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var ah,aO=a2.ActiveXObject?function(){for(var e in ah){ah[e](0,1)}}:false,au=0;function bB(){try{return new a2.XMLHttpRequest()}catch(bZ){}}function bb(){try{return new a2.ActiveXObject("Microsoft.XMLHTTP")}catch(bZ){}}bG.ajaxSettings.xhr=a2.ActiveXObject?function(){return !this.isLocal&&bB()||bb()}:bB;(function(e){bG.extend(bG.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(bG.ajaxSettings.xhr());if(bG.support.ajax){bG.ajaxTransport(function(e){if(!e.crossDomain||bG.support.cors){var bZ;return{send:function(b5,b0){var b3,b2,b4=e.xhr();if(e.username){b4.open(e.type,e.url,e.async,e.username,e.password)}else{b4.open(e.type,e.url,e.async)}if(e.xhrFields){for(b2 in e.xhrFields){b4[b2]=e.xhrFields[b2]}}if(e.mimeType&&b4.overrideMimeType){b4.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!b5["X-Requested-With"]){b5["X-Requested-With"]="XMLHttpRequest"}try{for(b2 in b5){b4.setRequestHeader(b2,b5[b2])}}catch(b1){}b4.send((e.hasContent&&e.data)||null);bZ=function(ce,b8){var b9,b7,b6,cc,cb;try{if(bZ&&(b8||b4.readyState===4)){bZ=aB;if(b3){b4.onreadystatechange=bG.noop;if(aO){delete ah[b3]}}if(b8){if(b4.readyState!==4){b4.abort()}}else{b9=b4.status;b6=b4.getAllResponseHeaders();cc={};cb=b4.responseXML;if(cb&&cb.documentElement){cc.xml=cb}try{cc.text=b4.responseText}catch(ce){}try{b7=b4.statusText}catch(cd){b7=""}if(!b9&&e.isLocal&&!e.crossDomain){b9=cc.text?200:404}else{if(b9===1223){b9=204}}}}}catch(ca){if(!b8){b0(-1,ca)}}if(cc){b0(b9,b7,cc,b6)}};if(!e.async){bZ()}else{if(b4.readyState===4){setTimeout(bZ,0)}else{b3=++au;if(aO){if(!ah){ah={};bG(a2).unload(aO)}ah[b3]=bZ}b4.onreadystatechange=bZ}}},abort:function(){if(bZ){bZ(0,1)}}}}})}var L,ab,bO=/^(?:toggle|show|hide)$/,bH=new RegExp("^(?:([-+])=|)("+bx+")([a-z%]*)$","i"),bM=/queueHooks$/,ax=[i],a1={"*":[function(bZ,b5){var b2,b6,e,b7=this.createTween(bZ,b5),b3=bH.exec(b5),b4=b7.cur(),b0=+b4||0,b1=1;if(b3){b2=+b3[2];b6=b3[3]||(bG.cssNumber[bZ]?"":"px");if(b6!=="px"&&b0){b0=bG.css(b7.elem,bZ,true)||b2||1;do{e=b1=b1||".5";b0=b0/b1;bG.style(b7.elem,bZ,b0+b6);b1=b7.cur()/b4}while(b1!==1&&b1!==e)}b7.unit=b6;b7.start=b0;b7.end=b3[1]?b0+(b3[1]+1)*b2:b2}return b7}]};function bj(){setTimeout(function(){L=aB},0);return(L=bG.now())}function bc(bZ,e){bG.each(e,function(b4,b2){var b3=(a1[b4]||[]).concat(a1["*"]),b0=0,b1=b3.length;for(;b0-1,b7={},b6={},b0,b2;if(b9){b6=b3.position();b0=b6.top;b2=b6.left}else{b0=parseFloat(e)||0;b2=parseFloat(b8)||0}if(bG.isFunction(ca)){ca=ca.call(b1,b4,bZ)}if(ca.top!=null){b7.top=(ca.top-bZ.top)+b0}if(ca.left!=null){b7.left=(ca.left-bZ.left)+b2}if("using" in ca){ca.using.call(b1,b7)}else{b3.css(b7)}}};bG.fn.extend({position:function(){if(!this[0]){return}var b0=this[0],bZ=this.offsetParent(),b1=this.offset(),e=bm.test(bZ[0].nodeName)?{top:0,left:0}:bZ.offset();b1.top-=parseFloat(bG.css(b0,"marginTop"))||0;b1.left-=parseFloat(bG.css(b0,"marginLeft"))||0;e.top+=parseFloat(bG.css(bZ[0],"borderTopWidth"))||0;e.left+=parseFloat(bG.css(bZ[0],"borderLeftWidth"))||0;return{top:b1.top-e.top,left:b1.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.body;while(e&&(!bm.test(e.nodeName)&&bG.css(e,"position")==="static")){e=e.offsetParent}return e||o.body})}});bG.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b0,bZ){var e=/Y/.test(bZ);bG.fn[b0]=function(b1){return bG.access(this,function(b2,b5,b4){var b3=bn(b2);if(b4===aB){return b3?(bZ in b3)?b3[bZ]:b3.document.documentElement[b5]:b2[b5]}if(b3){b3.scrollTo(!e?b4:bG(b3).scrollLeft(),e?b4:bG(b3).scrollTop())}else{b2[b5]=b4}},b0,b1,arguments.length,null)}});function bn(e){return bG.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}bG.each({Height:"height",Width:"width"},function(e,bZ){bG.each({padding:"inner"+e,content:bZ,"":"outer"+e},function(b0,b1){bG.fn[b1]=function(b5,b4){var b3=arguments.length&&(b0||typeof b5!=="boolean"),b2=b0||(b5===true||b4===true?"margin":"border");return bG.access(this,function(b7,b6,b8){var b9;if(bG.isWindow(b7)){return b7.document.documentElement["client"+e]}if(b7.nodeType===9){b9=b7.documentElement;return Math.max(b7.body["scroll"+e],b9["scroll"+e],b7.body["offset"+e],b9["offset"+e],b9["client"+e])}return b8===aB?bG.css(b7,b6,b8,b2):bG.style(b7,b6,b8,b2)},bZ,b3?b5:aB,b3)}})});a2.jQuery=a2.$=bG;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return bG})}})(window);!function(a){a(function(){a.support.transition=(function(){var b=(function(){var e=document.createElement("bootstrap"),d={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},c;for(c in d){if(e.style[c]!==undefined){return d[c]}}}());return b&&{end:b}})()})}(window.jQuery);!function(c){var b='[data-dismiss="alert"]',a=function(d){c(d).on("click",b,this.close)};a.prototype.close=function(i){var h=c(this),f=h.attr("data-target"),g;if(!f){f=h.attr("href");f=f&&f.replace(/.*(?=#[^\s]*$)/,"")}g=c(f);i&&i.preventDefault();g.length||(g=h.hasClass("alert")?h:h.parent());g.trigger(i=c.Event("close"));if(i.isDefaultPrevented()){return}g.removeClass("in");function d(){g.trigger("closed").remove()}c.support.transition&&g.hasClass("fade")?g.on(c.support.transition.end,d):d()};c.fn.alert=function(d){return this.each(function(){var f=c(this),e=f.data("alert");if(!e){f.data("alert",(e=new a(this)))}if(typeof d=="string"){e[d].call(f)}})};c.fn.alert.Constructor=a;c(function(){c("body").on("click.alert.data-api",b,a.prototype.close)})}(window.jQuery);!function(b){var a=function(d,c){this.$element=b(d);this.options=b.extend({},b.fn.button.defaults,c)};a.prototype.setState=function(f){var h="disabled",c=this.$element,e=c.data(),g=c.is("input")?"val":"html";f=f+"Text";e.resetText||c.data("resetText",c[g]());c[g](e[f]||this.options[f]);setTimeout(function(){f=="loadingText"?c.addClass(h).attr(h,h):c.removeClass(h).removeAttr(h)},0)};a.prototype.toggle=function(){var c=this.$element.parent('[data-toggle="buttons-radio"]');c&&c.find(".active").removeClass("active");this.$element.toggleClass("active")};b.fn.button=function(c){return this.each(function(){var f=b(this),e=f.data("button"),d=typeof c=="object"&&c;if(!e){f.data("button",(e=new a(this,d)))}if(c=="toggle"){e.toggle()}else{if(c){e.setState(c)}}})};b.fn.button.defaults={loadingText:"loading..."};b.fn.button.Constructor=a;b(function(){b("body").on("click.button.data-api","[data-toggle^=button]",function(d){var c=b(d.target);if(!c.hasClass("btn")){c=c.closest(".btn")}c.button("toggle")})})}(window.jQuery);!function(a){var b=function(d,c){this.$element=a(d);this.options=c;this.options.slide&&this.slide(this.options.slide);this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(c){if(!c){this.paused=false}this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval));return this},to:function(g){var c=this.$element.find(".item.active"),d=c.parent().children(),e=d.index(c),f=this;if(g>(d.length-1)||g<0){return}if(this.sliding){return this.$element.one("slid",function(){f.to(g)})}if(e==g){return this.pause().cycle()}return this.slide(g>e?"next":"prev",a(d[g]))},pause:function(c){if(!c){this.paused=true}if(this.$element.find(".next, .prev").length&&a.support.transition.end){this.$element.trigger(a.support.transition.end);this.cycle()}clearInterval(this.interval);this.interval=null;return this},next:function(){if(this.sliding){return}return this.slide("next")},prev:function(){if(this.sliding){return}return this.slide("prev")},slide:function(j,d){var l=this.$element.find(".item.active"),c=d||l[j](),i=this.interval,k=j=="next"?"left":"right",f=j=="next"?"first":"last",g=this,h=a.Event("slide",{relatedTarget:c[0]});this.sliding=true;i&&this.pause();c=c.length?c:this.$element.find(".item")[f]();if(c.hasClass("active")){return}if(a.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(h);if(h.isDefaultPrevented()){return}c.addClass(j);c[0].offsetWidth;l.addClass(k);c.addClass(k);this.$element.one(a.support.transition.end,function(){c.removeClass([j,k].join(" ")).addClass("active");l.removeClass(["active",k].join(" "));g.sliding=false;setTimeout(function(){g.$element.trigger("slid")},0)})}else{this.$element.trigger(h);if(h.isDefaultPrevented()){return}l.removeClass("active");c.addClass("active");this.sliding=false;this.$element.trigger("slid")}i&&this.cycle();return this}};a.fn.carousel=function(c){return this.each(function(){var g=a(this),f=g.data("carousel"),d=a.extend({},a.fn.carousel.defaults,typeof c=="object"&&c),e=typeof c=="string"?c:d.slide;if(!f){g.data("carousel",(f=new b(this,d)))}if(typeof c=="number"){f.to(c)}else{if(e){f[e]()}else{if(d.interval){f.cycle()}}}})};a.fn.carousel.defaults={interval:5000,pause:"hover"};a.fn.carousel.Constructor=b;a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(h){var g=a(this),d,c=a(g.attr("data-target")||(d=g.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!c.data("modal")&&a.extend({},c.data(),g.data());c.carousel(f);h.preventDefault()})})}(window.jQuery);!function(a){var b=function(d,c){this.$element=a(d);this.options=a.extend({},a.fn.collapse.defaults,c);if(this.options.parent){this.$parent=a(this.options.parent)}this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var c=this.$element.hasClass("width");return c?"width":"height"},show:function(){var f,c,e,d;if(this.transitioning){return}f=this.dimension();c=a.camelCase(["scroll",f].join("-"));e=this.$parent&&this.$parent.find("> .accordion-group > .in");if(e&&e.length){d=e.data("collapse");if(d&&d.transitioning){return}e.collapse("hide");d||e.data("collapse",null)}this.$element[f](0);this.transition("addClass",a.Event("show"),"shown");a.support.transition&&this.$element[f](this.$element[0][c])},hide:function(){var c;if(this.transitioning){return}c=this.dimension();this.reset(this.$element[c]());this.transition("removeClass",a.Event("hide"),"hidden");this.$element[c](0)},reset:function(c){var d=this.dimension();this.$element.removeClass("collapse")[d](c||"auto")[0].offsetWidth;this.$element[c!==null?"addClass":"removeClass"]("collapse");return this},transition:function(g,d,e){var f=this,c=function(){if(d.type=="show"){f.reset()}f.transitioning=0;f.$element.trigger(e)};this.$element.trigger(d);if(d.isDefaultPrevented()){return}this.transitioning=1;this.$element[g]("in");a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,c):c()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};a.fn.collapse=function(c){return this.each(function(){var f=a(this),e=f.data("collapse"),d=typeof c=="object"&&c;if(!e){f.data("collapse",(e=new b(this,d)))}if(typeof c=="string"){e[c]()}})};a.fn.collapse.defaults={toggle:true};a.fn.collapse.Constructor=b;a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(h){var g=a(this),c,f=g.attr("data-target")||h.preventDefault()||(c=g.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),d=a(f).data("collapse")?"toggle":g.data();g[a(f).hasClass("in")?"addClass":"removeClass"]("collapsed");a(f).collapse(d)})})}(window.jQuery);!function(e){var b="[data-toggle=dropdown]",a=function(g){var f=e(g).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){f.parent().removeClass("open")})};a.prototype={constructor:a,toggle:function(i){var h=e(this),g,f;if(h.is(".disabled, :disabled")){return}g=d(h);f=g.hasClass("open");c();if(!f){g.toggleClass("open");h.focus()}return false},keydown:function(k){var j,l,f,i,h,g;if(!/(38|40|27)/.test(k.keyCode)){return}j=e(this);k.preventDefault();k.stopPropagation();if(j.is(".disabled, :disabled")){return}i=d(j);h=i.hasClass("open");if(!h||(h&&k.keyCode==27)){return j.click()}l=e("[role=menu] li:not(.divider) a",i);if(!l.length){return}g=l.index(l.filter(":focus"));if(k.keyCode==38&&g>0){g--}if(k.keyCode==40&&g').appendTo(document.body);if(this.options.backdrop!="static"){this.$backdrop.click(b.proxy(this.hide,this))}if(c){this.$backdrop[0].offsetWidth}this.$backdrop.addClass("in");c?this.$backdrop.one(b.support.transition.end,f):f()}else{if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");b.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(b.support.transition.end,b.proxy(this.removeBackdrop,this)):this.removeBackdrop()}else{if(f){f()}}}}};b.fn.modal=function(c){return this.each(function(){var f=b(this),e=f.data("modal"),d=b.extend({},b.fn.modal.defaults,f.data(),typeof c=="object"&&c);if(!e){f.data("modal",(e=new a(this,d)))}if(typeof c=="string"){e[c]()}else{if(d.show){e.show()}}})};b.fn.modal.defaults={backdrop:true,keyboard:true,show:true};b.fn.modal.Constructor=a;b(function(){b("body").on("click.modal.data-api",'[data-toggle="modal"]',function(h){var g=b(this),d=g.attr("href"),c=b(g.attr("data-target")||(d&&d.replace(/.*(?=#[^\s]+$)/,""))),f=c.data("modal")?"toggle":b.extend({remote:!/#/.test(d)&&d},c.data(),g.data());h.preventDefault();c.modal(f).one("hide",function(){g.focus()})})})}(window.jQuery);!function(b){var a=function(d,c){this.init("tooltip",d,c)};a.prototype={constructor:a,init:function(f,e,d){var g,c;this.type=f;this.$element=b(e);this.options=this.getOptions(d);this.enabled=true;if(this.options.trigger=="click"){this.$element.on("click."+this.type,this.options.selector,b.proxy(this.toggle,this))}else{if(this.options.trigger!="manual"){g=this.options.trigger=="hover"?"mouseenter":"focus";c=this.options.trigger=="hover"?"mouseleave":"blur";this.$element.on(g+"."+this.type,this.options.selector,b.proxy(this.enter,this));this.$element.on(c+"."+this.type,this.options.selector,b.proxy(this.leave,this))}}this.options.selector?(this._options=b.extend({},this.options,{trigger:"manual",selector:""})):this.fixTitle()},getOptions:function(c){c=b.extend({},b.fn[this.type].defaults,c,this.$element.data());if(c.delay&&typeof c.delay=="number"){c.delay={show:c.delay,hide:c.delay}}return c},enter:function(d){var c=b(d.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.show){return c.show()}clearTimeout(this.timeout);c.hoverState="in";this.timeout=setTimeout(function(){if(c.hoverState=="in"){c.show()}},c.options.delay.show)},leave:function(d){var c=b(d.currentTarget)[this.type](this._options).data(this.type);if(this.timeout){clearTimeout(this.timeout)}if(!c.options.delay||!c.options.delay.hide){return c.hide()}c.hoverState="out";this.timeout=setTimeout(function(){if(c.hoverState=="out"){c.hide()}},c.options.delay.hide)},show:function(){var g,c,i,e,h,d,f;if(this.hasContent()&&this.enabled){g=this.tip();this.setContent();if(this.options.animation){g.addClass("fade")}d=typeof this.options.placement=="function"?this.options.placement.call(this,g[0],this.$element[0]):this.options.placement;c=/in/.test(d);g.remove().css({top:0,left:0,display:"block"}).appendTo(c?this.$element:document.body);i=this.getPosition(c);e=g[0].offsetWidth;h=g[0].offsetHeight;switch(c?d.split(" ")[1]:d){case"bottom":f={top:i.top+i.height,left:i.left+i.width/2-e/2};break;case"top":f={top:i.top-h,left:i.left+i.width/2-e/2};break;case"left":f={top:i.top+i.height/2-h/2,left:i.left-e};break;case"right":f={top:i.top+i.height/2-h/2,left:i.left+i.width};break}g.css(f).addClass(d).addClass("in")}},setContent:function(){var d=this.tip(),c=this.getTitle();d.find(".tooltip-inner")[this.options.html?"html":"text"](c);d.removeClass("fade in top bottom left right")},hide:function(){var c=this,d=this.tip();d.removeClass("in");function e(){var f=setTimeout(function(){d.off(b.support.transition.end).remove()},500);d.one(b.support.transition.end,function(){clearTimeout(f);d.remove()})}b.support.transition&&this.$tip.hasClass("fade")?e():d.remove();return this},fixTitle:function(){var c=this.$element;if(c.attr("title")||typeof(c.attr("data-original-title"))!="string"){c.attr("data-original-title",c.attr("title")||"").removeAttr("title")}},hasContent:function(){return this.getTitle()},getPosition:function(c){return b.extend({},(c?{top:0,left:0}:this.$element.offset()),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var e,c=this.$element,d=this.options;e=c.attr("data-original-title")||(typeof d.title=="function"?d.title.call(c[0]):d.title);return e},tip:function(){return this.$tip=this.$tip||b(this.options.template)},validate:function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}},enable:function(){this.enabled=true},disable:function(){this.enabled=false},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};b.fn.tooltip=function(c){return this.each(function(){var f=b(this),e=f.data("tooltip"),d=typeof c=="object"&&c;if(!e){f.data("tooltip",(e=new a(this,d)))}if(typeof c=="string"){e[c]()}})};b.fn.tooltip.Constructor=a;b.fn.tooltip.defaults={animation:true,placement:"top",selector:false,template:'
    ',trigger:"hover",title:"",delay:0,html:true}}(window.jQuery);!function(b){var a=function(d,c){this.init("popover",d,c)};a.prototype=b.extend({},b.fn.tooltip.Constructor.prototype,{constructor:a,setContent:function(){var e=this.tip(),d=this.getTitle(),c=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](d);e.find(".popover-content > *")[this.options.html?"html":"text"](c);e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var d,c=this.$element,e=this.options;d=c.attr("data-content")||(typeof e.content=="function"?e.content.call(c[0]):e.content);return d},tip:function(){if(!this.$tip){this.$tip=b(this.options.template)}return this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});b.fn.popover=function(c){return this.each(function(){var f=b(this),e=f.data("popover"),d=typeof c=="object"&&c;if(!e){f.data("popover",(e=new a(this,d)))}if(typeof c=="string"){e[c]()}})};b.fn.popover.Constructor=a;b.fn.popover.defaults=b.extend({},b.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'

    '})}(window.jQuery);!function(b){function a(f,e){var g=b.proxy(this.process,this),c=b(f).is("body")?b(window):b(f),d;this.options=b.extend({},b.fn.scrollspy.defaults,e);this.$scrollElement=c.on("scroll.scroll-spy.data-api",g);this.selector=(this.options.target||((d=b(f).attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""))||"")+" .nav li > a";this.$body=b("body");this.refresh();this.process()}a.prototype={constructor:a,refresh:function(){var c=this,d;this.offsets=b([]);this.targets=b([]);d=this.$body.find(this.selector).map(function(){var f=b(this),e=f.data("target")||f.attr("href"),g=/^#\w/.test(e)&&b(e);return(g&&g.length&&[[g.position().top,e]])||null}).sort(function(f,e){return f[0]-e[0]}).each(function(){c.offsets.push(this[0]);c.targets.push(this[1])})},process:function(){var h=this.$scrollElement.scrollTop()+this.options.offset,e=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,g=e-this.$scrollElement.height(),f=this.offsets,c=this.targets,j=this.activeTarget,d;if(h>=g){return j!=(d=c.last()[0])&&this.activate(d)}for(d=f.length;d--;){j!=c[d]&&h>=f[d]&&(!f[d+1]||h<=f[d+1])&&this.activate(c[d])}},activate:function(e){var d,c;this.activeTarget=e;b(this.selector).parent(".active").removeClass("active");c=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]';d=b(c).parent("li").addClass("active");if(d.parent(".dropdown-menu").length){d=d.closest("li.dropdown").addClass("active")}d.trigger("activate")}};b.fn.scrollspy=function(c){return this.each(function(){var f=b(this),e=f.data("scrollspy"),d=typeof c=="object"&&c;if(!e){f.data("scrollspy",(e=new a(this,d)))}if(typeof c=="string"){e[c]()}})};b.fn.scrollspy.Constructor=a;b.fn.scrollspy.defaults={offset:10};b(window).on("load",function(){b('[data-spy="scroll"]').each(function(){var c=b(this);c.scrollspy(c.data())})})}(window.jQuery);!function(b){var a=function(c){this.element=b(c)};a.prototype={constructor:a,show:function(){var i=this.element,f=i.closest("ul:not(.dropdown-menu)"),d=i.attr("data-target"),g,c,h;if(!d){d=i.attr("href");d=d&&d.replace(/.*(?=#[^\s]*$)/,"")}if(i.parent("li").hasClass("active")){return}g=f.find(".active a").last()[0];h=b.Event("show",{relatedTarget:g});i.trigger(h);if(h.isDefaultPrevented()){return}c=b(d);this.activate(i.parent("li"),f);this.activate(c,c.parent(),function(){i.trigger({type:"shown",relatedTarget:g})})},activate:function(e,d,h){var c=d.find("> .active"),g=h&&b.support.transition&&c.hasClass("fade");function f(){c.removeClass("active").find("> .dropdown-menu > .active").removeClass("active");e.addClass("active");if(g){e[0].offsetWidth;e.addClass("in")}else{e.removeClass("fade")}if(e.parent(".dropdown-menu")){e.closest("li.dropdown").addClass("active")}h&&h()}g?c.one(b.support.transition.end,f):f();c.removeClass("in")}};b.fn.tab=function(c){return this.each(function(){var e=b(this),d=e.data("tab");if(!d){e.data("tab",(d=new a(this)))}if(typeof c=="string"){d[c]()}})};b.fn.tab.Constructor=a;b(function(){b("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault();b(this).tab("show")})})}(window.jQuery);!function(a){var b=function(d,c){this.$element=a(d);this.options=a.extend({},a.fn.typeahead.defaults,c);this.matcher=this.options.matcher||this.matcher;this.sorter=this.options.sorter||this.sorter;this.highlighter=this.options.highlighter||this.highlighter;this.updater=this.options.updater||this.updater;this.$menu=a(this.options.menu).appendTo("body");this.source=this.options.source;this.shown=false;this.listen()};b.prototype={constructor:b,select:function(){var c=this.$menu.find(".active").attr("data-value");this.$element.val(this.updater(c)).change();return this.hide()},updater:function(c){return c},show:function(){var c=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});this.$menu.css({top:c.top+c.height,left:c.left});this.$menu.show();this.shown=true;return this},hide:function(){this.$menu.hide();this.shown=false;return this},lookup:function(d){var c;this.query=this.$element.val();if(!this.query||this.query.length"+f+""})},render:function(c){var d=this;c=a(c).map(function(e,f){e=a(d.options.item).attr("data-value",f);e.find("a").html(d.highlighter(f));return e[0]});c.first().addClass("active");this.$menu.html(c);return this},next:function(d){var e=this.$menu.find(".active").removeClass("active"),c=e.next();if(!c.length){c=a(this.$menu.find("li")[0])}c.addClass("active")},prev:function(d){var e=this.$menu.find(".active").removeClass("active"),c=e.prev();if(!c.length){c=this.$menu.find("li").last()}c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this));if(a.browser.webkit||a.browser.msie){this.$element.on("keydown",a.proxy(this.keydown,this))}this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},move:function(c){if(!this.shown){return}switch(c.keyCode){case 9:case 13:case 27:c.preventDefault();break;case 38:c.preventDefault();this.prev();break;case 40:c.preventDefault();this.next();break}c.stopPropagation()},keydown:function(c){this.suppressKeyPressRepeat=!~a.inArray(c.keyCode,[40,38,9,13,27]);this.move(c)},keypress:function(c){if(this.suppressKeyPressRepeat){return}this.move(c)},keyup:function(c){switch(c.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown){return}this.select();break;case 27:if(!this.shown){return}this.hide();break;default:this.lookup()}c.stopPropagation();c.preventDefault()},blur:function(d){var c=this;setTimeout(function(){c.hide()},150)},click:function(c){c.stopPropagation();c.preventDefault();this.select()},mouseenter:function(c){this.$menu.find(".active").removeClass("active");a(c.currentTarget).addClass("active")}};a.fn.typeahead=function(c){return this.each(function(){var f=a(this),e=f.data("typeahead"),d=typeof c=="object"&&c;if(!e){f.data("typeahead",(e=new b(this,d)))}if(typeof c=="string"){e[c]()}})};a.fn.typeahead.defaults={source:[],items:8,menu:'',item:'
  • ',minLength:1};a.fn.typeahead.Constructor=b;a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(d){var c=a(this);if(c.data("typeahead")){return}d.preventDefault();c.typeahead(c.data())})})}(window.jQuery);!function(b){var a=function(d,c){this.options=b.extend({},b.fn.affix.defaults,c);this.$window=b(window).on("scroll.affix.data-api",b.proxy(this.checkPosition,this));this.$element=b(d);this.checkPosition()};a.prototype.checkPosition=function(){if(!this.$element.is(":visible")){return}var g=b(document).height(),i=this.$window.scrollTop(),c=this.$element.offset(),j=this.options.offset,e=j.bottom,f=j.top,h="affix affix-top affix-bottom",d;if(typeof j!="object"){e=f=j}if(typeof f=="function"){f=j.top()}if(typeof e=="function"){e=j.bottom()}d=this.unpin!=null&&(i+this.unpin<=c.top)?false:e!=null&&(c.top+this.$element.height()>=g-e)?"bottom":f!=null&&i<=f?"top":false;if(this.affixed===d){return}this.affixed=d;this.unpin=d=="bottom"?c.top-i:null;this.$element.removeClass(h).addClass("affix"+(d?"-"+d:""))};b.fn.affix=function(c){return this.each(function(){var f=b(this),e=f.data("affix"),d=typeof c=="object"&&c;if(!e){f.data("affix",(e=new a(this,d)))}if(typeof c=="string"){e[c]()}})};b.fn.affix.Constructor=a;b.fn.affix.defaults={offset:0};b(window).on("load",function(){b('[data-spy="affix"]').each(function(){var d=b(this),c=d.data();c.offset=c.offset||{};c.offsetBottom&&(c.offset.bottom=c.offsetBottom);c.offsetTop&&(c.offset.top=c.offsetTop);d.affix(c)})})}(window.jQuery);var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;(function(){function d(F){function w(J){var K=J.charCodeAt(0);if(K!==92){return K}var I=J.charAt(1);return(K=k[I])?K:"0"<=I&&I<="7"?parseInt(J.substring(1),8):I==="u"||I==="x"?parseInt(J.substring(2),16):J.charCodeAt(1)}function C(I){if(I<32){return(I<16?"\\x0":"\\x")+I.toString(16)}I=String.fromCharCode(I);if(I==="\\"||I==="-"||I==="["||I==="]"){I="\\"+I}return I}function A(J){for(var M=J.substring(1,J.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),J=[],I=[],O=M[0]==="^",P=O?1:0,L=M.length;P122||(N<65||K>90||I.push([Math.max(65,K)|32,Math.min(N,90)|32]),N<97||K>122||I.push([Math.max(97,K)&-33,Math.min(N,122)&-33]))}}I.sort(function(Q,R){return Q[0]-R[0]||R[1]-Q[1]});M=[];K=[NaN,NaN];for(P=0;PL[0]&&(L[1]+1>L[0]&&I.push("-"),I.push(C(L[1])))}I.push("]");return I.join("")}function E(J){for(var M=J.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),I=M.length,N=[],O=0,L=0;O=2&&J==="["?M[O]=A(K):J!=="\\"&&(M[O]=K.replace(/[A-Za-z]/g,function(P){P=P.charCodeAt(0);return"["+String.fromCharCode(P&-33,P|32)+"]"}))}}return M.join("")}for(var G=0,H=!1,x=!1,u=0,D=F.length;u=5&&"lang-"===O.substring(0,5))&&!(D&&typeof D[1]==="string")){M=!1,O="src"}M||(B[K]=O)}I=L;L+=K.length;if(M){M=D[1];var H=K.indexOf(M),G=H+M.length;D[2]&&(G=K.length-D[2].length,H=G-M.length);O=O.substring(5);t(F+I,K.substring(0,H),x,C);t(F+I+H,M,s(O,M),C);t(F+I+G,K.substring(G),x,C)}else{C.push(F+I,O)}}P.e=C}var w={},A;(function(){for(var G=u.concat(k),B=[],F={},H=0,E=G.length;H=0;){w[I.charAt(C)]=D}}D=D[1];I=""+D;F.hasOwnProperty(I)||(B.push(D),F[I]=q)}B.push(/[\S\s]/);A=d(B)})();var v=k.length;return x}function o(u){var k=[],w=[];u.tripleQuotedStrings?k.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):u.multiLineStrings?k.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):k.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);u.verbatimStrings&&w.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var v=u.hashComments;v&&(u.cStyleComments?(v>1?k.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):k.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),w.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):k.push(["com",/^#[^\n\r]*/,q,"#"]));u.cStyleComments&&(w.push(["com",/^\/\/[^\n\r]*/,q]),w.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));u.regexLiterals&&w.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(v=u.types)&&w.push(["typ",v]);u=(""+u.keywords).replace(/^ | $/g,"");u.length&&w.push(["kwd",RegExp("^(?:"+u.replace(/[\s,]+/g,"|")+")\\b"),q]);k.push(["pln",/^\s+/,q," \r\n\t\xa0"]);w.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return h(k,w)}function r(H,x){function E(K){switch(K.nodeType){case 1:if(B.test(K.className)){break}if("BR"===K.nodeName){C(K),K.parentNode&&K.parentNode.removeChild(K)}else{for(K=K.firstChild;K;K=K.nextSibling){E(K)}}break;case 3:case 4:if(v){var k=K.nodeValue,L=k.match(I);if(L){var M=k.substring(0,L.index);K.nodeValue=M;(k=k.substring(L.index+L[0].length))&&K.parentNode.insertBefore(J.createTextNode(k),K.nextSibling);C(K);M||K.parentNode.removeChild(K)}}}}function C(K){function k(M,R){var Q=R?M.cloneNode(!1):M,P=M.parentNode;if(P){var P=k(P,1),O=M.nextSibling;P.appendChild(Q);for(var N=O;N;N=O){O=N.nextSibling,P.appendChild(N)}}return Q}for(;!K.nextSibling;){if(K=K.parentNode,!K){return}}for(var K=k(K.nextSibling,0),L;(L=K.parentNode)&&L.nodeType===1;){K=L}F.push(K)}var B=/(?:^|\s)nocode(?:\s|$)/,I=/\r\n?|\n/,J=H.ownerDocument,A;H.currentStyle?A=H.currentStyle.whiteSpace:window.getComputedStyle&&(A=J.defaultView.getComputedStyle(H,q).getPropertyValue("white-space"));var v=A&&"pre"===A.substring(0,3);for(A=J.createElement("LI");H.firstChild;){A.appendChild(H.firstChild)}for(var F=[A],D=0;D=0;){var v=k[w];y.hasOwnProperty(v)?window.console&&console.warn("cannot override language handler %s",v):y[v]=u}}function s(u,k){if(!u||!y.hasOwnProperty(u)){u=/^\s*=J&&(Q+=2);T>=V&&(X+=2)}}catch(C){"console" in window&&console.log(C&&C.stack?C.stack:C)}}var m=["break,continue,do,else,for,if,return,while"],j=[[m,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],n=[j,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],l=[j,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],i=[l,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],j=[j,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],g=[m,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],f=[m,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],m=[m,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,b=/\S/,a=o({keywords:[n,i,j,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+g,f,m],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),y={};z(a,["default-code"]);z(h([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);z(h([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);z(h([],[["atv",/^[\S\s]+/]]),["uq.val"]);z(o({keywords:n,hashComments:!0,cStyleComments:!0,types:e}),["c","cc","cpp","cxx","cyc","m"]);z(o({keywords:"null,true,false"}),["json"]);z(o({keywords:i,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:e}),["cs"]);z(o({keywords:l,cStyleComments:!0}),["java"]);z(o({keywords:m,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);z(o({keywords:g,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]);z(o({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);z(o({keywords:f,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);z(o({keywords:j,cStyleComments:!0,regexLiterals:!0}),["js"]);z(o({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);z(h([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(u,k,w){var v=document.createElement("PRE");v.innerHTML=u;w&&r(v,w);p({g:k,i:w,h:v});return v.innerHTML};window.prettyPrint=function(E){function v(){for(var L=window.PR_SHOULD_USE_CONTINUATION?w.now()+250:Infinity;u=0){var I=I.match(B),K,H;if(H=!I){H=O;for(var M=void 0,N=H.firstChild;N;N=N.nextSibling){var J=N.nodeType,M=J===1?M?H:N:J===3?b.test(N.nodeValue)?H:M:M}H=(K=M===H?void 0:M)&&"CODE"===K.tagName}H&&(I=K.className.match(B));I&&(I=I[1]);H=!1;for(M=O.parentNode;M;M=M.parentNode){if((M.tagName==="pre"||M.tagName==="code"||M.tagName==="xmp")&&M.className&&M.className.indexOf("prettyprint")>=0){H=!0;break}}H||((H=(H=O.className.match(/\blinenums\b(?::(\d+))?/))?H[1]&&H[1].length?+H[1]:!0:!1)&&r(O,H),D={g:I,h:O,i:H},p(D))}}u + + + + + + + + dependency-check-jenkins - Project License + + + + + + + + + + + + + + + + + + + + + Fork me on GitHub + + + + + +
    + + + + + +
    +
    + +
    + + +
    +
    +

    Overview

    +

    Typically the licenses listed for the project are that of the project itself, and not of dependencies.

    +
    +

    Project License

    +
    +

    GNU General Public License version 3

    [Original text] +

    Copy of the license follows.

    + + + + +
    +

    +English [en]   +العربية [ar]   +català [ca]   +Deutsch [de]   +ελληνικά [el]   +español [es]   +français [fr]   +italiano [it]   +日本語 [ja]   +Nederlands [nl]   +polski [pl]   +português do Brasil [pt-br]   +русский [ru]   +Shqip [sq]   +српски [sr]   +简体中文 [zh-cn]   +繁體中文 [zh-tw]   +

    +
    + + + + +
    + + + + + + + + + + +
    + + +

    Licenses

    + +

    +Published software should be free +software. To make it free software, you need to release it +under a free software license. We normally use the GNU General Public License (GNU GPL), +but occasionally we use other +free software licenses. We use only licenses that are compatible +with the GNU GPL for GNU software. +

    + +

    +Documentation for free software should be +free documentation, so that +people can redistribute it and improve it along with the software +it describes. To make it free documentation, you need to release +it under a free documentation license. We normally use the +GNU Free Documentation License (GNU +FDL), but occasionally we use +other free +documentation licenses. +

    + +

    If you've started a new project and you're not sure what license to +use, “How to +choose a license for your own work” details our +recommendations in an easy-to-follow guide. If you just want a quick +list reference, we have a page that names +our recommended +copyleft licenses.

    + +

    We also have a page that discusses the BSD License Problem.

    + +

    +Our documentation licenses are currently being revised, and we welcome +your comments on the proposed texts. Please +visit our license update site to +read the current drafts and participate in the process. +

    + +

    Common Resources for our Software Licenses

    + +

    We have a number of resources to help people understand and use our +various licenses:

    + + + +

    The GNU General Public License

    + +

    +The GNU General Public License is often called the GNU GPL for short; +it is used by most GNU programs, and by more than half of all free +software packages. The latest version is version 3. +

    + + + +

    The GNU Lesser General Public License

    + +

    +The GNU Lesser General Public License is used by a few (not by any means +all) GNU libraries. The latest version is version 3. +

    + + + +

    The GNU Affero General Public License

    + +

    +The GNU Affero General Public License is based on the GNU GPL, but has an +additional term to allow users who interact with the licensed software over +a network to receive the source for that program. We recommend that people +consider using the GNU AGPL for any software which will commonly be run +over a network. The latest version is version 3. +

    + +
      +
    • The GNU Affero General Public License text is available in + these formats: + HTML, + plain text, + Docbook, + Texinfo, and + LaTeX. +These documents are not formatted for standalone publishing, and +are intended to be included in another document.
    • +
    • Why the Affero GPL
    • +
    + +

    The GNU Free Documentation License

    + +

    +The GNU Free Documentation License is a form of copyleft intended +for use on a manual, textbook or other document to assure everyone +the effective freedom to copy and redistribute it, with or without +modifications, either commercially or non-commercially. The latest version +is 1.3. +

    + + + +

    Exceptions to GNU Licenses

    + +

    Some GNU programs have additional permissions or special exceptions + to specific terms in one of the main licenses. Since some of those + are commonly used or inspire a lot of questions on their own, we've + started collecting them on + our exceptions page.

    + +

    License URLs

    + +

    When linking to our licenses, it's usually best to link to the latest +version; hence the standard URLs such as +http://www.gnu.org/licenses/gpl.html have no version number. +Occasionally, however, you may want to link to a specific version of a +given license. In those situations, you can use the following links +[skip links]:

    + +
    +
    GNU General Public License (GPL)
    + +
    GPLv3, +GPLv2, +GPLv1
    + +
    GNU Lesser General Public License (LGPL)
    +
    LGPLv3, +LGPLv2.1
    + +
    GNU Affero General Public License (AGPL)
    +
    GNU + AGPLv3 (The Affero General + Public License version 1 is not a GNU license, but it was + designed to serve a purpose much like the GNU AGPL's.)
    + +
    GNU Free Documentation License (FDL)
    +
    FDLv1.3, +FDLv1.2, +FDLv1.1
    +
    + +

    Stable links to each license's alternative + formats are available on its respective page. Not every version of + every license is available in every format. If you need one that is + missing, please email us.

    + +

    See also the old licenses page.

    + + +

    Unofficial Translations

    + +

    +Legally speaking, the original (English) version of the licenses is what +specifies the actual distribution terms for GNU programs and others that +use them. But to help people better understand the licenses, we give +permission to publish translations into other languages provided that +they follow our regulations for unofficial translations: +

    + + + +

    Verbatim Copying and Distribution

    + +

    The standard copyright terms for GNU web pages is now the Creative +Commons Attribution-NoDerivs 3.0 United States License. It used to +be (and for a few pages still is): Verbatim +copying and distribution of this entire article are permitted worldwide, +without royalty, in any medium, provided this notice is +preserved. Please note the following commentary about this +“verbatim license” by Eben Moglen:

    + +

    +“Our intention in using the phrase ‘verbatim copying in +any medium’ is not to require retention of page headings and +footers or other formatting features. Retention of weblinks in both +hyperlinked and non-hyperlinked media (as notes or some other form of +printed URL in non-HTML media) is required”. +

    + +

    List of Free Software Licenses

    + +
      +
    • + List of Free Software Licenses + +

      If you are contemplating writing a new license, please contact the +FSF by writing to <licensing@fsf.org>. The +proliferation of different free software licenses means increased work +for users in understanding the licenses; we may be able to help you +find an existing Free Software license that meets your needs. +

      + +

      +If that isn't possible, if you really need a new license, with our +help you can ensure that the license really is a Free Software license +and avoid various practical problems. +

      + +
    • +
    + + +

    What Is Copyleft?

    + +

    +Copyleft is a general +method for making a program free +software and requiring all modified and extended versions of the +program to be free software as well. +

    + +

    +The simplest way to make a program free is to put it in the +public +domain, uncopyrighted. This allows people to share the program +and their improvements, if they are so minded. But it also allows +uncooperative people to convert the program into +proprietary +software. They can make changes, many or few, and distribute the +result as a proprietary product. People who receive the program in +that modified form do not have the freedom that the original author +gave them; the middleman has stripped it away. +

    + +

    +In the GNU project, our aim is +to give all users the freedom to redistribute and change GNU +software. If middlemen could strip off the freedom, we might have +many users, but those users would not have freedom. So instead of +putting GNU software in the public domain, we “copyleft” +it. Copyleft says that anyone who redistributes the software, with or +without changes, must pass along the freedom to further copy and +change it. Copyleft guarantees that every user has freedom. +

    + +

    +Copyleft also provides an +incentive +for other programmers to add to free software. +Important free programs such as the GNU C++ compiler exist +only because of this. +

    + +

    +Copyleft also helps programmers who want to contribute +improvements to +free software get permission to +do that. These programmers often work for companies or universities +that would do almost anything to get more money. A programmer may +want to contribute her changes to the community, but her employer may +want to turn the changes into a proprietary software product. +

    + +

    +When we explain to the employer that it is illegal to distribute the +improved version except as free software, the employer usually decides +to release it as free software rather than throw it away. +

    + +

    +To copyleft a program, we first state that it is copyrighted; then +we add distribution terms, which are a legal instrument that gives +everyone the rights to use, modify, and redistribute the program's +code or any program derived from it but only if the +distribution terms are unchanged. Thus, the code and the freedoms +become legally inseparable. +

    + +

    +Proprietary software developers use copyright to take away the users' +freedom; we use copyright to guarantee their freedom. That's why we +reverse the name, changing “copyright” into +“copyleft”. +

    + +

    +Copyleft is a general concept; there are many ways to fill in the +details. In the GNU Project, the specific distribution terms that we +use are contained in the GNU General Public License, the GNU Lesser +General Public License and the GNU Free Documentation License. +

    + +

    +The appropriate license is included in many manuals and in each GNU +source code distribution. +

    + +

    +The GNU GPL is designed so that you can easily apply it to your own +program if you are the copyright holder. You don't have to modify the +GNU GPL to do this, just add notices to your program which refer +properly to the GNU GPL. Please note that you must use the +entire text of the GPL, if you use it. It is an integral whole, and +partial copies are not permitted. (Likewise for the LGPL, AGPL, and FDL.) +

    + +

    +Using the same distribution terms for many different programs makes it +easy to copy code between various different programs. Since they all +have the same distribution terms, there is no need to think about +whether the terms are compatible. The Lesser GPL includes a +provision that lets you alter the distribution terms to the ordinary +GPL, so that you can copy code into another program covered by the GPL. +

    + +

    Licenses for Other Types of Works

    + +

    +We believe that published software and documentation should be +free software and free documentation. +We recommend making all sorts of educational and reference works free +also, using free documentation licenses such as the +GNU Free Documentation License (GNU FDL). +

    + +

    For essays of opinion and scientific papers, we recommend +either the Creative +Commons Attribution-NoDerivs 3.0 United States License, or the +simple “verbatim copying only” license stated above.

    + +

    +We don't take the position that artistic or entertainment works must +be free, but if you want to make one free, we recommend +the Free Art +License.

    + +
    + + +
    + + + +
    + +

    The Free Software +Foundation is the principal organizational sponsor of the GNU Operating System. Our +mission is to preserve, protect and promote the freedom to use, study, +copy, modify, and redistribute computer software, and to defend the +rights of Free Software users. Support GNU and the FSF by buying manuals and gear, joining the FSF as an associate +member or by making a +donation, either directly to the FSF +or via Flattr.

    + +

    back to top

    + + + + +
    + + +
    + + + + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    Copyright © 2012-2013 + OWASP. + All Rights Reserved. + +
    + + + +
    +
    + + diff --git a/dependency-check-jenkins/project-info.html b/dependency-check-jenkins/project-info.html new file mode 100644 index 000000000..3ea8a9051 --- /dev/null +++ b/dependency-check-jenkins/project-info.html @@ -0,0 +1,178 @@ + + + + + + + + + dependency-check-jenkins - Project Information + + + + + + + + + + + + + + + + + + + + + Fork me on GitHub + + + + + +
    + + + + + +
    +
    + +
    + + +
    + +
    +

    Project Information

    +

    This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by Maven on behalf of the project.

    +
    +

    Overview

    +
    + + + + + + + + + + + +
    DocumentDescription
    AboutThis plug-in can independently execute a Dependency-Check analysis and visualize the results.
    Project SummaryThis document lists other related information of this project
    Project LicenseThis is a link to the definitions of project licenses.
    + + + + +
    + +
    +
    +
    Copyright © 2012-2013 + OWASP. + All Rights Reserved. + +
    + + + +
    +
    + + diff --git a/dependency-check-jenkins/project-summary.html b/dependency-check-jenkins/project-summary.html new file mode 100644 index 000000000..c72760e8d --- /dev/null +++ b/dependency-check-jenkins/project-summary.html @@ -0,0 +1,210 @@ + + + + + + + + + dependency-check-jenkins - Project Summary + + + + + + + + + + + + + + + + + + + + + Fork me on GitHub + + + + + +
    + + + + + +
    +
    + +
    + + +
    + +
    +

    Project Summary

    +
    +

    Project Information

    + + + + + + + + + + + + +
    FieldValue
    NameDependency-Check Jenkins Plugin
    DescriptionThis plug-in can independently execute a Dependency-Check analysis and visualize the results.
    Homepagehttp://wiki.jenkins-ci.org/display/JENKINS/OWASP+Dependency-Check+Plugin
    +
    +

    Project Organization

    + + + + + + + + + +
    FieldValue
    NameOWASP
    URLhttp://www.owasp.org
    +
    +

    Build Information

    + + + + + + + + + + + + + + + + + + +
    FieldValue
    GroupIdorg.owasp
    ArtifactIddependency-check-jenkins
    Version1.0.2
    Typejar
    JDK Rev1.6
    +
    +
    +
    + +
    + +
    +
    +
    Copyright © 2012-2013 + OWASP. + All Rights Reserved. + +
    + + + +
    +
    + + diff --git a/dependency-check-maven/apidocs/allclasses-frame.html b/dependency-check-maven/apidocs/allclasses-frame.html index 65657060d..d9e07beb5 100644 --- a/dependency-check-maven/apidocs/allclasses-frame.html +++ b/dependency-check-maven/apidocs/allclasses-frame.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-maven 1.0.1 API) +All Classes (Dependency-Check Maven Plugin 1.0.2 API) - + diff --git a/dependency-check-maven/apidocs/allclasses-noframe.html b/dependency-check-maven/apidocs/allclasses-noframe.html index 5a36995cf..ed44f13a0 100644 --- a/dependency-check-maven/apidocs/allclasses-noframe.html +++ b/dependency-check-maven/apidocs/allclasses-noframe.html @@ -2,13 +2,13 @@ - + -All Classes (dependency-check-maven 1.0.1 API) +All Classes (Dependency-Check Maven Plugin 1.0.2 API) - + diff --git a/dependency-check-maven/apidocs/constant-values.html b/dependency-check-maven/apidocs/constant-values.html index fc3430edf..5313b6325 100644 --- a/dependency-check-maven/apidocs/constant-values.html +++ b/dependency-check-maven/apidocs/constant-values.html @@ -2,13 +2,13 @@ - + -Constant Field Values (dependency-check-maven 1.0.1 API) +Constant Field Values (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ Constant Field Values (dependency-check-maven 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Constant Field Values (dependency-check-maven 1.0.1 API)"; + parent.document.title="Constant Field Values (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/deprecated-list.html b/dependency-check-maven/apidocs/deprecated-list.html index e3ac723f9..815b7f20e 100644 --- a/dependency-check-maven/apidocs/deprecated-list.html +++ b/dependency-check-maven/apidocs/deprecated-list.html @@ -2,13 +2,13 @@ - + -Deprecated List (dependency-check-maven 1.0.1 API) +Deprecated List (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ Deprecated List (dependency-check-maven 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Deprecated List (dependency-check-maven 1.0.1 API)"; + parent.document.title="Deprecated List (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/help-doc.html b/dependency-check-maven/apidocs/help-doc.html index 528b8ff6f..00467f135 100644 --- a/dependency-check-maven/apidocs/help-doc.html +++ b/dependency-check-maven/apidocs/help-doc.html @@ -2,13 +2,13 @@ - + -API Help (dependency-check-maven 1.0.1 API) +API Help (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ API Help (dependency-check-maven 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="API Help (dependency-check-maven 1.0.1 API)"; + parent.document.title="API Help (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/index-all.html b/dependency-check-maven/apidocs/index-all.html index becea6b78..ea8aa9704 100644 --- a/dependency-check-maven/apidocs/index-all.html +++ b/dependency-check-maven/apidocs/index-all.html @@ -2,13 +2,13 @@ - + -Index (dependency-check-maven 1.0.1 API) +Index (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ Index (dependency-check-maven 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Index (dependency-check-maven 1.0.1 API)"; + parent.document.title="Index (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/index.html b/dependency-check-maven/apidocs/index.html index 688144031..303f175cb 100644 --- a/dependency-check-maven/apidocs/index.html +++ b/dependency-check-maven/apidocs/index.html @@ -2,10 +2,10 @@ - + -dependency-check-maven 1.0.1 API +Dependency-Check Maven Plugin 1.0.2 API diff --git a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/HelpMojo.html b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/HelpMojo.html index d66a69d28..701ed4eb9 100644 --- a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/HelpMojo.html +++ b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/HelpMojo.html @@ -2,13 +2,13 @@ - + -HelpMojo (dependency-check-maven 1.0.1 API) +HelpMojo (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ HelpMojo (dependency-check-maven 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="HelpMojo (dependency-check-maven 1.0.1 API)"; + parent.document.title="HelpMojo (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/DependencyCheckMojo.html b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/DependencyCheckMojo.html index 9f600d0a4..8add9a1c0 100644 --- a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/DependencyCheckMojo.html +++ b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/DependencyCheckMojo.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.maven.DependencyCheckMojo (dependency-check-maven 1.0.1 API) +Uses of Class org.owasp.dependencycheck.maven.DependencyCheckMojo (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.maven.DependencyCheckMojo (dependency-ch function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.maven.DependencyCheckMojo (dependency-check-maven 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.maven.DependencyCheckMojo (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/HelpMojo.html b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/HelpMojo.html index 5b049c583..926da75aa 100644 --- a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/HelpMojo.html +++ b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/class-use/HelpMojo.html @@ -2,13 +2,13 @@ - + -Uses of Class org.owasp.dependencycheck.maven.HelpMojo (dependency-check-maven 1.0.1 API) +Uses of Class org.owasp.dependencycheck.maven.HelpMojo (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Class org.owasp.dependencycheck.maven.HelpMojo (dependency-check-maven 1 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.owasp.dependencycheck.maven.HelpMojo (dependency-check-maven 1.0.1 API)"; + parent.document.title="Uses of Class org.owasp.dependencycheck.maven.HelpMojo (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-frame.html b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-frame.html index 939abcb3c..607c63a42 100644 --- a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-frame.html +++ b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-frame.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.maven (dependency-check-maven 1.0.1 API) +org.owasp.dependencycheck.maven (Dependency-Check Maven Plugin 1.0.2 API) - + diff --git a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-summary.html b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-summary.html index 4306c09ec..3016cb3f5 100644 --- a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-summary.html +++ b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-summary.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.maven (dependency-check-maven 1.0.1 API) +org.owasp.dependencycheck.maven (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.maven (dependency-check-maven 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.maven (dependency-check-maven 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.maven (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-tree.html b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-tree.html index d81000807..50043a5ac 100644 --- a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-tree.html +++ b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-tree.html @@ -2,13 +2,13 @@ - + -org.owasp.dependencycheck.maven Class Hierarchy (dependency-check-maven 1.0.1 API) +org.owasp.dependencycheck.maven Class Hierarchy (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ org.owasp.dependencycheck.maven Class Hierarchy (dependency-check-maven 1.0.1 AP function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.owasp.dependencycheck.maven Class Hierarchy (dependency-check-maven 1.0.1 API)"; + parent.document.title="org.owasp.dependencycheck.maven Class Hierarchy (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-use.html b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-use.html index 2af1c5682..7956bba38 100644 --- a/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-use.html +++ b/dependency-check-maven/apidocs/org/owasp/dependencycheck/maven/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.owasp.dependencycheck.maven (dependency-check-maven 1.0.1 API) +Uses of Package org.owasp.dependencycheck.maven (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ Uses of Package org.owasp.dependencycheck.maven (dependency-check-maven 1.0.1 AP function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.owasp.dependencycheck.maven (dependency-check-maven 1.0.1 API)"; + parent.document.title="Uses of Package org.owasp.dependencycheck.maven (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/apidocs/overview-tree.html b/dependency-check-maven/apidocs/overview-tree.html index b02d29b82..61e4367b4 100644 --- a/dependency-check-maven/apidocs/overview-tree.html +++ b/dependency-check-maven/apidocs/overview-tree.html @@ -2,13 +2,13 @@ - + -Class Hierarchy (dependency-check-maven 1.0.1 API) +Class Hierarchy (Dependency-Check Maven Plugin 1.0.2 API) - + @@ -16,7 +16,7 @@ Class Hierarchy (dependency-check-maven 1.0.1 API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Class Hierarchy (dependency-check-maven 1.0.1 API)"; + parent.document.title="Class Hierarchy (Dependency-Check Maven Plugin 1.0.2 API)"; } } diff --git a/dependency-check-maven/check-mojo.html b/dependency-check-maven/check-mojo.html index 1f91b4916..9a313141b 100644 --- a/dependency-check-maven/check-mojo.html +++ b/dependency-check-maven/check-mojo.html @@ -1,13 +1,13 @@ - + dependency-check-maven - dependency-check:check @@ -55,7 +55,7 @@
  • - +
  • /
  • @@ -69,8 +69,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -150,7 +150,7 @@

    Full name:

    -

    org.owasp:dependency-check-maven:1.0.1:check

    +

    org.owasp:dependency-check-maven:1.0.2:check

    Description:

    diff --git a/dependency-check-maven/checkstyle.html b/dependency-check-maven/checkstyle.html index 09d2d382c..2ef5ac20d 100644 --- a/dependency-check-maven/checkstyle.html +++ b/dependency-check-maven/checkstyle.html @@ -1,13 +1,13 @@ - + dependency-check-maven - Checkstyle Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-maven/checkstyle.rss b/dependency-check-maven/checkstyle.rss index 2cccc7f4a..4f13180c7 100644 --- a/dependency-check-maven/checkstyle.rss +++ b/dependency-check-maven/checkstyle.rss @@ -2,9 +2,9 @@ - dependency-check-maven - Checkstyle report + Dependency-Check Maven Plugin - Checkstyle report http://maven.apache.org - dependency-check-maven - Checkstyle report + Dependency-Check Maven Plugin - Checkstyle report en-us ©2013 OWASP diff --git a/dependency-check-maven/cobertura/frame-summary-org.owasp.dependencycheck.maven.html b/dependency-check-maven/cobertura/frame-summary-org.owasp.dependencycheck.maven.html index 6814a634c..b0a85a7a8 100644 --- a/dependency-check-maven/cobertura/frame-summary-org.owasp.dependencycheck.maven.html +++ b/dependency-check-maven/cobertura/frame-summary-org.owasp.dependencycheck.maven.html @@ -39,6 +39,6 @@ var classTable = new SortableTable(document.getElementById("classResults"), ["String", "Percentage", "Percentage", "FormattedNumber"]); classTable.sort(0); - + diff --git a/dependency-check-maven/cobertura/frame-summary.html b/dependency-check-maven/cobertura/frame-summary.html index 78eabe58a..4ee289b0c 100644 --- a/dependency-check-maven/cobertura/frame-summary.html +++ b/dependency-check-maven/cobertura/frame-summary.html @@ -25,6 +25,6 @@ var packageTable = new SortableTable(document.getElementById("packageResults"), ["String", "Number", "Percentage", "Percentage", "FormattedNumber"]); packageTable.sort(0); - + diff --git a/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.DependencyCheckMojo.html b/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.DependencyCheckMojo.html index 92d93311a..f54777a8b 100644 --- a/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.DependencyCheckMojo.html +++ b/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.DependencyCheckMojo.html @@ -1295,6 +1295,6 @@
     }
    - + diff --git a/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.HelpMojo.html b/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.HelpMojo.html index c915bee2d..8d8e969be 100644 --- a/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.HelpMojo.html +++ b/dependency-check-maven/cobertura/org.owasp.dependencycheck.maven.HelpMojo.html @@ -747,6 +747,6 @@
     }
    - + diff --git a/dependency-check-maven/configuration.html b/dependency-check-maven/configuration.html index 806decb65..126ae9d49 100644 --- a/dependency-check-maven/configuration.html +++ b/dependency-check-maven/configuration.html @@ -1,13 +1,13 @@ - + dependency-check-maven - @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-06
  • |
  • -
  • Version: 1.0.1-SNAPSHOT
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-maven/cpd.html b/dependency-check-maven/cpd.html index 464def790..28c268c7a 100644 --- a/dependency-check-maven/cpd.html +++ b/dependency-check-maven/cpd.html @@ -1,13 +1,13 @@ - + dependency-check-maven - CPD Results @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-maven/dependency-updates-report.html b/dependency-check-maven/dependency-updates-report.html index f24f43134..22926c2bc 100644 --- a/dependency-check-maven/dependency-updates-report.html +++ b/dependency-check-maven/dependency-updates-report.html @@ -1,13 +1,13 @@ - + dependency-check-maven - Dependency Updates Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -360,7 +360,7 @@ org.owasp dependency-check-core -1.0.1 +1.0.2 compile jar @@ -577,7 +577,7 @@ dependency-check-core Current Version -1.0.1 +1.0.2 Scope compile diff --git a/dependency-check-maven/findbugs.html b/dependency-check-maven/findbugs.html index 913fa8141..243c45a5f 100644 --- a/dependency-check-maven/findbugs.html +++ b/dependency-check-maven/findbugs.html @@ -1,13 +1,13 @@ - + dependency-check-maven - FindBugs Bug Detector Report @@ -54,7 +54,7 @@
  • - +
  • /
  • @@ -67,8 +67,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • diff --git a/dependency-check-maven/help-mojo.html b/dependency-check-maven/help-mojo.html index d27687455..5ee8d89bb 100644 --- a/dependency-check-maven/help-mojo.html +++ b/dependency-check-maven/help-mojo.html @@ -1,13 +1,13 @@ - + dependency-check-maven - dependency-check:help @@ -55,7 +55,7 @@
  • - +
  • /
  • @@ -69,8 +69,8 @@ -
  • Last Published: 2013-08-07
  • |
  • -
  • Version: 1.0.1
  • +
  • Last Published: 2013-09-02
  • |
  • +
  • Version: 1.0.2
  • @@ -148,7 +148,7 @@

    Full name:

    -

    org.owasp:dependency-check-maven:1.0.1:help

    +

    org.owasp:dependency-check-maven:1.0.2:help

    Description:

    diff --git a/dependency-check-maven/index.html b/dependency-check-maven/index.html index e198ce288..51ce14811 100644 --- a/dependency-check-maven/index.html +++ b/dependency-check-maven/index.html @@ -1,15 +1,15 @@ - + - dependency-check-maven - About + dependency-check-jenkins - @@ -42,7 +42,7 @@ @@ -80,22 +80,7 @@ - -
  • - - - - Project Reports -
  • @@ -160,9 +138,19 @@
    -
    -

    About dependency-check-maven

    -

    Dependency-Check-Maven is a Maven Plugin that attempts to detect publicly disclosed vulnerabilities contained within project dependencies. It does this by determining if there is a Common Platform Enumeration (CPE) identifier for a given dependency. If found, it will generate a report linking to the associated CVE entries.

    +

    Dependency-Check Jenkins Plugin

    +

    The Dependency-Check Jenkins Plugin features the ability to perform a dependency analysis build and later view results post build. The plugin is built using analysis-core and features many of the same features that Jenkins static analysis plugins offer, including thresholds, charts and the ability to view vulnerability information should a dependency have one identified.

    +

    The main repository is located at jenkins-cli/dependency-check-jenkins.

    +

    The main site for documentation is located at OWASP Dependency-Check-Jenkins.

    +

    More information can be found on the wiki.

    + +
    +

    Copyright & License

    +

    Dependency-Check Jenkins Plugin is Copyright (c) 2013 Steve Springett. All Rights Reserved.

    +

    Permission to modify and redistribute is granted under the terms of the GPLv3 license. See the LICENSE.txt file for the full license.

    @@ -171,7 +159,7 @@