Disallowed commas and semicolons as potential characters in tag names

This commit is contained in:
Sophie Mori 2016-08-26 10:13:28 -04:00
parent d06aab3532
commit ac1b28ebe3
5 changed files with 36 additions and 22 deletions

View File

@ -42,7 +42,7 @@ GetTagNameDialog.createTag=Create Tag
GetTagNameDialog.cancelName=Cancel
GetTagNameDialog.mustSupplyTtagName.msg=Must supply a tag name to continue.
GetTagNameDialog.tagNameErr=Tag Name
GetTagNameDialog.illegalChars.msg=The tag name contains illegal characters.\nCannot contain any of the following symbols\: \\ \: * ? " < > |
GetTagNameDialog.illegalChars.msg=The tag name contains illegal characters.\nCannot contain any of the following symbols\: \\ \: * ? " < > | , ;
GetTagNameDialog.illegalCharsErr=Illegal Characters
GetTagNameDialog.unableToAddTagNameToCase.msg=Unable to add the {0} tag name to the case.
GetTagNameDialog.taggingErr=Tagging Error

View File

@ -122,17 +122,6 @@ public class GetTagNameDialog extends JDialog {
setVisible(true);
}
private boolean containsIllegalCharacters(String content) {
return (content.contains("\\")
|| content.contains(":")
|| content.contains("*")
|| content.contains("?")
|| content.contains("\"")
|| content.contains("<")
|| content.contains(">")
|| content.contains("|"));
}
private class TagsTableModel extends AbstractTableModel {
private final ArrayList<TagName> tagNames = new ArrayList<>();
@ -305,7 +294,7 @@ public class GetTagNameDialog extends JDialog {
"GetTagNameDialog.mustSupplyTtagName.msg"),
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.tagNameErr"),
JOptionPane.ERROR_MESSAGE);
} else if (containsIllegalCharacters(tagDisplayName)) {
} else if (TagsManager.containsIllegalCharacters(tagDisplayName)) {
JOptionPane.showMessageDialog(null,
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.illegalChars.msg"),
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.illegalCharsErr"),

View File

@ -10,7 +10,7 @@ TagsManager.addBlackboardArtifactTag.noCaseWarning=Failed to publish new blackbo
TagsManager.deleteBlackboardArtifactTag.noCaseWarning=Failed to publish blackboard artifact tag deleted event. There is no case open.
Blackboard.unableToIndexArtifact.error.msg=Unable to index blackboard artifact {0}
TagsManagerOptionsPanel.addTagNameButton.empty=Tag name text is empty.
TagsManagerOptionsPanel.addTagNameButton.containCommaSemicolon=Tag name may not contain commas or semicolons.
TagsManagerOptionsPanel.addTagNameButton.containInvalidCharacter=Tag name may not contain any of the following symbols\: \\ \: * ? " < > | , ;
TagsManagerOptionsPanel.addTagNameButton.alreadyExists=Tag name already exists.
TagsManagerOptionsPanel.jLabel1.text=Autopsy keeps a list of the tag names you have created in the past. Add more or delete them here.
TagsManagerOptionsPanel.tagNamesListLabel.text=Your tag names:

View File

@ -143,7 +143,7 @@ public class TagsManager implements Closeable {
* @return A TagName data transfer object (DTO) representing the new tag
* name.
*
* @throws TagNameAlreadyExistsException If the tag name would be a
* @throws TagNameAlreadyExistsException If the tag name would be a
* duplicate.
* @throws TskCoreException If there is an error adding the tag
* to the case database.
@ -164,7 +164,7 @@ public class TagsManager implements Closeable {
* @return A TagName data transfer object (DTO) representing the new tag
* name.
*
* @throws TagNameAlreadyExistsException If the tag name would be a
* @throws TagNameAlreadyExistsException If the tag name would be a
* duplicate.
* @throws TskCoreException If there is an error adding the tag
* to the case database.
@ -186,7 +186,7 @@ public class TagsManager implements Closeable {
* @return A TagName data transfer object (DTO) representing the new tag
* name.
*
* @throws TagNameAlreadyExistsException If the tag name would be a
* @throws TagNameAlreadyExistsException If the tag name would be a
* duplicate.
* @throws TskCoreException If there is an error adding the tag
* to the case database.
@ -195,6 +195,7 @@ public class TagsManager implements Closeable {
if (null == caseDb) {
throw new TskCoreException("Tags manager has been closed");
}
lazyLoadExistingTagNames();
//The tag name already exists in the database, user either
@ -723,6 +724,26 @@ public class TagsManager implements Closeable {
ModuleSettings.setConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY, setting);
}
/**
* Returns true if the tag display name contains an illegal character. Used
* after a tag display name is retrieved from user input.
*
* @param content Display name of the tag being added.
* @return boolean indicating whether the name has an invalid character.
*/
public static boolean containsIllegalCharacters(String content) {
return (content.contains("\\")
|| content.contains(":")
|| content.contains("*")
|| content.contains("?")
|| content.contains("\"")
|| content.contains("<")
|| content.contains(">")
|| content.contains("|")
|| content.contains(",")
|| content.contains(";"));
}
/**
* Exception thrown if there is an attempt to add a duplicate tag name.
*/
@ -733,6 +754,7 @@ public class TagsManager implements Closeable {
/**
* Exception thrown if there is an attempt to delete a nonexistent tag name.
* Unused for current implementation of tag name deletion.
*/
public static class TagNameDoesNotExistException extends Exception {

View File

@ -14,6 +14,7 @@ import java.util.TreeSet;
import java.util.logging.Level;
import javax.swing.DefaultListModel;
import org.netbeans.spi.options.OptionsPanelController;
import org.openide.util.Exceptions;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.corecomponents.OptionsPanel;
@ -49,7 +50,7 @@ public class TagsManagerOptionsPanel extends javax.swing.JPanel implements Optio
tagNamesListModel = new DefaultListModel<>();
tagNamesList.setModel(tagNamesListModel);
tagNames = getTagNamesFromTagsSettings();
newDisplayNames = new ArrayList<String>();
newDisplayNames = new ArrayList<>();
userTagNameTextField.setText("");
tagNameErrLabel.setText("");
@ -240,8 +241,8 @@ public class TagsManagerOptionsPanel extends javax.swing.JPanel implements Optio
tagNameErrLabel.setText(NbBundle.getMessage(TagsManagerOptionsPanel.class, "TagsManagerOptionsPanel.addTagNameButton.empty"));
return;
}
if (newDisplayName.contains(",") || newDisplayName.contains(";")) {
tagNameErrLabel.setText(NbBundle.getMessage(TagsManagerOptionsPanel.class, "TagsManagerOptionsPanel.addTagNameButton.containCommaSemicolon"));
if (TagsManager.containsIllegalCharacters(newDisplayName)) {
tagNameErrLabel.setText(NbBundle.getMessage(TagsManagerOptionsPanel.class, "TagsManagerOptionsPanel.addTagNameButton.containInvalidCharacter"));
return;
}
@ -281,6 +282,8 @@ public class TagsManagerOptionsPanel extends javax.swing.JPanel implements Optio
tagNamesList.setSelectedIndex(0);
}
newDisplayNames.remove(tagName.getDisplayName());
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
}
}//GEN-LAST:event_deleteTagNameButtonActionPerformed
@ -409,8 +412,8 @@ public class TagsManagerOptionsPanel extends javax.swing.JPanel implements Optio
}
/**
* @return A String with of the tag name in the format that is used by
* the properties file.
* @return A string representation of the tag name in the format that is
* used by the properties file.
*/
public String toSettingsFormat() {
return displayName + "," + description + "," + colorName;