diff --git a/Core/src/org/sleuthkit/autopsy/timeline/EventsModel.java b/Core/src/org/sleuthkit/autopsy/timeline/EventsModel.java index f80eef206b4f5b56191c6023926acbef8da19ca7..b85f43bab9e0922b69f5251756acaa63fe78443c 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/EventsModel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/EventsModel.java @@ -55,6 +55,7 @@ import org.sleuthkit.autopsy.timeline.events.TagsDeletedEvent; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.FilterState; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; +import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.SqlFilterState; import org.sleuthkit.autopsy.timeline.utils.CacheLoaderImpl; import org.sleuthkit.autopsy.timeline.utils.FilterUtils; import org.sleuthkit.autopsy.timeline.zooming.EventsModelParams; @@ -222,8 +223,7 @@ synchronized private void populateDataSourcesCache() throws TskCoreException { * @param rootFilterState A root filter state object. */ synchronized void addDataSourceFilters(RootFilterState rootFilterState) { - DataSourcesFilter dataSourcesFilter = rootFilterState.getDataSourcesFilterState().getFilter(); - datasourceIDsToNamesMap.entrySet().forEach(entry -> dataSourcesFilter.addSubFilter(newDataSourceFilter(entry))); + datasourceIDsToNamesMap.entrySet().forEach(entry -> rootFilterState.getDataSourcesFilterState().addSubFilterState(new SqlFilterState<>(newDataSourceFilter(entry)))); } /** diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java index 39506554ac9efa73bfceb8e8286d38adc59c0f3d..a834ccd0f6a8633ea5f6bc331602f08d1a9187f8 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java @@ -588,7 +588,7 @@ private void refreshTimeUI() { long startMillis = filteredEvents.getTimeRange().getStartMillis(); long endMillis = filteredEvents.getTimeRange().getEndMillis(); - if (minTime > 0 && maxTime > minTime) { + if ( maxTime > minTime) { Platform.runLater(() -> { startPicker.localDateTimeProperty().removeListener(startListener); endPicker.localDateTimeProperty().removeListener(endListener); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java index 6884d275a808f0bd5fa867e28bcbf1898838f5a8..f7e628f698ccce475ff102459bde05607006341e 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java @@ -110,7 +110,7 @@ private void disableSubFiltersIfNotActive() { * @param newSubFilterState The new filter state to be added as a subfilter * state. */ - protected void addSubFilterState(FilterState< ? extends SubFilterType> newSubFilterState) { + public void addSubFilterState(FilterState< ? extends SubFilterType> newSubFilterState) { SubFilterType filter = newSubFilterState.getFilter(); if (getSubFilterStates().stream().map(FilterState::getFilter).noneMatch(filter::equals)) { diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java index 7d418881217777bf638e16cd8f3447011b1f7032..1acfc4f25382c414580dd6c705db39bdb9fdfd1d 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java @@ -283,7 +283,9 @@ void processCaches() { return; } - processCacheFolder(indexFile); + if (indexFile.getSize() > 0) { + processCacheFolder(indexFile); + } } } catch (TskCoreException ex) { @@ -1039,6 +1041,9 @@ void extract() throws TskCoreException, IngestModuleException { this.data = new byte [length]; ByteBuffer buf = cacheFileCopy.getByteBuffer(); int dataOffset = DATAFILE_HDR_SIZE + cacheAddress.getStartBlock() * cacheAddress.getBlockSize(); + if (dataOffset > buf.capacity()) { + return; + } buf.position(dataOffset); buf.get(data, 0, length);