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
|
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);
|
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
|
||||||
const char *address = wallet->address().c_str();
|
const char *address = wallet->address().c_str();
|
||||||
return env->NewStringUTF(address);
|
return env->NewStringUTF(address);
|
||||||
|
|
|
@ -34,6 +34,7 @@ import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.m2049r.xmrwallet.model.Wallet;
|
||||||
import com.m2049r.xmrwallet.model.WalletManager;
|
import com.m2049r.xmrwallet.model.WalletManager;
|
||||||
import com.m2049r.xmrwallet.util.Helper;
|
import com.m2049r.xmrwallet.util.Helper;
|
||||||
|
|
||||||
|
@ -278,8 +279,7 @@ public class GenerateFragment extends Fragment {
|
||||||
|
|
||||||
private boolean addressOk() {
|
private boolean addressOk() {
|
||||||
String address = etWalletAddress.getText().toString();
|
String address = etWalletAddress.getText().toString();
|
||||||
boolean testnet = WalletManager.getInstance().isTestNet();
|
return Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet());
|
||||||
return ((address.length() == 95) && ((testnet ? "9A" : "4").indexOf(address.charAt(0)) >= 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean viewKeyOk() {
|
private boolean viewKeyOk() {
|
||||||
|
|
|
@ -277,7 +277,7 @@ public class SendFragment extends Fragment {
|
||||||
|
|
||||||
private boolean addressOk() {
|
private boolean addressOk() {
|
||||||
String address = etAddress.getText().toString();
|
String address = etAddress.getText().toString();
|
||||||
return Helper.isAddressOk(address, WalletManager.getInstance().isTestNet());
|
return Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean amountOk() {
|
private boolean amountOk() {
|
||||||
|
|
|
@ -697,7 +697,7 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment.
|
||||||
address = null;
|
address = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Helper.isAddressOk(address, WalletManager.getInstance().isTestNet())) {
|
if (Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet())) {
|
||||||
return new BarcodeData(address, paymentId, amount);
|
return new BarcodeData(address, paymentId, amount);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -68,7 +68,16 @@ public class Wallet {
|
||||||
|
|
||||||
public native boolean setPassword(String password);
|
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();
|
public native String getPath();
|
||||||
|
|
||||||
|
|
|
@ -144,15 +144,6 @@ public class Helper {
|
||||||
act.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
|
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) {
|
static public String getDisplayAmount(long amount) {
|
||||||
String s = Wallet.getDisplayAmount(amount);
|
String s = Wallet.getDisplayAmount(amount);
|
||||||
int lastZero = 0;
|
int lastZero = 0;
|
||||||
|
|
Loading…
Reference in New Issue