adyen-android icon indicating copy to clipboard operation
adyen-android copied to clipboard

NullPointerException on typing the CVV code of the cart

Open AChep opened this issue 4 years ago • 1 comments

Describe the bug When a user types in the CVV code, the app immediately crashes with a null pointer exception. This happens for me every time when I use the test American Express card with a 4-digit CVV code.

Crashlog

    java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.CharSequence android.text.InputFilter.filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int)' on a null object reference
        at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:517)
        at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:270)
        at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:296)
        at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:37)
        at com.adyen.checkout.ui.internal.card.CardOneClickConfirmationFragment$3.onCharClicked(CardOneClickConfirmationFragment.java:139)
        at com.adyen.checkout.ui.internal.card.NumpadView.notifyCharClicked(NumpadView.java:64)
        at com.adyen.checkout.ui.internal.card.NumpadView.access$200(NumpadView.java:21)
        at com.adyen.checkout.ui.internal.card.NumpadView$CharNotifier.onClick(NumpadView.java:89)
        at android.view.View.performClick(View.java:7448)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Affected versions that I've tested:

  • com.adyen.checkout:ui:2.4.12
  • com.adyen.checkout:ui:2.4.11
  • com.adyen.checkout:ui:2.4.9

AChep avatar Jul 22 '21 11:07 AChep

The bug is in the com.adyen.checkout.ui.internal.common.util.TextViewUtil#71 it does not fill the elements to the left side of the index.

    private static Object remove(final Object array, final int index) {
4874        final int length = getLength(array);
4875        if (index < 0 || index >= length) {
4876            throw new IndexOutOfBoundsException("Index: " + index + ", Length: " + length);
4877        }
4878
4879        final Object result = Array.newInstance(array.getClass().getComponentType(), length - 1);
4880        System.arraycopy(array, 0, result, 0, index);
4881        if (index < length - 1) {
4882            System.arraycopy(array, index + 1, result, index, length - index - 1);
4883        }
4884
4885        return result;
4886    }

Toy may want to do it this way.

AChep avatar Jul 22 '21 11:07 AChep

Closing this issue because it has been inactive for a while.

Please reopen if you still encounter this issue with the latest version.

Thank you!

OscarSpruit avatar Nov 25 '22 11:11 OscarSpruit