[ 
https://issues.apache.org/jira/browse/WICKET-5891?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14508588#comment-14508588
 ] 

ASF subversion and git services commented on WICKET-5891:
---------------------------------------------------------

Commit fd33ad02d4d4824c1cabdae0bdce41343926bf7f in wicket's branch 
refs/heads/wicket-6.x from [~mgrigorov]
[ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=fd33ad0 ]

WICKET-5891 Parsing of ChinUnionPay credit card should use the first 6 
characters


> Parsing of ChinUnionPay credit card should use the first 6 characters
> ---------------------------------------------------------------------
>
>                 Key: WICKET-5891
>                 URL: https://issues.apache.org/jira/browse/WICKET-5891
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 6.19.0
>            Reporter: Martin Grigorov
>            Assignee: Martin Grigorov
>             Fix For: 6.20.0, 7.0.0-M6
>
>
> User report:
> A China UnionPay number has to start with 622 (622126-622925) and has to have 
> a length between 16 and 19. The source code of CreditCardValidator is:
>   220         private boolean isChinaUnionPay(String creditCardNumber)
>   221         {
>   222                 cardId = CreditCardValidator.INVALID;
>   223                 boolean returnValue = false;
>   224   
>   225                 if ((creditCardNumber.length() >= 16 && 
> creditCardNumber.length() <= 19) &&
>   226                         (creditCardNumber.startsWith("622")))
>   227                 {
>   228                         int firstDigits = 
> Integer.parseInt(creditCardNumber.substring(0, 5));
>   229                         if (firstDigits >= 622126 && firstDigits <= 
> 622925)
>   230                         {
>   231                                 cardId = 
> CreditCardValidator.CHINA_UNIONPAY;
>   232                                 returnValue = true;
>   233                         }
>   234                 }
>   235   
>   236                 return returnValue;
>   237         }
> The problem is on the line 228 because the substring returns the first 5 
> digits and it is compared to 6 digits, so "firstDigits" is always < than 
> 622126. The fix is to do #substring(0, 6).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to