diff --git a/bindings/java/src/org/sleuthkit/datamodel/TimelineEventArtifactTypeImpl.java b/bindings/java/src/org/sleuthkit/datamodel/TimelineEventArtifactTypeImpl.java index bee1ca8845cca7ee63e1849c06ba9c1439f2ac1a..fef5c141e5981d053268bcab4c9fa2343a540a61 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/TimelineEventArtifactTypeImpl.java +++ b/bindings/java/src/org/sleuthkit/datamodel/TimelineEventArtifactTypeImpl.java @@ -39,6 +39,10 @@ class TimelineEventArtifactTypeImpl extends TimelineEventTypeImpl { private final TSKCoreCheckedFunction<BlackboardArtifact, String> medExtractor; private final TSKCoreCheckedFunction<BlackboardArtifact, String> shortExtractor; private final TSKCoreCheckedFunction<BlackboardArtifact, TimelineEventDescriptionWithTime> artifactParsingFunction; + + private static final int MAX_SHORT_DESCRIPTION_LENGTH = 500; + private static final int MAX_MED_DESCRIPTION_LENGTH = 500; + private static final int MAX_FULL_DESCRIPTION_LENGTH = 1024; TimelineEventArtifactTypeImpl(int typeID, String displayName, TimelineEventType superType, @@ -130,8 +134,20 @@ TimelineEventDescriptionWithTime makeEventDescription(BlackboardArtifact artifac //combine descriptions in standard way String shortDescription = extractShortDescription(artifact); + if (shortDescription.length() > MAX_SHORT_DESCRIPTION_LENGTH) { + shortDescription = shortDescription.substring(0, MAX_SHORT_DESCRIPTION_LENGTH); + } + String medDescription = shortDescription + " : " + extractMedDescription(artifact); + if (medDescription.length() > MAX_MED_DESCRIPTION_LENGTH) { + medDescription = medDescription.substring(0, MAX_MED_DESCRIPTION_LENGTH); + } + String fullDescription = medDescription + " : " + extractFullDescription(artifact); + if (fullDescription.length() > MAX_FULL_DESCRIPTION_LENGTH) { + fullDescription = fullDescription.substring(0, MAX_FULL_DESCRIPTION_LENGTH); + } + return new TimelineEventDescriptionWithTime(timeAttribute.getValueLong(), shortDescription, medDescription, fullDescription); } diff --git a/bindings/java/src/org/sleuthkit/datamodel/TimelineEventType.java b/bindings/java/src/org/sleuthkit/datamodel/TimelineEventType.java index 4d1563b7957a805defa02c5824541ce57353a9d9..6339eb2c0d146d79315c95c4bdb4d04069612280 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/TimelineEventType.java +++ b/bindings/java/src/org/sleuthkit/datamodel/TimelineEventType.java @@ -46,6 +46,7 @@ public interface TimelineEventType extends Comparable<TimelineEventType> { static final int EMAIL_FULL_DESCRIPTION_LENGTH_MAX = 150; + static final int EMAIL_TO_FROM_LENGTH_MAX = 75; String getDisplayName(); @@ -298,9 +299,15 @@ public SortedSet<TimelineEventType> getSubTypes() { new BlackboardArtifact.Type(TSK_EMAIL_MSG), new Type(TSK_DATETIME_SENT), artf -> { - final BlackboardAttribute emailFrom = getAttributeSafe(artf, new Type(TSK_EMAIL_FROM)); - final BlackboardAttribute emailTo = getAttributeSafe(artf, new Type(TSK_EMAIL_TO)); - return stringValueOf(emailFrom) + " to " + stringValueOf(emailTo); // NON-NLS + String emailFrom = stringValueOf(getAttributeSafe(artf, new Type(TSK_EMAIL_FROM))); + if (emailFrom.length() > EMAIL_TO_FROM_LENGTH_MAX) { + emailFrom = emailFrom.substring(0, EMAIL_TO_FROM_LENGTH_MAX); + } + String emailTo = stringValueOf(getAttributeSafe(artf, new Type(TSK_EMAIL_TO))); + if (emailTo.length() > EMAIL_TO_FROM_LENGTH_MAX) { + emailTo = emailTo.substring(0, EMAIL_TO_FROM_LENGTH_MAX); + } + return emailFrom + " to " + emailTo; // NON-NLS }, new AttributeExtractor(new Type(TSK_SUBJECT)), artf -> {