# HG changeset patch # User aefimov # Date 1509431670 0 # Node ID a28183e4181d9f18a5c9368396012975d659f85d # Parent 7a9a6ffac242ea18807df2c5cd47e335d769c87d 8181100: Better Base Exceptions Summary: Also reviewed by Roman Grigoriadi Reviewed-by: dfuchs diff -r 7a9a6ffac242 -r a28183e4181d src/share/jaxws_classes/com/sun/xml/internal/ws/util/exception/JAXWSExceptionBase.java --- a/src/share/jaxws_classes/com/sun/xml/internal/ws/util/exception/JAXWSExceptionBase.java Thu Aug 03 07:27:56 2017 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/util/exception/JAXWSExceptionBase.java Tue Oct 31 06:34:30 2017 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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,6 +32,8 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; /** * Represents a {@link WebServiceException} with @@ -119,13 +121,21 @@ String resourceBundleName = (String) in.readObject(); String key = (String) in.readObject(); int len = in.readInt(); - if (len == -1) { + if (len < -1) { + throw new NegativeArraySizeException(); + } else if (len == -1) { args = null; - } else { + } else if (len < 255) { args = new Object[len]; for (int i = 0; i < args.length; i++) { args[i] = in.readObject(); } + } else { + List argList = new ArrayList<>(Math.min(len, 1024)); + for (int i = 0; i < len; i++) { + argList.add(in.readObject()); + } + args = argList.toArray(new Object[argList.size()]); } msg = new LocalizableMessageFactory(resourceBundleName).getMessage(key,args); }