diff --git a/dependency-check-core/pom.xml b/dependency-check-core/pom.xml
index ab6fce44a..f77e3b9b4 100644
--- a/dependency-check-core/pom.xml
+++ b/dependency-check-core/pom.xml
@@ -440,8 +440,8 @@ Copyright (c) 2012 Jeremy Long. All Rights Reserved.
h2
- org.json
- json
+ org.glassfish
+ javax.json
org.jsoup
diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/NodePackageAnalyzer.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/NodePackageAnalyzer.java
index f9601319f..d489d97c0 100644
--- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/NodePackageAnalyzer.java
+++ b/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/NodePackageAnalyzer.java
@@ -18,8 +18,6 @@
package org.owasp.dependencycheck.analyzer;
import org.apache.commons.io.FileUtils;
-import org.json.JSONException;
-import org.json.JSONObject;
import org.owasp.dependencycheck.Engine;
import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
import org.owasp.dependencycheck.dependency.Confidence;
@@ -30,6 +28,7 @@ import org.owasp.dependencycheck.utils.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.json.*;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
@@ -113,22 +112,23 @@ public class NodePackageAnalyzer extends AbstractFileTypeAnalyzer {
protected void analyzeFileType(Dependency dependency, Engine engine)
throws AnalysisException {
final File file = dependency.getActualFile();
- String contents;
+ JsonReader jsonReader;
try {
- contents = FileUtils.readFileToString(file).trim();
+ jsonReader = Json.createReader(FileUtils.openInputStream(file));
} catch (IOException e) {
throw new AnalysisException(
"Problem occurred while reading dependency file.", e);
}
try {
- JSONObject json = new JSONObject(contents);
+ JsonObject json = jsonReader.readObject();
final EvidenceCollection productEvidence = dependency.getProductEvidence();
final EvidenceCollection vendorEvidence = dependency.getVendorEvidence();
- if (json.has("name")) {
+ if (json.containsKey("name")) {
Object value = json.get("name");
- if (value instanceof String) {
- productEvidence.addEvidence(PACKAGE_JSON, "name", (String) value, Confidence.HIGHEST);
- vendorEvidence.addEvidence(PACKAGE_JSON, "name_project", String.format("%s_project", value), Confidence.LOW);
+ if (value instanceof JsonString) {
+ String valueString = ((JsonString) value).getString();
+ productEvidence.addEvidence(PACKAGE_JSON, "name", valueString, Confidence.HIGHEST);
+ vendorEvidence.addEvidence(PACKAGE_JSON, "name_project", String.format("%s_project", valueString), Confidence.LOW);
} else {
LOGGER.warn("JSON value not string as expected: %s", value);
}
@@ -137,24 +137,26 @@ public class NodePackageAnalyzer extends AbstractFileTypeAnalyzer {
addToEvidence(json, vendorEvidence, "author");
addToEvidence(json, dependency.getVersionEvidence(), "version");
dependency.setDisplayFileName(String.format("%s/%s", file.getParentFile().getName(), file.getName()));
- } catch (JSONException e) {
+ } catch (JsonException e) {
LOGGER.warn("Failed to parse package.json file.", e);
+ } finally {
+ jsonReader.close();
}
}
- private void addToEvidence(JSONObject json, EvidenceCollection collection, String key) {
- if (json.has(key)) {
+ private void addToEvidence(JsonObject json, EvidenceCollection collection, String key) {
+ if (json.containsKey(key)) {
Object value = json.get(key);
- if (value instanceof String) {
- collection.addEvidence(PACKAGE_JSON, key, (String) value, Confidence.HIGHEST);
- } else if (value instanceof JSONObject) {
- final JSONObject jsonObject = (JSONObject) value;
+ if (value instanceof JsonString) {
+ collection.addEvidence(PACKAGE_JSON, key, ((JsonString) value).getString(), Confidence.HIGHEST);
+ } else if (value instanceof JsonObject) {
+ final JsonObject jsonObject = (JsonObject) value;
for (String property : jsonObject.keySet()) {
final Object subValue = jsonObject.get(property);
- if (subValue instanceof String) {
+ if (subValue instanceof JsonString) {
collection.addEvidence(PACKAGE_JSON,
String.format("%s.%s", key, property),
- (String) subValue,
+ ((JsonString) subValue).getString(),
Confidence.HIGHEST);
} else {
LOGGER.warn("JSON sub-value not string as expected: %s");
diff --git a/pom.xml b/pom.xml
index 15483ab17..7badae07c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -522,9 +522,9 @@ Copyright (c) 2012 - Jeremy Long
1.7
- org.json
- json
- 20141113
+ org.glassfish
+ javax.json
+ 1.0.4
org.hamcrest