# HG changeset patch # User igerasim # Date 1557796722 25200 # Node ID a7abac394abbcc529887a080b72e053abf69a9a8 # Parent 01fa7f06f80647a0eeac883d97752889b1f6c3e7 8223730: URLClassLoader.findClass() can throw IndexOutOfBoundsException Reviewed-by: prappo, bchristi diff -r 01fa7f06f806 -r a7abac394abb src/java.base/share/classes/jdk/internal/loader/Resource.java --- a/src/java.base/share/classes/jdk/internal/loader/Resource.java Tue May 14 08:47:13 2019 +0800 +++ b/src/java.base/share/classes/jdk/internal/loader/Resource.java Mon May 13 18:18:42 2019 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2019, 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 @@ -113,9 +113,11 @@ int bytesToRead; if (pos >= b.length) { // Only expand when there's no room bytesToRead = Math.min(len - pos, b.length + 1024); - if (b.length < pos + bytesToRead) { - b = Arrays.copyOf(b, pos + bytesToRead); + if (bytesToRead < 0) { + // Can overflow only due to large b.length + bytesToRead = len - pos; } + b = Arrays.copyOf(b, pos + bytesToRead); } else { bytesToRead = b.length - pos; }