Returns the full CWE name from the CWE ID.
+ * @param cweId te CWE ID + * @return the full name of the CWE + */ public static String getCweName(String cweId) { if (cweId != null) { - return cwe.get(cweId); + return CWE.get(cweId); } return null; } - } diff --git a/src/main/java/org/codesecure/dependencycheck/data/cwe/CweHandler.java b/src/main/java/org/codesecure/dependencycheck/data/cwe/CweHandler.java index 93218f1d4..7f27bb4ca 100644 --- a/src/main/java/org/codesecure/dependencycheck/data/cwe/CweHandler.java +++ b/src/main/java/org/codesecure/dependencycheck/data/cwe/CweHandler.java @@ -18,16 +18,9 @@ */ package org.codesecure.dependencycheck.data.cwe; -import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import org.codesecure.dependencycheck.dependency.VulnerableSoftware; import org.xml.sax.Attributes; import org.xml.sax.SAXException; -import org.xml.sax.SAXNotSupportedException; import org.xml.sax.helpers.DefaultHandler; /** @@ -37,9 +30,13 @@ import org.xml.sax.helpers.DefaultHandler; */ public class CweHandler extends DefaultHandler { - private HashMapTakes a TokenStream and splits or adds tokens to correctly index version numbers.
+ *Example: "3.0.0.RELEASE" -> "3 3.0 3.0.0 RELEASE 3.0.0.RELEASE".
+ * + * @author Jeremy Long (jeremy.long@gmail.com) + */ +public final class VersionTokenizingFilter extends TokenFilter { + + private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class); + /** + * A collection of tokens to add to the stream. + */ + protected LinkedListDownloads the latest NVD CVE XML file from the web and imports it into
diff --git a/src/main/java/org/codesecure/dependencycheck/dependency/Dependency.java b/src/main/java/org/codesecure/dependencycheck/dependency/Dependency.java
index 5332b2a61..3d9b076e8 100644
--- a/src/main/java/org/codesecure/dependencycheck/dependency/Dependency.java
+++ b/src/main/java/org/codesecure/dependencycheck/dependency/Dependency.java
@@ -23,6 +23,9 @@ import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.codesecure.dependencycheck.utils.Checksum;
@@ -87,7 +90,7 @@ public class Dependency {
productEvidence = new EvidenceCollection();
versionEvidence = new EvidenceCollection();
identifiers = new ArrayList Description: $esc.html($dependency.description)
Dependencies Scanned: $dependencies.size()
+ $esc.html($dependency.FileName) •
#else
- $esc.html($dependency.FileName)
+ $esc.html($dependency.FileName)
#end
#end
Dependencies
+ #set($lnkcnt=0)
#set($cnt=0)
#foreach($dependency in $dependencies)
- $esc.html($dependency.FileName)
+ #set($lnkcnt=$lnkcnt+1)
+ $esc.html($dependency.FileName)
Identifiers
##: $esc.html($cpevalue)
- #elseif ($dependency.getIdentifiers().size()==0)
+ #if ($dependency.getIdentifiers().size()==0)
- #elseif ($dependency.getIdentifiers().size()>0)
+ #else ## ($dependency.getIdentifiers().size()>0)
#foreach($id in $dependency.getIdentifiers())
##yes, we are HTML Encoding the href. this is okay. We can't URL encode as we have to trust the analyzer here...
diff --git a/src/test/java/org/codesecure/dependencycheck/data/cpe/CPEAnalyzerTest.java b/src/test/java/org/codesecure/dependencycheck/data/cpe/CPEAnalyzerTest.java
index 3dc1b6ad6..e94f8f4bc 100644
--- a/src/test/java/org/codesecure/dependencycheck/data/cpe/CPEAnalyzerTest.java
+++ b/src/test/java/org/codesecure/dependencycheck/data/cpe/CPEAnalyzerTest.java
@@ -103,14 +103,25 @@ public class CPEAnalyzerTest extends BaseIndexTestCase {
Dependency spring = new Dependency(fileSpring);
jarAnalyzer.analyze(spring, null);
+ File fileSpring3 = new File(this.getClass().getClassLoader().getResource("spring-core-3.0.0.RELEASE.jar").getPath());
+ Dependency spring3 = new Dependency(fileSpring3);
+ jarAnalyzer.analyze(spring3, null);
+
CPEAnalyzer instance = new CPEAnalyzer();
instance.open();
String expResult = "cpe:/a:apache:struts:2.1.2";
+ String expResultSpring = "cpe:/a:springsource:spring_framework:2.5.5";
+ String expResultSpring3 = "cpe:/a:vmware:springsource_spring_framework:3.0.0";
instance.determineCPE(depends);
instance.determineCPE(spring);
+ instance.determineCPE(spring3);
instance.close();
- assertTrue("Incorrect match", depends.getIdentifiers().size() == 1);
- assertTrue("Incorrect match", depends.getIdentifiers().get(0).getValue().equals(expResult));
+ assertTrue("Incorrect match size - struts", depends.getIdentifiers().size() == 1);
+ assertTrue("Incorrect match - struts", depends.getIdentifiers().get(0).getValue().equals(expResult));
+ assertTrue("Incorrect match size - spring", spring.getIdentifiers().size() == 1);
+ assertTrue("Incorrect match - spring", spring.getIdentifiers().get(0).getValue().equals(expResultSpring));
+ assertTrue("Incorrect match size - spring3 - " + spring3.getIdentifiers().size(), spring3.getIdentifiers().size() >= 9);
+ //assertTrue("Incorrect match - spring3", spring3.getIdentifiers().get(0).getValue().equals(expResultSpring3));
}
diff --git a/src/test/resources/spring-core-3.0.0.RELEASE.jar b/src/test/resources/spring-core-3.0.0.RELEASE.jar
new file mode 100644
index 000000000..50fe09d2f
Binary files /dev/null and b/src/test/resources/spring-core-3.0.0.RELEASE.jar differ