Mercurial > hg > icedtea8-forest > jdk
changeset 12878:dbf817e78280 jdk8u152-b02
8169056: StringIndexOutOfBoundsException in Pattern.compile with CANON_EQ flag
Reviewed-by: coffeys
author | igerasim |
---|---|
date | Thu, 23 Mar 2017 11:48:23 -0700 |
parents | cc7f20a9beb2 |
children | 80280d8b40e9 98d941f5c8cc |
files | src/share/classes/java/util/regex/Pattern.java test/java/util/regex/RegExTest.java |
diffstat | 2 files changed, 13 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/java/util/regex/Pattern.java Thu Mar 23 08:41:32 2017 -0700 +++ b/src/share/classes/java/util/regex/Pattern.java Thu Mar 23 11:48:23 2017 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1411,6 +1411,8 @@ String result; i++; + if (i == normalizedPattern.length()) + throw error("Unclosed character class"); charClass.append("["); while(true) { int c = normalizedPattern.codePointAt(i);
--- a/test/java/util/regex/RegExTest.java Thu Mar 23 08:41:32 2017 -0700 +++ b/test/java/util/regex/RegExTest.java Thu Mar 23 11:48:23 2017 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,7 +32,7 @@ * 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133 * 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066 * 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647 6559590 - * 8027645 6854417 + * 8027645 6854417 8169056 */ import java.util.regex.*; @@ -2144,6 +2144,14 @@ if (!pattern.matcher("\u017f\u0130\u0131\u212a\u212b").matches()) failCount++; + try { + Pattern.compile("[", Pattern.CANON_EQ); + failCount++; + } catch (PatternSyntaxException expected) { + } catch (Exception unexpected) { + failCount++; + } + report("CharClass"); }