src/share/classes/com/sun/corba/se/impl/orbutil/ObjectUtility.java

Fri, 24 Sep 2010 22:42:14 -0700

author
skoppar
date
Fri, 24 Sep 2010 22:42:14 -0700
changeset 205
b2fff4b7e8cd
parent 173
032585ad970d
child 748
6845b95cba6b
permissions
-rw-r--r--

6891766: Vulnerabilities in use of reflection in CORBA
Reviewed-by: hawtin

     1 /*
     2  * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    26 package com.sun.corba.se.impl.orbutil;
    28 import java.security.PrivilegedAction;
    29 import java.security.AccessController;
    30 import java.util.ArrayList;
    31 import java.util.Arrays;
    32 import java.util.Map;
    33 import java.util.List;
    34 import java.util.ListIterator;
    35 import java.util.Set;
    36 import java.util.Map.Entry;
    37 import java.util.Collection;
    38 import java.util.HashMap;
    39 import java.util.HashSet;
    40 import java.util.Hashtable;
    41 import java.util.Iterator;
    42 import java.util.Enumeration;
    43 import java.util.Properties;
    44 import java.util.IdentityHashMap;
    45 import java.lang.reflect.Array;
    46 import java.lang.reflect.Field;
    47 import java.lang.reflect.Method;
    48 import java.lang.reflect.Modifier;
    49 import java.math.BigInteger ;
    50 import java.math.BigDecimal ;
    52 public final class ObjectUtility {
    53     private ObjectUtility() {}
    56     /** If arr1 and arr2 are both arrays of the same component type,
    57      * return an array of that component type that consists of the
    58      * elements of arr1 followed by the elements of arr2.
    59      * Throws IllegalArgumentException otherwise.
    60      */
    61     public static Object concatenateArrays( Object arr1, Object arr2 )
    62     {
    63         Class comp1 = arr1.getClass().getComponentType() ;
    64         Class comp2 = arr2.getClass().getComponentType() ;
    65         int len1 = Array.getLength( arr1 ) ;
    66         int len2 = Array.getLength( arr2 ) ;
    68         if ((comp1 == null) || (comp2 == null))
    69             throw new IllegalStateException( "Arguments must be arrays" ) ;
    70         if (!comp1.equals( comp2 ))
    71             throw new IllegalStateException(
    72                 "Arguments must be arrays with the same component type" ) ;
    74         Object result = Array.newInstance( comp1, len1 + len2 ) ;
    76         int index = 0 ;
    78         for (int ctr=0; ctr<len1; ctr++)
    79             Array.set( result, index++, Array.get( arr1, ctr ) ) ;
    81         for (int ctr=0; ctr<len2; ctr++)
    82             Array.set( result, index++, Array.get( arr2, ctr ) ) ;
    84         return result ;
    85     }
    87 }

mercurial