From faa3d2276ef96b90c82be267532af8aa85fb7e72 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Tue, 7 Aug 2012 19:09:16 -0700 Subject: [PATCH] Fix for another NPE which should never happen but apparently does. --- .../securesms/PassphraseChangeActivity.java | 49 ++++++++++--------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/org/thoughtcrime/securesms/PassphraseChangeActivity.java b/src/org/thoughtcrime/securesms/PassphraseChangeActivity.java index b4e76719f9..3de8740867 100644 --- a/src/org/thoughtcrime/securesms/PassphraseChangeActivity.java +++ b/src/org/thoughtcrime/securesms/PassphraseChangeActivity.java @@ -1,6 +1,6 @@ -/** +/** * Copyright (C) 2011 Whisper Systems - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -10,27 +10,28 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package org.thoughtcrime.securesms; -import org.thoughtcrime.securesms.crypto.InvalidPassphraseException; -import org.thoughtcrime.securesms.crypto.MasterSecret; -import org.thoughtcrime.securesms.crypto.MasterSecretUtil; -import org.thoughtcrime.securesms.util.MemoryCleaner; - import android.os.Bundle; +import android.text.Editable; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; +import org.thoughtcrime.securesms.crypto.InvalidPassphraseException; +import org.thoughtcrime.securesms.crypto.MasterSecret; +import org.thoughtcrime.securesms.crypto.MasterSecretUtil; +import org.thoughtcrime.securesms.util.MemoryCleaner; + /** * Activity for changing a user's local encryption passphrase. - * + * * @author Moxie Marlinspike */ @@ -44,12 +45,12 @@ public class PassphraseChangeActivity extends PassphraseActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + setContentView(R.layout.change_passphrase_activity); - + initializeResources(); } - + private void initializeResources() { this.originalPassphrase = (EditText) findViewById(R.id.old_passphrase); this.newPassphrase = (EditText) findViewById(R.id.new_passphrase); @@ -57,16 +58,20 @@ public class PassphraseChangeActivity extends PassphraseActivity { this.okButton = (Button) findViewById(R.id.ok_button); this.cancelButton = (Button) findViewById(R.id.cancel_button); - + this.okButton.setOnClickListener(new OkButtonClickListener()); this.cancelButton.setOnClickListener(new CancelButtonClickListener()); } - + private void verifyAndSavePassphrases() { - String original = this.originalPassphrase.getText().toString(); - String passphrase = this.newPassphrase.getText().toString(); - String passphraseRepeat = this.repeatPassphrase.getText().toString(); - + Editable originalText = this.originalPassphrase.getText(); + Editable newText = this.newPassphrase.getText(); + Editable repeatText = this.repeatPassphrase.getText(); + + String original = (originalText == null ? "" : originalText.toString()); + String passphrase = (newText == null ? "" : newText.toString()); + String passphraseRepeat = (repeatText == null ? "" : repeatText.toString()); + try { if (!passphrase.equals(passphraseRepeat)) { Toast.makeText(getApplicationContext(), "Passphrases Don't Match!", Toast.LENGTH_SHORT).show(); @@ -77,7 +82,7 @@ public class PassphraseChangeActivity extends PassphraseActivity { MemoryCleaner.clean(original); MemoryCleaner.clean(passphrase); MemoryCleaner.clean(passphraseRepeat); - + setMasterSecret(masterSecret); } } catch (InvalidPassphraseException e) { @@ -87,11 +92,11 @@ public class PassphraseChangeActivity extends PassphraseActivity { } private class CancelButtonClickListener implements OnClickListener { - public void onClick(View v) { + public void onClick(View v) { finish(); } } - + private class OkButtonClickListener implements OnClickListener { public void onClick(View v) { verifyAndSavePassphrases(); @@ -103,7 +108,7 @@ public class PassphraseChangeActivity extends PassphraseActivity { this.originalPassphrase = null; this.newPassphrase = null; this.repeatPassphrase = null; - + System.gc(); } }