mirror of
https://github.com/ysoftdevs/DependencyCheck.git
synced 2026-03-28 11:52:15 +01:00
improved logging to assist in resoloving issue #503
This commit is contained in:
@@ -69,10 +69,11 @@ public class CveDB {
|
|||||||
private ResourceBundle statementBundle = null;
|
private ResourceBundle statementBundle = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new CveDB object and opens the database connection. Note, the connection must be closed by the caller by calling
|
* Creates a new CveDB object and opens the database connection. Note, the
|
||||||
* the close method.
|
* connection must be closed by the caller by calling the close method.
|
||||||
*
|
*
|
||||||
* @throws DatabaseException thrown if there is an exception opening the database.
|
* @throws DatabaseException thrown if there is an exception opening the
|
||||||
|
* database.
|
||||||
*/
|
*/
|
||||||
public CveDB() throws DatabaseException {
|
public CveDB() throws DatabaseException {
|
||||||
super();
|
super();
|
||||||
@@ -103,9 +104,11 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the database connection. If the database does not exist, it will create a new one.
|
* Opens the database connection. If the database does not exist, it will
|
||||||
|
* create a new one.
|
||||||
*
|
*
|
||||||
* @throws DatabaseException thrown if there is an error opening the database connection
|
* @throws DatabaseException thrown if there is an error opening the
|
||||||
|
* database connection
|
||||||
*/
|
*/
|
||||||
public final void open() throws DatabaseException {
|
public final void open() throws DatabaseException {
|
||||||
if (!isOpen()) {
|
if (!isOpen()) {
|
||||||
@@ -114,7 +117,8 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes the DB4O database. Close should be called on this object when it is done being used.
|
* Closes the DB4O database. Close should be called on this object when it
|
||||||
|
* is done being used.
|
||||||
*/
|
*/
|
||||||
public void close() {
|
public void close() {
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
@@ -165,7 +169,8 @@ public class CveDB {
|
|||||||
super.finalize();
|
super.finalize();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Database properties object containing the 'properties' from the database table.
|
* Database properties object containing the 'properties' from the database
|
||||||
|
* table.
|
||||||
*/
|
*/
|
||||||
private DatabaseProperties databaseProperties;
|
private DatabaseProperties databaseProperties;
|
||||||
|
|
||||||
@@ -179,11 +184,13 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches the CPE entries in the database and retrieves all entries for a given vendor and product combination. The returned
|
* Searches the CPE entries in the database and retrieves all entries for a
|
||||||
* list will include all versions of the product that are registered in the NVD CVE data.
|
* given vendor and product combination. The returned list will include all
|
||||||
|
* versions of the product that are registered in the NVD CVE data.
|
||||||
*
|
*
|
||||||
* @param vendor the identified vendor name of the dependency being analyzed
|
* @param vendor the identified vendor name of the dependency being analyzed
|
||||||
* @param product the identified name of the product of the dependency being analyzed
|
* @param product the identified name of the product of the dependency being
|
||||||
|
* analyzed
|
||||||
* @return a set of vulnerable software
|
* @return a set of vulnerable software
|
||||||
*/
|
*/
|
||||||
public Set<VulnerableSoftware> getCPEs(String vendor, String product) {
|
public Set<VulnerableSoftware> getCPEs(String vendor, String product) {
|
||||||
@@ -215,7 +222,8 @@ public class CveDB {
|
|||||||
* Returns the entire list of vendor/product combinations.
|
* Returns the entire list of vendor/product combinations.
|
||||||
*
|
*
|
||||||
* @return the entire list of vendor/product combinations
|
* @return the entire list of vendor/product combinations
|
||||||
* @throws DatabaseException thrown when there is an error retrieving the data from the DB
|
* @throws DatabaseException thrown when there is an error retrieving the
|
||||||
|
* data from the DB
|
||||||
*/
|
*/
|
||||||
public Set<Pair<String, String>> getVendorProductList() throws DatabaseException {
|
public Set<Pair<String, String>> getVendorProductList() throws DatabaseException {
|
||||||
final Set<Pair<String, String>> data = new HashSet<Pair<String, String>>();
|
final Set<Pair<String, String>> data = new HashSet<Pair<String, String>>();
|
||||||
@@ -438,7 +446,8 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the vulnerability within the database. If the vulnerability does not exist it will be added.
|
* Updates the vulnerability within the database. If the vulnerability does
|
||||||
|
* not exist it will be added.
|
||||||
*
|
*
|
||||||
* @param vuln the vulnerability to add to the database
|
* @param vuln the vulnerability to add to the database
|
||||||
* @throws DatabaseException is thrown if the database
|
* @throws DatabaseException is thrown if the database
|
||||||
@@ -565,12 +574,20 @@ public class CveDB {
|
|||||||
} else {
|
} else {
|
||||||
insertSoftware.setString(3, s.getPreviousVersion());
|
insertSoftware.setString(3, s.getPreviousVersion());
|
||||||
}
|
}
|
||||||
insertSoftware.execute();
|
try {
|
||||||
|
insertSoftware.execute();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
if (ex.getMessage().contains("Duplicate entry")) {
|
||||||
|
final String msg = String.format("Duplicate software key identified in '%s:%s'", vuln.getName(), s.getName());
|
||||||
|
LOGGER.debug(msg, ex);
|
||||||
|
} else {
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
final String msg = String.format("Error updating '%s'", vuln.getName());
|
final String msg = String.format("Error updating '%s'", vuln.getName());
|
||||||
LOGGER.debug("", ex);
|
LOGGER.debug(msg, ex);
|
||||||
throw new DatabaseException(msg, ex);
|
throw new DatabaseException(msg, ex);
|
||||||
} finally {
|
} finally {
|
||||||
DBUtils.closeStatement(selectVulnerabilityId);
|
DBUtils.closeStatement(selectVulnerabilityId);
|
||||||
@@ -623,8 +640,9 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It is possible that orphaned rows may be generated during database updates. This should be called after all updates have
|
* It is possible that orphaned rows may be generated during database
|
||||||
* been completed to ensure orphan entries are removed.
|
* updates. This should be called after all updates have been completed to
|
||||||
|
* ensure orphan entries are removed.
|
||||||
*/
|
*/
|
||||||
public void cleanupDatabase() {
|
public void cleanupDatabase() {
|
||||||
PreparedStatement ps = null;
|
PreparedStatement ps = null;
|
||||||
@@ -642,13 +660,17 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if the given identifiedVersion is affected by the given cpeId and previous version flag. A non-null, non-empty
|
* Determines if the given identifiedVersion is affected by the given cpeId
|
||||||
* string passed to the previous version argument indicates that all previous versions are affected.
|
* and previous version flag. A non-null, non-empty string passed to the
|
||||||
|
* previous version argument indicates that all previous versions are
|
||||||
|
* affected.
|
||||||
*
|
*
|
||||||
* @param vendor the vendor of the dependency being analyzed
|
* @param vendor the vendor of the dependency being analyzed
|
||||||
* @param product the product name of the dependency being analyzed
|
* @param product the product name of the dependency being analyzed
|
||||||
* @param vulnerableSoftware a map of the vulnerable software with a boolean indicating if all previous versions are affected
|
* @param vulnerableSoftware a map of the vulnerable software with a boolean
|
||||||
* @param identifiedVersion the identified version of the dependency being analyzed
|
* indicating if all previous versions are affected
|
||||||
|
* @param identifiedVersion the identified version of the dependency being
|
||||||
|
* analyzed
|
||||||
* @return true if the identified version is affected, otherwise false
|
* @return true if the identified version is affected, otherwise false
|
||||||
*/
|
*/
|
||||||
Entry<String, Boolean> getMatchingSoftware(Map<String, Boolean> vulnerableSoftware, String vendor, String product,
|
Entry<String, Boolean> getMatchingSoftware(Map<String, Boolean> vulnerableSoftware, String vendor, String product,
|
||||||
@@ -715,7 +737,8 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses the version (including revision) from a CPE identifier. If no version is identified then a '-' is returned.
|
* Parses the version (including revision) from a CPE identifier. If no
|
||||||
|
* version is identified then a '-' is returned.
|
||||||
*
|
*
|
||||||
* @param cpeStr a cpe identifier
|
* @param cpeStr a cpe identifier
|
||||||
* @return a dependency version
|
* @return a dependency version
|
||||||
@@ -732,7 +755,8 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a CPE and parses out the version number. If no version is identified then a '-' is returned.
|
* Takes a CPE and parses out the version number. If no version is
|
||||||
|
* identified then a '-' is returned.
|
||||||
*
|
*
|
||||||
* @param cpe a cpe object
|
* @param cpe a cpe object
|
||||||
* @return a dependency version
|
* @return a dependency version
|
||||||
@@ -771,7 +795,8 @@ public class CveDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is only referenced in unused code and will likely break on MySQL if ever used due to the MERGE statement.
|
* This method is only referenced in unused code and will likely break on
|
||||||
|
* MySQL if ever used due to the MERGE statement.
|
||||||
*
|
*
|
||||||
* Merges CPE entries into the database.
|
* Merges CPE entries into the database.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user