From b281d6c034eef9cf741bd933df95b98364a45d23 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Wed, 26 Jan 2022 11:36:03 -0500 Subject: [PATCH] Fixed NPE --- .../autopsy/datamodel/accounts/Accounts.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java index 2895402337..7ed1d3b290 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java @@ -955,12 +955,17 @@ final public class Accounts implements AutopsyVisitableItem { try (SleuthkitCase.CaseDbQuery results = skCase.executeQuery(query); ResultSet resultSet = results.getResultSet();) { while (resultSet.next()) { - list.add(new FileWithCCN( - resultSet.getLong("obj_id"), //NON-NLS - resultSet.getString("solr_document_id"), //NON-NLS - unGroupConcat(resultSet.getString("artifact_IDs"), Long::valueOf), //NON-NLS - resultSet.getLong("hits"), //NON-NLS - new HashSet<>(unGroupConcat(resultSet.getString("review_status_ids"), reviewStatusID -> BlackboardArtifact.ReviewStatus.withID(Integer.valueOf(reviewStatusID)))))); //NON-NLS + long file_id = resultSet.getLong("obj_id"); + AbstractFile abstractFileById = skCase.getAbstractFileById(file_id); + if(abstractFileById != null) { + list.add(new FileWithCCN( + abstractFileById, + file_id, //NON-NLS + resultSet.getString("solr_document_id"), //NON-NLS + unGroupConcat(resultSet.getString("artifact_IDs"), Long::valueOf), //NON-NLS + resultSet.getLong("hits"), //NON-NLS + new HashSet<>(unGroupConcat(resultSet.getString("review_status_ids"), reviewStatusID -> BlackboardArtifact.ReviewStatus.withID(Integer.valueOf(reviewStatusID)))))); //NON-NLS + } } } catch (TskCoreException | SQLException ex) { LOGGER.log(Level.SEVERE, "Error querying for files with ccn hits.", ex); //NON-NLS @@ -977,7 +982,7 @@ final public class Accounts implements AutopsyVisitableItem { for (long artId : key.artifactIDs) { lookupContents.add(skCase.getBlackboardArtifact(artId)); } - AbstractFile abstractFileById = skCase.getAbstractFileById(key.getObjID()); + AbstractFile abstractFileById = key.getFile(); lookupContents.add(abstractFileById); return new Node[]{new FileWithCCNNode(key, abstractFileById, lookupContents.toArray())}; } catch (TskCoreException ex) { @@ -1314,13 +1319,15 @@ final public class Accounts implements AutopsyVisitableItem { private final List artifactIDs; private final long hits; private final Set statuses; + private final AbstractFile file; - private FileWithCCN(long objID, String solrDocID, List artifactIDs, long hits, Set statuses) { + private FileWithCCN(AbstractFile file, long objID, String solrDocID, List artifactIDs, long hits, Set statuses) { this.objID = objID; this.keywordSearchDocID = solrDocID; this.artifactIDs = artifactIDs; this.hits = hits; this.statuses = statuses; + this.file = file; } /** @@ -1368,6 +1375,10 @@ final public class Accounts implements AutopsyVisitableItem { public Set getStatuses() { return Collections.unmodifiableSet(statuses); } + + AbstractFile getFile() { + return file; + } } /**