From 61d88f8147fcb117aa67d8e269176239e0af4e9b Mon Sep 17 00:00:00 2001 From: chrislee35 Date: Sun, 13 Sep 2015 21:50:14 +0900 Subject: [PATCH] fixed issue #2 and #3, crashes upon missing date in email or missing gpg keys --- .../chrislee/DateBasedMessageEvaluationCallback.java | 10 ++++++++++ src/org/dhs/chrislee/IMAPCrypt.java | 1 + src/org/dhs/chrislee/gnupg/GPGKeyList.java | 2 +- src/org/dhs/chrislee/imapgui/IMAPGui.java | 2 ++ src/org/dhs/chrislee/imapgui/KeySelectorPanel.java | 12 ++++++------ .../dhs/chrislee/imapgui/KeySelectorTableModel.java | 2 ++ 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/org/dhs/chrislee/DateBasedMessageEvaluationCallback.java b/src/org/dhs/chrislee/DateBasedMessageEvaluationCallback.java index c322aa4..d46488b 100644 --- a/src/org/dhs/chrislee/DateBasedMessageEvaluationCallback.java +++ b/src/org/dhs/chrislee/DateBasedMessageEvaluationCallback.java @@ -57,6 +57,16 @@ public void setInvert(boolean invert) { */ public boolean isEncryptableMessage(Message m) throws MessagingException { java.util.Date today = new java.util.Date(); + // What should I do if m.getSentDate() is null? + // (a) set it to the epoch + // (b) set it to current time + // (c) set it to some offset of current time + // (d) set it to OCT 21 2015 04:29 + // (e) return false + // (f) return true ** I'm going with this + if(m.getSentDate() == null) + return (! this.invert); + int daysold = (int)((today.getTime() - m.getSentDate().getTime())/(1000*24*60*60)); if(this.invert) { return ! (daysold >= this.minage && daysold <= this.maxage); diff --git a/src/org/dhs/chrislee/IMAPCrypt.java b/src/org/dhs/chrislee/IMAPCrypt.java index 2fe6168..7ec94f3 100644 --- a/src/org/dhs/chrislee/IMAPCrypt.java +++ b/src/org/dhs/chrislee/IMAPCrypt.java @@ -47,6 +47,7 @@ public class IMAPCrypt { private ArrayList messageEvaluationCallbacks; private boolean verbose; // print debug/connection messages? private static SSLSocketFactory sslSocketFactory = null; + final public static String VERSION = "2.0.3"; final static Logger logger = Logger.getLogger(IMAPCrypt.class); /** diff --git a/src/org/dhs/chrislee/gnupg/GPGKeyList.java b/src/org/dhs/chrislee/gnupg/GPGKeyList.java index 0c51bb6..6c63722 100644 --- a/src/org/dhs/chrislee/gnupg/GPGKeyList.java +++ b/src/org/dhs/chrislee/gnupg/GPGKeyList.java @@ -17,7 +17,7 @@ public void addKeyId(GPGKeyId keyId) { } protected static GPGKeyId[] arrayListToArray(ArrayList ids) { - GPGKeyId[] arr = new GPGKeyId[1]; + GPGKeyId[] arr = new GPGKeyId[ids.size()]; return ids.toArray(arr); } diff --git a/src/org/dhs/chrislee/imapgui/IMAPGui.java b/src/org/dhs/chrislee/imapgui/IMAPGui.java index aec5ddb..40e4dbc 100644 --- a/src/org/dhs/chrislee/imapgui/IMAPGui.java +++ b/src/org/dhs/chrislee/imapgui/IMAPGui.java @@ -64,6 +64,8 @@ public class IMAPGui extends JFrame { */ public IMAPGui() { super(); + + this.setTitle("IMAPCrypt version "+IMAPCrypt.VERSION); /* create the groups, add them to the GUI, * create Panels diff --git a/src/org/dhs/chrislee/imapgui/KeySelectorPanel.java b/src/org/dhs/chrislee/imapgui/KeySelectorPanel.java index 0c62baa..b4abb62 100644 --- a/src/org/dhs/chrislee/imapgui/KeySelectorPanel.java +++ b/src/org/dhs/chrislee/imapgui/KeySelectorPanel.java @@ -49,16 +49,16 @@ public KeySelectorPanel(GPGKeyList sec, GPGKeyList pub) { secretKeyList = sec; publicKeyList = pub; selectedKeyIds = new GPGKeyList(); - for(GPGKeyId kid : secretKeyList.getKeyIDArray()) - selectedKeyIds.addKeyId(kid); + if(secretKeyList != null) + for(GPGKeyId kid : secretKeyList.getKeyIDArray()) + selectedKeyIds.addKeyId(kid); int uidColumnWidth = 500; String[] columnNames = {"Use?", "KeyId", "UID", "KID"}; ArrayList data = new ArrayList(); - for(GPGKeyId kid : sec.getKeyIDArray()) { - addGPGKeyIDToModel(kid, data); - - } + if(secretKeyList != null) + for(GPGKeyId kid : sec.getKeyIDArray()) + addGPGKeyIDToModel(kid, data); for(GPGKeyId kid : pub.getKeyIDArray()) addGPGKeyIDToModel(kid, data); Object[][] d = new Object[1][]; diff --git a/src/org/dhs/chrislee/imapgui/KeySelectorTableModel.java b/src/org/dhs/chrislee/imapgui/KeySelectorTableModel.java index 9b1c342..92aa407 100644 --- a/src/org/dhs/chrislee/imapgui/KeySelectorTableModel.java +++ b/src/org/dhs/chrislee/imapgui/KeySelectorTableModel.java @@ -12,6 +12,8 @@ public KeySelectorTableModel(Object[][] data, String[] columnNames) { super(data, columnNames); } public Class getColumnClass(int columnIndex) { + if(getValueAt(0, columnIndex) == null) + return String.class; return getValueAt(0, columnIndex).getClass(); } @Override