From 814a61f4c8449b3647cce51568e0f2990eca2e84 Mon Sep 17 00:00:00 2001 From: Raman Date: Mon, 11 Mar 2019 14:19:29 -0400 Subject: [PATCH 1/2] 4786: Handle incorrectly written HTML files. --- .../autopsy/contentviewers/HtmlViewer.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java index ff22d952e7..9f9a2f0842 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java @@ -23,6 +23,7 @@ import java.awt.Cursor; import java.util.Arrays; import java.util.List; import java.util.logging.Level; +import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.AbstractFile; @@ -56,6 +57,9 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer { * * @return The text content of the file. */ + @NbBundle.Messages({ + "HtmlViewer_file_error=This file is missing or unreadable.", + }) private String getHtmlText(AbstractFile abstractFile) { try { int fileSize = (int) abstractFile.getSize(); @@ -65,9 +69,8 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer { } catch (TskCoreException ex) { logger.log(Level.SEVERE, String.format("Unable to read from file '%s' (id=%d).", abstractFile.getName(), abstractFile.getId()), ex); + return String.format("

%s

", Bundle.HtmlViewer_file_error()); } - - return null; } /** @@ -109,10 +112,18 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer { return Arrays.asList(SUPPORTED_MIMETYPES); } + @NbBundle.Messages({ + "HtmlViewer_error=This file is not properly formed HTML text that can be displayed.", + }) @Override public void setFile(AbstractFile file) { WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - htmlPanel.setHtmlText(getHtmlText(file)); + try { + htmlPanel.setHtmlText(getHtmlText(file)); + } + catch (Exception ex) { + htmlPanel.setHtmlText(Bundle.HtmlViewer_error()); + } WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } From dd621c54a1e2e4b65ddb8d4728542c55a545f2a7 Mon Sep 17 00:00:00 2001 From: Raman Date: Tue, 12 Mar 2019 17:36:24 -0400 Subject: [PATCH 2/2] Fixed malformed HTML handling in case of Show Images button toggling. --- .../contentviewers/Bundle.properties-MERGED | 2 ++ .../autopsy/contentviewers/HtmlPanel.java | 24 +++++++++++-------- .../autopsy/contentviewers/HtmlViewer.java | 10 +------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED index 3efcade0f5..63850f7d66 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED @@ -32,8 +32,10 @@ GstVideoPanel.progress.buffering=Buffering... GstVideoPanel.progressLabel.bufferingErr=Error buffering file GstVideoPanel.progress.infoLabel.updateErr=Error updating video progress: {0} GstVideoPanel.ExtractMedia.progress.buffering=Buffering {0} +Html_text_display_error=The HTML text cannot be displayed, it may not be correctly formed HTML. HtmlPanel_showImagesToggleButton_hide=Hide Images HtmlPanel_showImagesToggleButton_show=Show Images +HtmlViewer_file_error=This file is missing or unreadable. MediaFileViewer.AccessibleContext.accessibleDescription= MediaFileViewer.title=Media MediaFileViewer.toolTip=Displays supported multimedia files (images, videos, audio) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlPanel.java b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlPanel.java index 1699536c94..31731c006f 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlPanel.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlPanel.java @@ -92,20 +92,24 @@ final class HtmlPanel extends javax.swing.JPanel { */ @Messages({ "HtmlPanel_showImagesToggleButton_show=Show Images", - "HtmlPanel_showImagesToggleButton_hide=Hide Images" + "HtmlPanel_showImagesToggleButton_hide=Hide Images", + "Html_text_display_error=The HTML text cannot be displayed, it may not be correctly formed HTML.", }) private void refresh() { if (false == htmlText.isEmpty()) { - if (showImagesToggleButton.isSelected()) { - showImagesToggleButton.setText(Bundle.HtmlPanel_showImagesToggleButton_hide()); - this.htmlbodyTextPane.setText(wrapInHtmlBody(htmlText)); - } else { - showImagesToggleButton.setText(Bundle.HtmlPanel_showImagesToggleButton_show()); - this.htmlbodyTextPane.setText(wrapInHtmlBody(cleanseHTML(htmlText))); + try { + if (showImagesToggleButton.isSelected()) { + showImagesToggleButton.setText(Bundle.HtmlPanel_showImagesToggleButton_hide()); + this.htmlbodyTextPane.setText(wrapInHtmlBody(htmlText)); + } else { + showImagesToggleButton.setText(Bundle.HtmlPanel_showImagesToggleButton_show()); + this.htmlbodyTextPane.setText(wrapInHtmlBody(cleanseHTML(htmlText))); + } + showImagesToggleButton.setEnabled(true); + htmlbodyTextPane.setCaretPosition(0); + } catch(Exception ex) { + this.htmlbodyTextPane.setText(wrapInHtmlBody(Bundle.Html_text_display_error())); } - - htmlbodyTextPane.setCaretPosition(0); - showImagesToggleButton.setEnabled(true); } } diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java index 9f9a2f0842..07e6e4cb5a 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/HtmlViewer.java @@ -112,18 +112,10 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer { return Arrays.asList(SUPPORTED_MIMETYPES); } - @NbBundle.Messages({ - "HtmlViewer_error=This file is not properly formed HTML text that can be displayed.", - }) @Override public void setFile(AbstractFile file) { WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - try { - htmlPanel.setHtmlText(getHtmlText(file)); - } - catch (Exception ex) { - htmlPanel.setHtmlText(Bundle.HtmlViewer_error()); - } + htmlPanel.setHtmlText(getHtmlText(file)); WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); }