mirror of https://github.com/m2049r/xmrwallet.git
Die if getAddress() is not valid (#73)
mitigates serious effects of issue #72 by crashing - does not solve the root cause which is still unknown.
This commit is contained in:
parent
c4f9e8cf58
commit
b00734a0d6
|
@ -529,7 +529,7 @@ Java_com_m2049r_xmrwallet_model_Wallet_setPassword(JNIEnv *env, jobject instance
|
|||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getAddress(JNIEnv *env, jobject instance) {
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getAddressJ(JNIEnv *env, jobject instance) {
|
||||
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
|
||||
const char *address = wallet->address().c_str();
|
||||
return env->NewStringUTF(address);
|
||||
|
|
|
@ -34,6 +34,7 @@ import android.widget.LinearLayout;
|
|||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.m2049r.xmrwallet.model.Wallet;
|
||||
import com.m2049r.xmrwallet.model.WalletManager;
|
||||
import com.m2049r.xmrwallet.util.Helper;
|
||||
|
||||
|
@ -278,8 +279,7 @@ public class GenerateFragment extends Fragment {
|
|||
|
||||
private boolean addressOk() {
|
||||
String address = etWalletAddress.getText().toString();
|
||||
boolean testnet = WalletManager.getInstance().isTestNet();
|
||||
return ((address.length() == 95) && ((testnet ? "9A" : "4").indexOf(address.charAt(0)) >= 0));
|
||||
return Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet());
|
||||
}
|
||||
|
||||
private boolean viewKeyOk() {
|
||||
|
@ -295,7 +295,7 @@ public class GenerateFragment extends Fragment {
|
|||
private void generateWallet() {
|
||||
String name = etWalletName.getText().toString();
|
||||
if (name.length() == 0) return;
|
||||
if (name.charAt(0)=='.') {
|
||||
if (name.charAt(0) == '.') {
|
||||
Toast.makeText(getActivity(), getString(R.string.generate_wallet_dot), Toast.LENGTH_LONG).show();
|
||||
etWalletName.requestFocus();
|
||||
}
|
||||
|
|
|
@ -277,7 +277,7 @@ public class SendFragment extends Fragment {
|
|||
|
||||
private boolean addressOk() {
|
||||
String address = etAddress.getText().toString();
|
||||
return Helper.isAddressOk(address, WalletManager.getInstance().isTestNet());
|
||||
return Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet());
|
||||
}
|
||||
|
||||
private boolean amountOk() {
|
||||
|
|
|
@ -697,7 +697,7 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment.
|
|||
address = null;
|
||||
}
|
||||
|
||||
if (Helper.isAddressOk(address, WalletManager.getInstance().isTestNet())) {
|
||||
if (Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet())) {
|
||||
return new BarcodeData(address, paymentId, amount);
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -68,7 +68,16 @@ public class Wallet {
|
|||
|
||||
public native boolean setPassword(String password);
|
||||
|
||||
public native String getAddress();
|
||||
public String getAddress() {
|
||||
String address = getAddressJ();
|
||||
if (!Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet())) {
|
||||
// just die!
|
||||
throw new IllegalStateException("Wallet returned invalid address!");
|
||||
}
|
||||
return address;
|
||||
}
|
||||
|
||||
private native String getAddressJ();
|
||||
|
||||
public native String getPath();
|
||||
|
||||
|
|
|
@ -144,15 +144,6 @@ public class Helper {
|
|||
act.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
|
||||
}
|
||||
|
||||
static public boolean isAddressOk(String address, boolean testnet) {
|
||||
if (address == null) return false;
|
||||
if (testnet) {
|
||||
return ((address.length() == 95) && ("9A".indexOf(address.charAt(0)) >= 0));
|
||||
} else {
|
||||
return ((address.length() == 95) && ("4".indexOf(address.charAt(0)) >= 0));
|
||||
}
|
||||
}
|
||||
|
||||
static public String getDisplayAmount(long amount) {
|
||||
String s = Wallet.getDisplayAmount(amount);
|
||||
int lastZero = 0;
|
||||
|
|
Loading…
Reference in New Issue