-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8350646: Calendar.Builder.build() Throws ArrayIndexOutOfBoundsException #23789
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8350646: Calendar.Builder.build() Throws ArrayIndexOutOfBoundsException #23789
Conversation
|
👋 Welcome back jlu! A progress list of the required criteria for merging this PR into |
|
@justin-curtis-lu This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 40 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
|
@justin-curtis-lu The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
|
This appears to be a behavioral change and warrants a CSR. |
naotoj
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. I would expect a test case with jdk.calendar.japanese.supplemental.era defined with something, and 7 would throw an IAE.
| // We check against eras.length over Reiwa ERA due to possibility | ||
| // of additional eras via "jdk.calendar.japanese.supplemental.era" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The possibility is not only that emergency property, but by design Japanese calendar eras increase when the current emperor abdicates.
…w/ additional era via sys prop
|
@naotoj Addressed your comments in e55053a. @liach Filed a CSR: https://bugs.openjdk.org/browse/JDK-8350806. |
| try { | ||
| new Calendar.Builder() | ||
| .setCalendarType("japanese") | ||
| .setFields(ERA, 7) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry I suggested this immediate value "7", but this can be JapaneseEra.values().length + 2 which might be more meaningful
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree that is better; it's pushed.
naotoj
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. I reviewed the CSR as well.
|
/integrate |
|
Going to push as commit 3a7d986.
Your commit was automatically rebased without conflicts. |
|
@justin-curtis-lu Pushed as commit 3a7d986. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Please review this PR which prevents an
AIOOBEfrom leaking out whenjava.util.Calendar.Builderis used to build a Japanese calendar with an era value too large.Note that we don't check under
BEFORE_MEIJI/0 as historically Japanese calendar ignores negative values during normalization. SeeJapaneseImperialCalendarL2018:date.setEra(era > 0 ? eras[era] : null);.We also check against
eras.lengthoverREIWA/5 due to the possibility of additional eras via the property override or future eras in general.Progress
Issues
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/23789/head:pull/23789$ git checkout pull/23789Update a local copy of the PR:
$ git checkout pull/23789$ git pull https://git.openjdk.org/jdk.git pull/23789/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 23789View PR using the GUI difftool:
$ git pr show -t 23789Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/23789.diff
Using Webrev
Link to Webrev Comment