diff --git a/.hgtags b/.hgtags index 0ace621f30092e207790c0d394e74e62b3bc2a12..bf22521e961d7ccbfb811a4080f96f6ed8f41739 100644 --- a/.hgtags +++ b/.hgtags @@ -119,3 +119,6 @@ d80954a89b49fda47c0c5cace65a17f5a758b8bd jdk7-b139 312612e89ece62633f4809706dec00bcd5fe7c2d jdk7-b142 efbf75c24b0f31847c9c403f6dc07dc80551908d jdk7-b143 23bdcede4e3945894574892e80b848bd9f15b5f3 jdk7-b144 +1e04b38b3824a4a1d197ef681a302e6813e53f8b jdk7-b145 +539e576793a8e64aaf160e0d6ab0b9723cd0bef0 jdk7-b146 +f097ca2434b1412b12ab4a5c2397ce271bf681e7 jdk7-b147 diff --git a/.jcheck/conf b/.jcheck/conf index d8227cd90e317584018f7002a1ba7f9bf6514e11..6d0dbe48e36d16d641238ed3c17fe89fe6e38f75 100644 --- a/.jcheck/conf +++ b/.jcheck/conf @@ -1 +1 @@ -project=jdk7 +project=jdk8 diff --git a/THIRD_PARTY_README b/THIRD_PARTY_README index 4305848629523afea1df6aa9db61a8e2ad68afe8..ee5463a922ef0934281707d1b22ffa655da35ffa 100644 --- a/THIRD_PARTY_README +++ b/THIRD_PARTY_README @@ -1,38 +1,12 @@ DO NOT TRANSLATE OR LOCALIZE. +----------------------------- -%% This notice is provided with respect to Thai dictionary for text breaking, which may be included with this software: +%% This notice is provided with respect to ASM Bytecode Manipulation +Framework v3.1, which is included with JRE 7, JDK 7, and OpenJDK 7. ---- begin of LICENSE file --- +--- begin of LICENSE --- -Copyright (C) 1982 The Royal Institute, Thai Royal Government. - -Copyright (C) 1998 National Electronics and Computer Technology Center, - National Science and Technology Development Agency, - Ministry of Science Technology and Environment, - Thai Royal Government. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- end of LICENSE file --- -%% This notice is provided with respect to ASM, which may be included with this software: -Copyright (c) 2000-2007 INRIA, France Telecom +Copyright (c) 2000-2005 INRIA, France Telecom All rights reserved. Redistribution and use in source and binary forms, with or without @@ -62,666 +36,1023 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -%% This notice is provided with respect to littlecms, which may be included with this software: +--- end of LICENSE --- -Little cms -Copyright (C) 1998-2004 Marti Maria +-------------------------------------------------------------------------------- -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +%% This notice is provided with respect to CodeViewer 1.0, which is included +with JDK 7. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +--- begin of LICENSE --- -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -%% This notice is provided with respect to zlib 1.1.3, which may be included with this software: +Copyright 1999 by CoolServlets.com. -Acknowledgments: +Any errors or suggested improvements to this class can be reported as +instructed on CoolServlets.com. We hope you enjoy this program... your +comments will encourage further development! This software is distributed +under the terms of the BSD License. Redistribution and use in source and +binary forms, with or without modification, are permitted provided that the +following conditions are met: - The deflate format used by zlib was defined by Phil Katz. The deflate - and zlib specifications were written by L. Peter Deutsch. Thanks to all the - people who reported problems and suggested various improvements in zlib; - they are too numerous to cite here. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -Copyright notice: +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - (C) 1995-1998 Jean-loup Gailly and Mark Adler +Neither name of CoolServlets.com nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. +THIS SOFTWARE IS PROVIDED BY COOLSERVLETS.COM AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. +--- end of LICENSE --- - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu +------------------------------------------------------------------------------- -If you use the zlib library in a product, we would appreciate *not* -receiving lengthy legal documents to sign. The sources are provided -for free but without warranty of any kind. The library has been -entirely written by Jean-loup Gailly and Mark Adler; it does not -include third-party code. - -If you redistribute modified sources, we would appreciate that you include -in the file ChangeLog history information documenting your changes. - -%% This notice is provided with respect to W3C (DTD for XML Signatures), which may be included with this software: -W3C® SOFTWARE NOTICE AND LICENSE -Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ -This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions: -Permission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make: -1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. -2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" -3.Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. -The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. -____________________________________ -This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org. +%% This notice is provided with respect to Cryptix AES 3.2.0, which is +included with JRE 7, JDK 7, and OpenJDK 7. +--- begin of LICENSE --- -%% This notice is provided with respect to PC/SC Lite for Suse Linux v. 1.1.1, which may be included with this software: +Cryptix General License -Copyright (c) 1999-2004 David Corcoran +Copyright (c) 1995-2005 The Cryptix Foundation Limited. All rights reserved. Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND +CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. +--- end of LICENSE --- -Changes to this license can be made only by the copyright author with -explicit written consent. +------------------------------------------------------------------------------- -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +%% This notice is provided with respect to CUP Parser Generator for +Java 0.10k, which is included with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- + +Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both the +copyright notice and this permission notice and warranty disclaimer appear in +supporting documentation, and that the names of the authors or their +employers not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. + +The authors and their employers disclaim all warranties with regard to +this software, including all implied warranties of merchantability and fitness. +In no event shall the authors or their employers be liable for any special, +indirect or consequential damages or any damages whatsoever resulting from +loss of use, data or profits, whether in an action of contract, negligence or +other tortious action, arising out of or in connection with the use or +performance of this software. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to Document Object Model (DOM) Level 2 +& 3, which is included with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- + +W3C SOFTWARE NOTICE AND LICENSE + +http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + +This work (and included software, documentation such as READMEs, or other +related items) is being provided by the copyright holders under the following +license. By obtaining, using and/or copying this work, you (the licensee) +agree that you have read, understood, and will comply with the following terms +and conditions. + +Permission to copy, modify, and distribute this software and its +documentation, with or without modification, for any purpose and without fee +or royalty is hereby granted, provided that you include the following on ALL +copies of the software and documentation or portions thereof, including +modifications: + + 1.The full text of this NOTICE in a location viewable to users of the + redistributed or derivative work. + + 2.Any pre-existing intellectual property disclaimers, notices, or terms and + conditions. If none exist, the W3C Software Short Notice should be included + (hypertext is preferred, text is permitted) within the body of any + redistributed or derivative code. + + 3.Notice of any changes or modifications to the files, including the date + changes were made. (We recommend you provide URIs to the location from + which the code is derived.) + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS +MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR +PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY +THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL +OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR +DOCUMENTATION. The name and trademarks of copyright holders may NOT be used +in advertising or publicity pertaining to the software without specific, +written prior permission. Title to copyright in this software and any +associated documentation will at all times remain with copyright holders. + +____________________________________ + +This formulation of W3C's notice and license became active on December 31 +2002. This version removes the copyright ownership notice such that this +license can be used with materials other than those owned by the W3C, reflects +that ERCIM is now a host of the W3C, includes references to this specific +dated version of the license, and removes the ambiguous grant of "use". +Otherwise, this version is the same as the previous version and is written so +as to preserve the Free Software Foundation's assessment of GPL compatibility +and OSI's certification under the Open Source Definition. Please see our +Copyright FAQ for common questions about using materials from our site, +including specific terms and conditions for packages like libwww, Amaya, and +Jigsaw. Other questions about this notice can be directed to +site-policy@w3.org. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to Elliptic Curve Cryptography, which +is included with JRE 7, JDK 7, and OpenJDK 7. + +You are receiving a copy of the Elliptic Curve Cryptography library in source +form with the JDK 7 source distribution and object code in the JRE 7 & JDK 7 +runtime. + +The terms of the Oracle license do NOT apply to the Elliptic Curve +Cryptography library program; it is licensed under the following license, +separately from the Oracle programs you receive. If you do not wish to install +this program, you may delete the library named libsunec.so (on Solaris and +Linux systems) or sunec.dll (on Windows systems) from the JRE bin directory +reserved for native libraries. + +--- begin of LICENSE --- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to FontConfig 2.5, which is +included with JRE 7, JDK 7, and OpenJDK 7 source distributions on +Linux and Solaris. + +--- begin of LICENSE --- + +Copyright © 2001,2003 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and that +the name of Keith Packard not be used in advertising or publicity pertaining +to distribution of the software without specific, written prior permission. +Keith Packard makes no representations about the suitability of this software +for any purpose. It is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL KEITH +PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +--- end of LICENSE --- +------------------------------------------------------------------------------- -%% This notice is provided with respect to IAIK PKCS Wrapper, which may be included with this software: +%% This notice is provided with respect to IAIK PKCS#11 Wrapper, +which is included with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- + +IAIK PKCS#11 Wrapper License Copyright (c) 2002 Graz University of Technology. All rights reserved. -Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: +3. The end-user documentation included with the redistribution, if any, must + include the following acknowledgment: - "This product includes software developed by IAIK of Graz University of Technology." + "This product includes software developed by IAIK of Graz University of + Technology." - Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. + Alternately, this acknowledgment may appear in the software itself, if and + wherever such third-party acknowledgments normally appear. -4. The names "Graz University of Technology" and "IAIK of Graz University of Technology" must not be used to endorse or promote products derived from this software without prior written permission. +4. The names "Graz University of Technology" and "IAIK of Graz University of + Technology" must not be used to endorse or promote products derived from this + software without prior written permission. -5. Products derived from this software may not be called "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior written permission of Graz University of Technology. +5. Products derived from this software may not be called "IAIK PKCS Wrapper", + nor may "IAIK" appear in their name, without prior written permission of + Graz University of Technology. -THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, -OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -%% This notice is provided with respect to Document Object Model (DOM) v. Level 3, which may be included with this software: +--- end of LICENSE --- -W3Cýý SOFTWARE NOTICE AND LICENSE +------------------------------------------------------------------------------- -http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +%% This notice is provided with respect to ICU4C 4.0.1 and ICU4J 4.4, which +is included with JRE 7, JDK 7, and OpenJDK 7. -This work (and included software, documentation such as READMEs, or other related items) is being -provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you -(the licensee) agree that you have read, understood, and will comply with the following terms and conditions. - -Permission to copy, modify, and distribute this software and its documentation, with or without modification, for -any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies -of the software and documentation or portions thereof, including modifications: - 1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. - 2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the - W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body - of any redistributed or derivative code. - 3.Notice of any changes or modifications to the files, including the date changes were made. (We - recommend you provide URIs to the location from which the code is derived.) -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THEUSE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. - -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. -The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the -software without specific, written prior permission. Title to copyright in this software and any associated -documentation will at all times remain with copyright holders. +--- begin of LICENSE --- -____________________________________ +Copyright (c) 1995-2010 International Business Machines Corporation and others -This formulation of W3C's notice and license became active on December 31 2002. This version removes the -copyright ownership notice such that this license can be used with materials other than those owned by the -W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the -license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous -version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and -OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions -about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, -and Jigsaw. Other questions about this notice can be directed to -site-policy@w3.org. +All rights reserved. -%% This notice is provided with respect to Xalan, Xerces, which may be included with this software: - -/* - * The Apache Software License, Version 1.1 - * - * - * Copyright (c) 1999-2003 The Apache Software Foundation. All rights * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * - * 4. The names "Xerces" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation and was - * originally based on software copyright (c) 1999, International - * Business Machines, Inc., http://www.ibm.com. For more - * information on the Apache Software Foundation, please see - * - -%% This notice is provided with respect to JavaScript, which may be included with this software: - -AMENDMENTS -The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla Public License Version 1.1 with the following Amendments, including Exhibit A-Netscape Public License.  Files identified with "Exhibit A-Netscape Public License" are governed by the Netscape Public License Version 1.1. -Additional Terms applicable to the Netscape Public License. -I. Effect. -These additional terms described in this Netscape Public License -- Amendments shall apply to the Mozilla Communicator client code and to all Covered Code under this License. -II. ''Netscape's Branded Code'' means Covered Code that Netscape distributes and/or permits others to distribute under one or more trademark(s) which are controlled by Netscape but which are not licensed for use under this License. -III. Netscape and logo. -This License does not grant any rights to use the trademarks "Netscape'', the "Netscape N and horizon'' logo or the "Netscape lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", "Smart Browsing" even if such marks are included in the Original Code or Modifications. -IV. Inability to Comply Due to Contractual Obligation. -Prior to licensing the Original Code under this License, Netscape has licensed third party code for use in Netscape's Branded Code. To the extent that Netscape is limited contractually from making such third party code available under this License, Netscape may choose to reintegrate such code into Covered Code without being required to distribute such code in Source Code form, even if such code would otherwise be considered ''Modifications'' under this License. -V. Use of Modifications and Covered Code by Initial Developer. -V.1. In General. -The obligations of Section 3 apply to Netscape, except to the extent specified in this Amendment, Section V.2 and V.3. -V.2. Other Products. -Netscape may include Covered Code in products other than the Netscape's Branded Code which are released by Netscape during the two (2) years following the release date of the Original Code, without such additional products becoming subject to the terms of this License, and may license such additional products on different terms from those contained in this License. -V.3. Alternative Licensing. -Netscape may license the Source Code of Netscape's Branded Code, including Modifications incorporated therein, without such Netscape Branded Code becoming subject to the terms of this License, and may license such Netscape Branded Code on different terms from those contained in this License. -  -VI. Litigation. -Notwithstanding the limitations of Section 11 above, the provisions regarding litigation in Section 11(a), (b) and (c) of the License shall apply to all disputes relating to this License. - -EXHIBIT A-Netscape Public License. -  -''The contents of this file are subject to the Netscape Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/NPL/ -Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. -The Original Code is Mozilla Communicator client code, released March 31, 1998. -The Initial Developer of the Original Code is Netscape Communications Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape Communications Corporation. All Rights Reserved. -Contributor(s): ______________________________________. -  -Alternatively, the contents of this file may be used under the terms of the _____ license (the  "[___] License"), in which case the provisions of [______] License are applicable  instead of those above.  If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the NPL, indicate your decision by deleting  the provisions above and replace  them with the notice and other provisions required by the [___] License.  If you do not delete the provisions above, a recipient may use your version of this file under either the NPL or the [___] License." - -MOZILLA PUBLIC LICENSE -Version 1.1 - -1. Definitions. -1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. -1.1. ''Contributor'' means each entity that creates or contributes to the creation of Modifications. -1.2. ''Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. -1.3. ''Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. -1.4. ''Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data. -1.5. ''Executable'' means Covered Code in any form other than Source Code. -1.6. ''Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. -1.7. ''Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. -1.8. ''License'' means this document. -1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. -1.9. ''Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: -A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. -B. Any new file that contains any part of the Original Code or previous Modifications. -  -1.10. ''Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. -1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation,  method, process, and apparatus claims, in any patent Licensable by grantor. -1.11. ''Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. -1.12. "You'' (or "Your")  means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. -2. Source Code License. -2.1. The Initial Developer Grant. -The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: -(a)  under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and -(b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). -  -(c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code;  or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. -  -2.2. Contributor Grant. -Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license -  -(a)  under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and -(b) under Patent Claims infringed by the making, using, or selling of  Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of  Modifications made by that Contributor with its Contributor Version (or portions of such combination). -(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. -(d)    Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2)  separate from the Contributor Version;  3)  for infringements caused by: i) third party modifications of Contributor Version or ii)  the combination of Modifications made by that Contributor with other software  (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. -3.1. Application of License. -The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. -3.2. Availability of Source Code. -Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. -3.3. Description of Modifications. -You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. -3.4. Intellectual Property Matters -(a) Third Party Claims. -If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. -(b) Contributor APIs. -If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. -  -          (c)    Representations. -Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. - -3.5. Required Notices. -You must duplicate the notice in Exhibit A in each file of the Source Code.  If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice.  If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A.  You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code.  You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. -3.6. Distribution of Executable Versions. -You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. -3.7. Larger Works. -You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. -4. Inability to Comply Due to Statute or Regulation. -If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. -5. Application of this License. -This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. -6. Versions of the License. -6.1. New Versions. -Netscape Communications Corporation (''Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. -6.2. Effect of New Versions. -Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. -6.3. Derivative Works. -If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) -7. DISCLAIMER OF WARRANTY. -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. -8. TERMINATION. -8.1.  This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. -8.2.  If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant")  alleging that: -(a)  such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i)  agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant.  If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. -(b)  any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. -8.3.  If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. -8.4.  In the event of termination under Sections 8.1 or 8.2 above,  all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. -9. LIMITATION OF LIABILITY. -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. -10. U.S. GOVERNMENT END USERS. -The Covered Code is a ''commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and ''commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. -11. MISCELLANEOUS. -This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. -12. RESPONSIBILITY FOR CLAIMS. -As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. -13. MULTIPLE-LICENSED CODE. -Initial Developer may designate portions of the Covered Code as "Multiple-Licensed".  "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. -``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at -http://www.mozilla.org/MPL/ -Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF -ANY KIND, either express or implied. See the License for the specific language governing rights and -limitations under the License. -The Original Code is ______________________________________. -The Initial Developer of the Original Code is ________________________. Portions created by - ______________________ are Copyright (C) ______ _______________________. All Rights -Reserved. -Contributor(s): ______________________________________. -Alternatively, the contents of this file may be used under the terms of the _____ license (the  "[___] License"), in which case the provisions of [______] License are applicable  instead of those above.  If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting  the provisions above and replace  them with the notice and other provisions required by the [___] License.  If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." -[NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] - -%% This notice is provided with respect to Mesa 3-D graphics library v. 5, which may be included with this software: - -Copyright (c) 2007 The Khronos Group Inc. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and/or associated documentation files (the -"Materials"), to deal in the Materials without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Materials, and to -permit persons to whom the Materials are furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Materials. - -THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - -%% This notice is provided with respect to Byte Code Engineering Library (BCEL), which may be included with this software: - - Apache Software License - - /* -==================================================================== * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. Allrights - * reserved. - * - * Redistribution and use in source and binary forms, withor without - * modification, are permitted provided that the followingconditions - * are met: - * - * 1. Redistributions of source code must retain the abovecopyright - * notice, this list of conditions and the followingdisclaimer. - * - * 2. Redistributions in binary form must reproduce theabove copyright - * notice, this list of conditions and the followingdisclaimer in - * the documentation and/or other materials providedwith the - * distribution. - * - * 3. The end-user documentation included with theredistribution, - * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation -(http://www.apache.org/)." - * Alternately, this acknowledgment may appear in thesoftware itself, - * if and wherever such third-party acknowledgmentsnormally appear. - * - * 4. The names "Apache" and "Apache Software Foundation"and - * "Apache BCEL" must not be used to endorse or promoteproducts - * derived from this software without prior writtenpermission. For - * written permission, please contact apache@apache.org. * - * 5. Products derived from this software may not be called"Apache", - * "Apache BCEL", nor may "Apache" appear in their name,without - * prior written permission of the Apache SoftwareFoundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED ORIMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWAREFOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING INANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF - * SUCH DAMAGE. - * -==================================================================== * - * This software consists of voluntary contributions madeby many - * individuals on behalf of the Apache Software -Foundation. For more - * information on the Apache Software Foundation, pleasesee - * . - */ - -%% This notice is provided with respect to Regexp, Regular Expression Package, which may be included with this software: - -The Apache Software License, Version 1.1 -Copyright (c) 2001 The Apache Software Foundation. All rights -reserved. -Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +provided that the above copyright notice(s) and this permission notice appear +in all copies of the Software and that both the above copyright notice(s) and +this permission notice appear in supporting documentation. -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN +NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE +LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization of the copyright holder. +All trademarks and registered trademarks mentioned herein are the property of +their respective owners. -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in -the documentation and/or other materials provided with the -distribution. - -3. The end-user documentation included with the redistribution, -if any, must include the following acknowledgment: -"This product includes software developed by the -Apache Software Foundation (http://www.apache.org/)." -Alternately, this acknowledgment may appear in the software itself, -if and wherever such third-party acknowledgments normally appear. - -4. The names "Apache" and "Apache Software Foundation" and -"Apache Turbine" must not be used to endorse or promote products -derived from this software without prior written permission. For -written permission, please contact apache@apache.org. - -5. Products derived from this software may not be called "Apache", -"Apache Turbine", nor may "Apache" appear in their name, without -prior written permission of the Apache Software Foundation. - -THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR -ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - -==================================================================== -This software consists of voluntary contributions made by many -individuals on behalf of the Apache Software Foundation. For more -information on the Apache Software Foundation, please see - -http://www.apache.org. - -%% This notice is provided with respect to CUP Parser Generator for Java, which may be included with this software: - -CUP Parser Generator Copyright Notice, License, and Disclaimer - -Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided thatthe above copyright notice appear in all copies and that both the copyrightnotice and this permission notice and warranty disclaimer appear in -supporting documentation, and that the names of the authors or their employersnot be used in advertising or publicity pertaining to distribution of -the software without specific, written prior permission. +--- end of LICENSE --- -The authors and their employers disclaim all warranties with regard to thissoftware, including all implied warranties of merchantability and -fitness. In no event shall the authors or their employers be liable for anyspecial, indirect or consequential damages or any damages whatsoever -resulting from loss of use, data or profits, whether in an action of contract,negligence or other tortious action, arising out of or in connection withthe use or performance of this software. +------------------------------------------------------------------------------- -%% This notice is provided with respect to SAX v. 2.0.1, which may be included with this software: +%% This notice is provided with respect to IJG JPEG 6b, which is +included with JRE 7, JDK 7, and OpenJDK 7. -Copyright Status +--- begin of LICENSE --- - SAX is free! +This software is copyright (C) 1991-1998, Thomas G. Lane. +All Rights Reserved except as specified below. - In fact, it's not possible to own a license to SAX, since it's been placed in the public - domain. +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. - No Warranty +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. - Because SAX is released to the public domain, there is no warranty for the design or for - the software implementation, to the extent permitted by applicable law. Except when - otherwise stated in writing the copyright holders and/or other parties provide SAX "as is" - without warranty of any kind, either expressed or implied, including, but not limited to, the - implied warranties of merchantability and fitness for a particular purpose. The entire risk as - to the quality and performance of SAX is with you. Should SAX prove defective, you - assume the cost of all necessary servicing, repair or correction. +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". - In no event unless required by applicable law or agreed to in writing will any copyright - holder, or any other party who may modify and/or redistribute SAX, be liable to you for - damages, including any general, special, incidental or consequential damages arising out of - the use or inability to use SAX (including but not limited to loss of data or data being - rendered inaccurate or losses sustained by you or third parties or a failure of the SAX to - operate with any other programs), even if such holder or other party has been advised of - the possibility of such damages. +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. - Copyright Disclaimers +--- end of LICENSE --- - This page includes statements to that effect by David Megginson, who would have been - able to claim copyright for the original work. - SAX 1.0 +-------------------------------------------------------------------------------- - Version 1.0 of the Simple API for XML (SAX), created collectively by the membership of - the XML-DEV mailing list, is hereby released into the public domain. +%% This notice is provided with respect to JOpt-Simple v3.0, which is +included with JRE 7, JDK 7, and OpenJDK 7. - No one owns SAX: you may use it freely in both commercial and non-commercial - applications, bundle it with your software distribution, include it on a CD-ROM, list the - source code in a book, mirror the documentation at your own web site, or use it in any - other way you see fit. +--- begin of LICENSE --- - David Megginson, sax@megginson.com - 1998-05-11 + Copyright (c) 2004-2009 Paul R. Holser, Jr. - SAX 2.0 + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: - I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release - all of the SAX 2.0 source code, compiled code, and documentation contained in this - distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of - fitness for any purpose. + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. - David Megginson, david@megginson.com - 2000-05-05 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -%% This notice is provided with respect to Cryptix, which may be included with this software: +--- end of LICENSE --- -Cryptix General License +-------------------------------------------------------------------------------- -Copyright © 1995-2003 The Cryptix Foundation Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions aremet: +%% This notice is provided with respect to Kerberos functionality, which +which is included with JRE 7, JDK 7, and OpenJDK 7. - 1.Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BELIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OFTHE POSSIBILITY OF SUCH DAMAGE. +--- begin of LICENSE --- -%% This notice is provided with respect to X Window System, which may be included with this software: + (C) Copyright IBM Corp. 1999 All Rights Reserved. + Copyright 1997 The Open Group Research Institute. All rights reserved. -Copyright The Open Group +--- end of LICENSE --- -Permission to use, copy, modify, distribute, and sell this software and itsdocumentation for any purpose is hereby granted without fee, provided that theabove copyright notice appear in all copies and that both that copyright noticeand this permission notice appear in supporting documentation. +------------------------------------------------------------------------------- -The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software. +%% This notice is provided with respect to Kerberos functionality from +FundsXpress, INC., which is included with JRE 7, JDK 7, and OpenJDK 7. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUPBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OFCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THESOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--- begin of LICENSE --- -Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. + Copyright (C) 1998 by the FundsXpress, INC. -Portions also covered by other licenses as noted in the above URL. + All rights reserved. -%% This notice is provided with respect to Retroweaver, which may be included with this software: + Export of this software from the United States of America may require + a specific license from the United States Government. It is the + responsibility of any person or organization contemplating export to + obtain such a license before exporting. -Copyright (c) February 2004, Toby Reyelts -All rights reserved. + WITHIN THAT CONSTRAINT, permission to use, copy, modify, and + distribute this software and its documentation for any purpose and + without fee is hereby granted, provided that the above copyright + notice appear in all copies and that both that copyright notice and + this permission notice appear in supporting documentation, and that + the name of FundsXpress. not be used in advertising or publicity pertaining + to distribution of the software without specific, written prior + permission. FundsXpress makes no representations about the suitability of + this software for any purpose. It is provided "as is" without express + or implied warranty. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of Toby Reyelts nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--- end of LICENSE --- -%% This notice is provided with respect to stripper, which may be included with this software: +------------------------------------------------------------------------------- -Stripper : debug information stripper - Copyright (c) 2003 Kohsuke Kawaguchi - All rights reserved. +%% This notice is provided with respect to Kronos OpenGL headers, which is +included with JDK 7 and OpenJDK 7 source distributions. + +--- begin of LICENSE --- + + Copyright (c) 2007 The Khronos Group Inc. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and/or associated documentation files (the "Materials"), to + deal in the Materials without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Materials, and to permit persons to whom the Materials are + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Materials. + + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE + MATERIALS. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from this software without specific prior written permission. +--- end of LICENSE --- - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +------------------------------------------------------------------------------- -%% This notice is provided with respect to libpng official PNG reference library, which may be included with this software: +%% Portions Copyright Eastman Kodak Company 1992 -This copy of the libpng notices is provided for your convenience. In case ofany discrepancy between this copy and the notices in the file png.h that isincluded in the libpng distribution, the latter shall prevail. +------------------------------------------------------------------------------- + +%% This notice is provided with respect to libpng 1.2.18, which is +included with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- + +This copy of the libpng notices is provided for your convenience. In case of +any discrepancy between this copy and the notices in the file png.h that is +included in the libpng distribution, the latter shall prevail. COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: -If you modify libpng you may insert additional notices immediately followingthis sentence. +If you modify libpng you may insert additional notices immediately following +this sentence. + +libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are +Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.2.5 +with the following individual added to the list of Contributing Authors -libpng version 1.2.6, December 3, 2004, is -Copyright (c) 2004 Glenn Randers-Pehrson, and is -distributed according to the same disclaimer and license as libpng-1.2.5with the following individual added to the list of Contributing Authors Cosmin Truta -libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, areCopyright (c) 2000-2002 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-1.0.6with the following individuals added to the list of Contributing Authors +libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are +Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.0.6 +with the following individuals added to the list of Contributing Authors + Simon-Pierre Cadieux Eric S. Raymond Gilles Vollant and with the following additions to the disclaimer: - There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our - efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. + There is no warranty against interference with your enjoyment of the + library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is with + the user. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-0.96, +with the following individuals added to the list of Contributing Authors: -libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, areCopyright (c) 1998, 1999 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-0.96,with the following individuals added to the list of Contributing Authors: Tom Lane Glenn Randers-Pehrson Willem van Schaik libpng versions 0.89, June 1996, through 0.96, May 1997, are Copyright (c) 1996, 1997 Andreas Dilger -Distributed according to the same disclaimer and license as libpng-0.88,with the following individuals added to the list of Contributing Authors: +Distributed according to the same disclaimer and license as libpng-0.88, +with the following individuals added to the list of Contributing Authors: + John Bowler Kevin Bracey Sam Bushell @@ -732,7 +1063,8 @@ Distributed according to the same disclaimer and license as libpng-0.88,with the libpng versions 0.5, May 1995, through 0.88, January 1996, are Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. -For the purposes of this copyright and license, "Contributing Authors"is defined as the following set of individuals: +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: Andreas Dilger Dave Martindale @@ -740,12 +1072,17 @@ For the purposes of this copyright and license, "Contributing Authors"is defined Paul Schmidt Tim Wegner -The PNG Reference Library is supplied "AS IS". The Contributing Authorsand Group 42, Inc. disclaim all warranties, expressed or implied, -including, without limitation, the warranties of merchantability and offitness for any purpose. The Contributing Authors and Group 42, Inc. -assume no liability for direct, indirect, incidental, special, exemplary,or consequential damages, which may result from the use of the PNG +The PNG Reference Library is supplied "AS IS". The Contributing Authors +and Group 42, Inc. disclaim all warranties, expressed or implied, +including, without limitation, the warranties of merchantability and of +fitness for any purpose. The Contributing Authors and Group 42, Inc. +assume no liability for direct, indirect, incidental, special, exemplary, +or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. -Permission is hereby granted to use, copy, modify, and distribute thissource code, or portions hereof, for any purpose, without fee, subjectto the following restrictions: +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: 1. The origin of this source code must not be misrepresented. @@ -755,306 +1092,1259 @@ Permission is hereby granted to use, copy, modify, and distribute thissource cod 3. This Copyright notice may not be removed or altered from any source or altered source distribution. -The Contributing Authors and Group 42, Inc. specifically permit, withoutfee, and encourage the use of this source code as a component to -supporting the PNG file format in commercial products. If you use thissource code in a product, acknowledgment is not required but would be +The Contributing Authors and Group 42, Inc. specifically permit, without +fee, and encourage the use of this source code as a component to +supporting the PNG file format in commercial products. If you use this +source code in a product, acknowledgment is not required but would be appreciated. -A "png_get_copyright" function is available, for convenient use in "about"boxes and the like: +A "png_get_copyright" function is available, for convenient use in "about" +boxes and the like: printf("%s",png_get_copyright(NULL)); Also, the PNG logo (in PNG format, of course) is supplied in the files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). -Libpng is OSI Certified Open Source Software. OSI Certified Open Source is acertification mark of the Open Source Initiative. +Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a +certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp at users.sourceforge.net -December 3, 2004 +May 15, 2007 + +--- end of LICENSE --- -%% This notice is provided with respect to Libungif - An uncompressed GIF library, which may be included with this software: +------------------------------------------------------------------------------- + +%% This notice is provided with respect to libungif 4.1.3, which is +included with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond -Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software is +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INTHE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -%% This notice is provided with respect to XML Resolver library, Xalan J2, and StAX API, which may be included with this software: +--- end of LICENSE --- - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +------------------------------------------------------------------------------- - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +%% This notice is provided with respect to Little CMS 2.0, which is +included with OpenJDK 7. - 1. Definitions. +--- begin of LICENSE --- - "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. +Little CMS +Copyright (c) 1998-2010 Marti Maria Saguer - "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. - "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +--- end of LICENSE --- - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +------------------------------------------------------------------------------- - "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. +%% Lucida is a registered trademark or trademark of Bigelow & Holmes in the +U.S. and other countries. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. +------------------------------------------------------------------------------- - 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. +%% This notice is provided with respect to Mesa 3D Graphics Library v4.1, +which is included with JRE 7, JDK 7, and OpenJDK 7 source distributions. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +--- begin of LICENSE --- - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: + Mesa 3-D graphics library + Version: 4.1 - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and + Copyright (C) 1999-2002 Brian Paul All Rights Reserved. - (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +--- end of LICENSE --- - 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. +------------------------------------------------------------------------------- - 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +%% This notice is provided with respect to PC/SC Lite for Suse Linux v.1.1.1, +which is included with JRE 7, JDK 7, and OpenJDK 7 on Linux and Solaris. - 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. +--- begin of LICENSE --- - END OF TERMS AND CONDITIONS +Copyright (c) 1999-2004 David Corcoran +Copyright (c) 1999-2004 Ludovic Rousseau +All rights reserved. - APPENDIX: How to apply the Apache License to your work. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier - identification within third-party archives. +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by: + David Corcoran + http://www.linuxnet.com (MUSCLE) +4. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. - Copyright [yyyy] [name of copyright owner] +Changes to this license can be made only by the copyright author with +explicit written consent. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - http://www.apache.org/licenses/LICENSE-2.0 +--- end of LICENSE --- + +------------------------------------------------------------------------------- - Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +%% This notice is provided with respect to Relax NG Object/Parser v.20050510, +which is included with JRE 7, JDK 7, and OpenJDK 7. -%% Some Portions licensed from IBM are available at: -http://www.ibm.com/software/globalization/icu/ +--- begin of LICENSE --- -%% This notice is provided with respect to ICU4J, ICU 1.8.1 and later, which may be included with this software: +Copyright (c) Kohsuke Kawaguchi -ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Cop -yright (c) -1995-2003 International Business Machines Corporation and others All rightsreserved. Permission is hereby granted, free of charge, to any person obtaininga copy of this software and associated documentation files (the "Software"), todeal in the Software without restriction, including without limitation therights to use, copy, modify, merge, publish, distribute, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,provided that the above copyright notice(s) and this permission notice appear inall copies of the Software and that both the above copyright notice(s) and thispermission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOTLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSEAND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHTHOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY C - LAIM, OR ANYSPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTINGFROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCEOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of acopyright holder shall not be used in advertising or otherwise to promote thesale, use or other dealings in this Software without prior written authorizationof the copyright holder. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: The above copyright +notice and this permission notice shall be included in all copies or +substantial portions of the Software. -%% This notice is provided with respect to Jing, which may be included with this software: +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- -Jing Copying Conditions +%% This notice is provided with respect to RelaxNGCC v1.12, which is +included with JRE 7, JDK 7, and OpenJDK 7. -Copyright (c) 2001-2003 Thai Open Source Software Center Ltd +--- begin of LICENSE --- + +Copyright (c) 2000-2003 Daisuke Okajima and Kohsuke Kawaguchi. All rights reserved. -Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice,this list of conditions and the following disclaimer in the documentation and/orother materials provided with the distribution. - * Neither the name of the Thai Open Source Software Center Ltd nor the namesof its contributors may be used to endorse or promote products derived from thissoftware without specific prior written permission. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -%% This notice is provided with respect to RELAX NG Object Model/Parser, which may be included with this software: +3. The end-user documentation included with the redistribution, if any, must + include the following acknowledgment: + "This product includes software developed by Daisuke Okajima + and Kohsuke Kawaguchi (http://relaxngcc.sf.net/)." -The MIT License +Alternately, this acknowledgment may appear in the software itself, if and +wherever such third-party acknowledgments normally appear. -Copyright (c) +4. The names of the copyright holders must not be used to endorse or promote + products derived from this software without prior written permission. For + written permission, please contact the copyright holders. -Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions: +5. Products derived from this software may not be called "RELAXNGCC", nor may + "RELAXNGCC" appear in their name, without prior written permission of the + copyright holders. -The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software. +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE APACHE +SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- end of LICENSE --- -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS ORCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR INCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------- + +%% This notice is provided with respect to Mozilla Rhino v1.7R3, which +is included with JRE 7, JDK 7, and OpenJDK 7 + +--- begin of LICENSE --- + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A - Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to SAX 2.0.1, which is included +with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- + + SAX is free! + + In fact, it's not possible to own a license to SAX, since it's been placed in + the public domain. + + No Warranty + + Because SAX is released to the public domain, there is no warranty for the + design or for the software implementation, to the extent permitted by + applicable law. Except when otherwise stated in writing the copyright holders + and/or other parties provide SAX "as is" without warranty of any kind, either + expressed or implied, including, but not limited to, the implied warranties + of merchantability and fitness for a particular purpose. The entire risk as + to the quality and performance of SAX is with you. Should SAX prove + defective, you assume the cost of all necessary servicing, repair or + correction. + + In no event unless required by applicable law or agreed to in writing will + any copyright holder, or any other party who may modify and/or redistribute + SAX, be liable to you for damages, including any general, special, incidental + or consequential damages arising out of the use or inability to use SAX + (including but not limited to loss of data or data being rendered inaccurate + or losses sustained by you or third parties or a failure of the SAX to + operate with any other programs), even if such holder or other party has been + advised of the possibility of such damages. + + Copyright Disclaimers + + This page includes statements to that effect by David Megginson, who would + have been able to claim copyright for the original work. SAX 1.0 + + Version 1.0 of the Simple API for XML (SAX), created collectively by the + membership of the XML-DEV mailing list, is hereby released into the public + domain. -%% This notice is provided with respect to XFree86-VidMode Extension, which may be included with this software: + No one owns SAX: you may use it freely in both commercial and non-commercial + applications, bundle it with your software distribution, include it on a + CD-ROM, list the source code in a book, mirror the documentation at your own + web site, or use it in any other way you see fit. -Version 1.1 of XFree86 ProjectLicence. + David Megginson, sax@megginson.com + 1998-05-11 - Copyright (C) 1994-2004 The XFree86 Project, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicence, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions: - - 1. Redistributions of source code must retain the above copyright notice,this list of conditions, and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyrightnotice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution, and in thesame place and form as other copyright, license and disclaimer information. 3. The end-user documentation included with the redistribution, if any,must include the following acknowledgment: "This product includes softwaredeveloped by The XFree86 Project, Inc (http://www.xfree86.org/) and itscontributors", in the same place and form as other third-party acknowledgments.Alternately, this acknowledgment may appear in the software itself, in the sameform and location as other such third-party acknowledgments. - 4. Except as contained in this notice, the name of The XFree86 Project,Inc shall not be used in advertising or otherwise to promote the sale, use orother dealings in this Software without prior written authorization from TheXFree86 Project, Inc. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE XFREE86PROJECT, INC OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISINGIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITYOF SUCH DAMAGE. - -%% This notice is provided with respect to XML Security, which may be included with this software: - - The Apache Software License, - Version 1.1 - - - PDF - - - Copyright (C) 2002 The Apache SoftwareFoundation. - All rights reserved. Redistribution anduse in - source and binary forms, with or withoutmodifica- - tion, are permitted provided that thefollowing - conditions are met: 1. Redistributions ofsource - code must retain the above copyrightnotice, this - list of conditions and the followingdisclaimer. - 2. Redistributions in binary form mustreproduce - the above copyright notice, this list of conditions and the following disclaimerin the - documentation and/or other materialsprovided with - the distribution. 3. The end-userdocumentation - included with the redistribution, if any,must - include the following acknowledgment:"This - product includes software developed bythe Apache - Software Foundation -(http://www.apache.org/)." - Alternately, this acknowledgment mayappear in the - software itself, if and wherever suchthird-party - acknowledgments normally appear. 4. Thenames - "Apache Forrest" and "Apache SoftwareFoundation" - must not be used to endorse or promoteproducts - derived from this software without priorwritten - permission. For written permission,please contact - apache@apache.org. 5. Products derivedfrom this - software may not be called "Apache", normay - "Apache" appear in their name, withoutprior - written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED``AS IS'' - AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THEIMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESSFOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NOEVENT - SHALL THE APACHE SOFTWARE FOUNDATION ORITS - CONTRIBUTORS BE LIABLE FOR ANY DIRECT,INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, ORCONSEQUENTIAL - DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS - OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, - OR TORT (INCLUDING NEGLIGENCE OROTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF - SUCH DAMAGE. This software consists ofvoluntary - contributions made by many individuals onbehalf - of the Apache Software Foundation. Formore - information on the Apache SoftwareFoundation, - please see . - -%% This notice is provided with respect to Independent JPEG Group's software (libjpeg), which may be included with this software: - -In plain English: - -1. We don't promise that this software works. (But if you find any bugs, - please let us know!) -2. You can use this software for whatever you want. You don't have to pay us. -3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code. - -In legalese: - -The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. + SAX 2.0 -This software is copyright (C) 1991-1998, Thomas G. Lane. -All Rights Reserved except as specified below. + I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and + release all of the SAX 2.0 source code, compiled code, and documentation + contained in this distribution into the Public Domain. SAX comes with NO + WARRANTY or guarantee of fitness for any purpose. -Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: + David Megginson, david@megginson.com + 2000-05-05 -(1) If any part of the source code for this software is distributed, then this -README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to SoftFloat version 2b, which is +included with JRE 7, JDK 7, and OpenJDK 7 on Linux/ARM. + +--- begin of LICENSE --- + +Use of any of this software is governed by the terms of the license below: + +SoftFloat was written by me, John R. Hauser. This work was made possible in +part by the International Computer Science Institute, located at Suite 600, +1947 Center Street, Berkeley, California 94704. Funding was partially +provided by the National Science Foundation under grant MIP-9311980. The +original version of this code was written as part of a project to build +a fixed-point vector processor in collaboration with the University of +California at Berkeley, overseen by Profs. Nelson Morgan and John Wawrzynek. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort +has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT +TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO +PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL +LOSSES, COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO +FURTHERMORE EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER +SCIENCE INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, +COSTS, OR OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE +SOFTWARE. + +Derivative works are acceptable, even for commercial purposes, provided +that the minimal documentation requirements stated in the source code are +satisfied. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% Portions licensed from Taligent, Inc. + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to Thai Dictionary, which is +included with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- + +Copyright (C) 1982 The Royal Institute, Thai Royal Government. + +Copyright (C) 1998 National Electronics and Computer Technology Center, +National Science and Technology Development Agency, +Ministry of Science Technology and Environment, +Thai Royal Government. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to Unicode 6.0.0, CLDR v1.4.1, & CLDR +v1.9, which is included with JRE 7, JDK 7, and OpenJDK 7. + +--- begin of LICENSE --- + +Unicode Terms of Use + +For the general privacy policy governing access to this site, see the Unicode +Privacy Policy. For trademark usage, see the Unicode® Consortium Name and +Trademark Usage Policy. + +A. Unicode Copyright. + 1. Copyright © 1991-2011 Unicode, Inc. All rights reserved. + + 2. Certain documents and files on this website contain a legend indicating + that "Modification is permitted." Any person is hereby authorized, + without fee, to modify such documents and files to create derivative + works conforming to the Unicode® Standard, subject to Terms and + Conditions herein. + + 3. Any person is hereby authorized, without fee, to view, use, reproduce, + and distribute all documents and files solely for informational + purposes in the creation of products supporting the Unicode Standard, + subject to the Terms and Conditions herein. + + 4. Further specifications of rights and restrictions pertaining to the use + of the particular set of data files known as the "Unicode Character + Database" can be found in Exhibit 1. + + 5. Each version of the Unicode Standard has further specifications of + rights and restrictions of use. For the book editions (Unicode 5.0 and + earlier), these are found on the back of the title page. The online + code charts carry specific restrictions. All other files, including + online documentation of the core specification for Unicode 6.0 and + later, are covered under these general Terms of Use. + + 6. No license is granted to "mirror" the Unicode website where a fee is + charged for access to the "mirror" site. + + 7. Modification is not permitted with respect to this document. All copies + of this document must be verbatim. + +B. Restricted Rights Legend. Any technical data or software which is licensed + to the United States of America, its agencies and/or instrumentalities + under this Agreement is commercial technical data or commercial computer + software developed exclusively at private expense as defined in FAR 2.101, + or DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, + duplication, or disclosure by the Government is subject to restrictions as + set forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov + 1995) and this Agreement. For Software, in accordance with FAR 12-212 or + DFARS 227-7202, as applicable, use, duplication or disclosure by the + Government is subject to the restrictions set forth in this Agreement. + +C. Warranties and Disclaimers. + 1. This publication and/or website may include technical or typographical + errors or other inaccuracies . Changes are periodically added to the + information herein; these changes will be incorporated in new editions + of the publication and/or website. Unicode may make improvements and/or + changes in the product(s) and/or program(s) described in this + publication and/or website at any time. + + 2. If this file has been purchased on magnetic or optical media from + Unicode, Inc. the sole and exclusive remedy for any claim will be + exchange of the defective media within ninety (90) days of original + purchase. + + 3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR SOFTWARE IS + PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, IMPLIED, + OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. + UNICODE AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR + OMISSIONS IN THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH + ARE REFERENCED BY OR LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE. + +D. Waiver of Damages. In no event shall Unicode or its licensors be liable for + any special, incidental, indirect or consequential damages of any kind, or + any damages whatsoever, whether or not Unicode was advised of the + possibility of the damage, including, without limitation, those resulting + from the following: loss of use, data or profits, in connection with the + use, modification or distribution of this information or its derivatives. + +E.Trademarks & Logos. + 1. The Unicode Word Mark and the Unicode Logo are trademarks of Unicode, + Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade names of + Unicode, Inc. Use of the information and materials found on this + website indicates your acknowledgement of Unicode, Inc.’s exclusive + worldwide rights in the Unicode Word Mark, the Unicode Logo, and the + Unicode trade names. + + 2. The Unicode Consortium Name and Trademark Usage Policy (“Trademark + Policy”) are incorporated herein by reference and you agree to abide by + the provisions of the Trademark Policy, which may be changed from time + to time in the sole discretion of Unicode, Inc. + + 3. All third party trademarks referenced herein are the property of their + respective owners. + +Miscellaneous. + 1. Jurisdiction and Venue. This server is operated from a location in the + State of California, United States of America. Unicode makes no + representation that the materials are appropriate for use in other + locations. If you access this server from other locations, you are + responsible for compliance with local laws. This Agreement, all use of + this site and any claims and damages resulting from use of this site are + governed solely by the laws of the State of California without regard to + any principles which would apply the laws of a different jurisdiction. + The user agrees that any disputes regarding this site shall be resolved + solely in the courts located in Santa Clara County, California. The user + agrees said courts have personal jurisdiction and agree to waive any + right to transfer the dispute to any other forum. + + 2. Modification by Unicode. Unicode shall have the right to modify this + Agreement at any time by posting it to this site. The user may not + assign any part of this Agreement without Unicode’s prior written + consent. + + 3. Taxes. The user agrees to pay any taxes arising from access to this + website or use of the information herein, except for those based on + Unicode’s net income. + + 4. Severability. If any provision of this Agreement is declared invalid or + unenforceable, the remaining provisions of this Agreement shall remain + in effect. + + 5. Entire Agreement. This Agreement constitutes the entire agreement + between the parties. + +EXHIBIT 1 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF +online code charts under the directory http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, +http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. + +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, +INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA +FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO +BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT +AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR +SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 1991-2011 Unicode, Inc. All rights reserved. Distributed under the +Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the Unicode data files and any associated documentation (the "Data Files") +or Unicode software and any associated documentation (the "Software") to deal +in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE +DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in these Data Files or Software without prior written authorization of the +copyright holder. + +Unicode and the Unicode logo are trademarks of Unicode, Inc. in the United +States and other countries. All third party trademarks referenced herein are +the property of their respective owners. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to UPX v3.01, which is included +with JRE 7 on Windows. + +--- begin of LICENSE --- + +Use of any of this software is governed by the terms of the license below: + + + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2000 Markus Oberhumer & Laszlo Molnar + http://wildsau.idv.uni-linz.ac.at/mfx/upx.html + http://www.nexus.hu/upx + http://upx.tsx.org + + +PLEASE CAREFULLY READ THIS LICENSE AGREEMENT, ESPECIALLY IF YOU PLAN +TO MODIFY THE UPX SOURCE CODE OR USE A MODIFIED UPX VERSION. -(2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group". -(3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind. +ABSTRACT +======== -These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us. + UPX and UCL are copyrighted software distributed under the terms + of the GNU General Public License (hereinafter the "GPL"). -Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software". + The stub which is imbedded in each UPX compressed program is part + of UPX and UCL, and contains code that is under our copyright. The + terms of the GNU General Public License still apply as compressing + a program is a special form of linking with our stub. -We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor. + As a special exception we grant the free usage of UPX for all + executables, including commercial programs. + See below for details and restrictions. -ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally, that you must include source code if you redistribute it. (See the file ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do. -The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, ltconfig, ltmain.sh). Another support script, install-sh, is copyright by M.I.T. but is also freely distributable. +COPYRIGHT +========= -It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining one or more licenses. For this reason, support for arithmetic coding has been removed from the free JPEG software. (Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) So far as we are aware, there are no patent restrictions on the remaining code. + UPX and UCL are copyrighted software. All rights remain with the authors. -The IJG distribution formerly included code to read and write GIF files. To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders. + UPX is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer + UPX is Copyright (C) 1996-2000 Laszlo Molnar -We are required to state that - "The Graphics Interchange Format(c) is the Copyright property of - CompuServe Incorporated. GIF(sm) is a Service Mark property of - CompuServe Incorporated." + UCL is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer + + +GNU GENERAL PUBLIC LICENSE +========================== + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + UPX and UCL are distributed in the hope that they will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + + +SPECIAL EXCEPTION FOR COMPRESSED EXECUTABLES +============================================ + + The stub which is imbedded in each UPX compressed program is part + of UPX and UCL, and contains code that is under our copyright. The + terms of the GNU General Public License still apply as compressing + a program is a special form of linking with our stub. + + Hereby Markus F.X.J. Oberhumer and Laszlo Molnar grant you special + permission to freely use and distribute all UPX compressed programs + (including commercial ones), subject to the following restrictions: + + 1. You must compress your program with a completely unmodified UPX + version; either with our precompiled version, or (at your option) + with a self compiled version of the unmodified UPX sources as + distributed by us. + 2. This also implies that the UPX stub must be completely unmodfied, i.e. + the stub imbedded in your compressed program must be byte-identical + to the stub that is produced by the official unmodified UPX version. + 3. The decompressor and any other code from the stub must exclusively get + used by the unmodified UPX stub for decompressing your program at + program startup. No portion of the stub may get read, copied, + called or otherwise get used or accessed by your program. + + +ANNOTATIONS +=========== + + - You can use a modified UPX version or modified UPX stub only for + programs that are compatible with the GNU General Public License. + + - We grant you special permission to freely use and distribute all UPX + compressed programs. But any modification of the UPX stub (such as, + but not limited to, removing our copyright string or making your + program non-decompressible) will immediately revoke your right to + use and distribute a UPX compressed program. + + - UPX is not a software protection tool; by requiring that you use + the unmodified UPX version for your proprietary programs we + make sure that any user can decompress your program. This protects + both you and your users as nobody can hide malicious code - + any program that cannot be decompressed is highly suspicious + by definition. + + - You can integrate all or part of UPX and UCL into projects that + are compatible with the GNU GPL, but obviously you cannot grant + any special exceptions beyond the GPL for our code in your project. + + - We want to actively support manufacturers of virus scanners and + similar security software. Please contact us if you would like to + incorporate parts of UPX or UCL into such a product. + + + +Markus F.X.J. Oberhumer Laszlo Molnar +markus.oberhumer@jk.uni-linz.ac.at ml1050@cdata.tvnet.hu + +Linz, Austria, 25 Feb 2000 + +Additional License(s) + +The UPX license file is at http://upx.sourceforge.net/upx-license.html. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to Xfree86-VidMode Extension 1.0, +which is included with JRE 7, JDK 7, and OpenJDK 7 on Linux and Solaris. + +--- begin of LICENSE --- + +Version 1.1 of XFree86 ProjectLicence. + +Copyright (C) 1994-2004 The XFree86 Project, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicence, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so,subject to the following conditions: + + 1. Redistributions of source code must retain the above copyright + notice,this list of conditions, and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution, and in the same place + and form as other copyright, license and disclaimer information. + + 3. The end-user documentation included with the redistribution, if any,must + include the following acknowledgment: "This product includes + software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and + its contributors", in the same place and form as other third-party + acknowledgments. Alternately, this acknowledgment may appear in the software + itself, in the same form and location as other such third-party + acknowledgments. + + 4. Except as contained in this notice, the name of The XFree86 Project,Inc + shall not be used in advertising or otherwise to promote the sale, use + or other dealings in this Software without prior written authorization from + The XFree86 Project, Inc. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + EVENT SHALL THE XFREE86 PROJECT, INC OR ITS CONTRIBUTORS BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + DAMAGE. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to X Window System 6.8.2, which is +included with JRE 7, JDK 7, and OpenJDK 7 on Linux and Solaris. + +--- begin of LICENSE --- + + Licenses +The X.Org Foundation March 2004 + +1. Introduction + +The X.org Foundation X Window System distribution is a compilation of code and +documentation from many sources. This document is intended primarily as a +guide to the licenses used in the distribution: you must check each file +and/or package for precise redistribution terms. None-the-less, this summary +may be useful to many users. No software incorporating the XFree86 1.1 license +has been incorporated. + +This document is based on the compilation from XFree86. -%% This notice is provided with respect to X Resize and Rotate (Xrandr) Extension, which may be included with this software: 2. XFree86 License XFree86 code without an explicit copyright is covered by the following @@ -1062,567 +2352,1034 @@ copyright/license: Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the XFree86 Project shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the XFree86 Project. + +3. Other Licenses + +Portions of code are covered by the following licenses/copyrights. See +individual files for the copyright dates. + +3.1. X/MIT Copyrights + +3.1.1. X Consortium + +Copyright (C) X Consortium + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 -PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X +CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Except as contained in this notice, the name of the XFree86 Project shall not be +Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in -this Software without prior written authorization from the XFree86 Project. +this Software without prior written authorization from the X Consortium. -%% This notice is provided with respect to fontconfig, which may be included with this software: -Id: COPYING,v 1.3 2003/04/04 20:17:40 keithp Exp $ -Copyright 2001,2003 Keith Packard +X Window System is a trademark of X Consortium, Inc. -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Keith Packard not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Keith Packard makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -%% This notice is provided with respect to XFree86, which may be included with this software: -Copyright (C) 1994-2002 The XFree86 Project, Inc. All Rights Reserved. +3.1.2. The Open Group -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated -documentation files (the "Software"), to deal in the Software without -restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to the -following conditions: +Copyright The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the -Software. +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT -NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Except as contained in this notice, the name of the XFree86 Project shall not be -used in advertising or otherwise -to promote the sale, use or other dealings in this Software without prior -written authorization from the XFree86 -Project. -%% This notice is provided with respect to Fast Infoset, which may be included with this software: -* Fast Infoset ver. 0.1 software ("Software") -* -* Copyright, 2004-2005 Sun Microsystems, Inc. All Rights Reserved. -* -* Software is licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. You may -* obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -* License for the specific language governing permissions and limitations. -* -* Sun supports and benefits from the global community of open source -* developers, and thanks the community for its important contributions and -* open standards-based technology, which Sun has adopted into many of its -* products. -* -* Please note that portions of Software may be provided with notices and -* open source licenses from such communities and third parties that govern the -* use of those portions, and any licenses granted hereunder do not alter any -* rights and obligations you may have under such open source licenses, -* however, the disclaimer of warranty and limitation of liability provisions -* in this License will apply to all Software in this distribution. -* -* You acknowledge that the Software is not designed, licensed or intended -* for use in the design, construction, operation or maintenance of any nuclear -* facility. -* -* Apache License -* Version 2.0, January 2004 -* http://www.apache.org/licenses/ -* -*/ -/* -* ==================================================================== -* -* This code is subject to the freebxml License, Version 1.1 -* -* Copyright (c) 2001 - 2005 freebxml.org. All rights reserved. -* -* $Header: /cvs/fi/FastInfoset/src/com/sun/xml/internal/fastinfoset/AbstractResourceBundle.java,v 1.2 -*  ==================================================================== -*/ -%% This notice is provided with respect to Kerberos, which may be included with this software: - -/* - * Copyright (C) 1998 by the FundsXpress, INC. - * - * All rights reserved. - * - * Export of this software from the United States of America may require - * a specific license from the United States Government.  It is the - * responsibility of any person or organization contemplating export to - * obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and - * distribute this software and its documentation for any purpose and - * without fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, and that - * the name of FundsXpress. not be used in advertising or publicity pertaining - * to distribution of the software without specific, written prior - * permission. FundsXpress makes no representations about the suitability of - * this software for any purpose. It is provided "as is" without express - * or implied warranty. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -%% This notice is provided with respect to Unicode's CLDR data repository, which may be included with this software: - - Unicode Copyright - - For the general privacy policy governing access to this site, see the -Unicode Privacy Policy. For trademark usage, see the the Unicode Consortium -Trademarks and Logo Policy. - Notice to End User: Terms of Use - Carefully read the following legal agreement ("Agreement"). Use or copying -of the software and/or codes provided with this agreement (The "Software") -constitutes your acceptance of these terms - - 1. Unicode Copyright. - 1. Copyright © 1991-2005 Unicode, Inc. All rights reserved. - 2. Certain documents and files on this website contain a legend -indicating that "Modification is permitted." Any person is hereby authorized, -without fee, to modify such documents and files to create derivative works -conforming to the Unicode® Standard, subject to Terms and Conditions herein. - 3. Any person is hereby authorized, without fee, to view, use, -reproduce, and distribute all documents and files solely for informational -purposes in the creation of products supporting the Unicode Standard, subject to -the Terms and Conditions herein. - 4. Further specifications of rights and restrictions pertaining to -the use of the particular set of data files known as the "Unicode Character -Database" can be found in Exhibit 1. - 5. Further specifications of rights and restrictions pertaining to -the use of the particular set of files that constitute the online edition of The -Unicode Standard, Version 4.0, may be found in V4.0 online edition. - 6. No license is granted to "mirror" the Unicode website where a -fee is charged for access to the "mirror" site. - 7. Modification is not permitted with respect to this document. All -copies of this document must be verbatim. - 2. Restricted Rights Legend. Any technical data or software which is -licensed to the United States of America, its agencies and/or instrumentalities -under this Agreement is commercial technical data or commercial computer -software developed exclusively at private expense as defined in FAR 2.101, or -DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, -duplication, or disclosure by the Government is subject to restrictions as set -forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and -this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202, -as applicable, use, duplication or disclosure by the Government is subject to -the restrictions set forth in this Agreement. - 3. Warranties and Disclaimers. - 1. This publication and/or website may include technical or -typographical errors or other inaccuracies . Changes are periodically added to -the information herein; these changes will be incorporated in new editions of -the publication and/or website. Unicode may make improvements and/or changes in -the product(s) and/or program(s) described in this publication and/or website at -any time. - 2. If this file has been purchased on magnetic or optical media -from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange -of the defective media within ninety (90) days of original purchase. - 3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR -SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, -IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE -AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS -PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED -TO THIS PUBLICATION OR THE UNICODE WEBSITE. - 4. Waiver of Damages. In no event shall Unicode or its licensors be -liable for any special, incidental, indirect or consequential damages of any -kind, or any damages whatsoever, whether or not Unicode was advised of the -possibility of the damage, including, without limitation, those resulting from -the following: loss of use, data or profits, in connection with the use, -modification or distribution of this information or its derivatives. - 5. Trademarks. - 1. Unicode and the Unicode logo are registered trademarks of -Unicode, Inc. - 2. This site contains product names and corporate names of other -companies. All product names and company names and logos mentioned herein are -the trademarks or registered trademarks of their respective owners. Other -products and corporate names mentioned herein which are trademarks of a third -party are used only for explanation and for the owners' benefit and with no -intent to infringe. - 3. Use of third party products or information referred to herein is -at the user's risk. - 6. Miscellaneous. - 1. Jurisdiction and Venue. This server is operated from a location -in the State of California, United States of America. Unicode makes no -representation that the materials are appropriate for use in other locations. If -you access this server from other locations, you are responsible for compliance -with local laws. This Agreement, all use of this site and any claims and damages -resulting from use of this site are governed solely by the laws of the State of -California without regard to any principles which would apply the laws of a -different jurisdiction. The user agrees that any disputes regarding this site -shall be resolved solely in the courts located in Santa Clara County, -California. The user agrees said courts have personal jurisdiction and agree to -waive any right to transfer the dispute to any other forum. - 2. Modification by Unicode Unicode shall have the right to modify -this Agreement at any time by posting it to this site. The user may not assign -any part of this Agreement without Unicode's prior written consent. - 3. Taxes. The user agrees to pay any taxes arising from access to -this website or use of the information herein, except for those based on -Unicode's net income. - 4. Severability. If any provision of this Agreement is declared -invalid or unenforceable, the remaining provisions of this Agreement shall -remain in effect. - 5. Entire Agreement. This Agreement constitutes the entire -agreement between the parties. +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings in +this Software without prior written authorization from The Open Group. 3.2. +Berkeley-based copyrights: -EXHIBIT 1 -UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE +o +3.2.1. General - Unicode Data Files include all data files under the directories -http://www.unicode.org/Public/ and http://www.unicode.org/reports/. Unicode -Software includes any source code under the directories -http://www.unicode.org/Public/ and http://www.unicode.org/reports/. - - NOTICE TO USER: Carefully read the following legal agreement. BY -DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES -("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND -AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU -DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES -OR SOFTWARE. - - COPYRIGHT AND PERMISSION NOTICE - - Copyright Ă?Â,Ă,© 1991-2004 Unicode, Inc. All rights reserved. Distributed under -the Terms of Use in http://www.unicode.org/copyright.html. - - Permission is hereby granted, free of charge, to any person obtaining a copy -of the Unicode data files and associated documentation (the "Data Files") or -Unicode software and associated documentation (the "Software") to deal in the -Data Files or Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, and/or sell copies of -the Data Files or Software, and to permit persons to whom the Data Files or -Software are furnished to do so, provided that (a) the above copyright notice(s) -and this permission notice appear with all copies of the Data Files or Software, -(b) both the above copyright notice(s) and this permission notice appear in -associated documentation, and (c) there is clear notice in each modified Data -File or in the Software as well as in the documentation associated with the Data -File(s) or Software that the data or software has been modified. - - THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD -PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS -NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL -DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING -OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: - Except as contained in this notice, the name of a copyright holder shall not -be used in advertising or otherwise to promote the sale, use or other dealings -in these Data Files or Software without prior written authorization of the -copyright holder. + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. - Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be -registered in some jurisdictions. All other trademarks and registered trademarks -mentioned herein are the property of their respective owners. -%% This notice is provided with respect to RSA PKCS#11 Header Files & Specification, which may be included with this software: - -/* - * Copyright (C) 1998 by the FundsXpress, INC. - * - * All rights reserved. - * - * Export of this software from the United States of America may require - * a specific license from the United States Government.  It is the - * responsibility of any person or organization contemplating export to - * obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and - * distribute this software and its documentation for any purpose and - * without fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, and that - * the name of FundsXpress. not be used in advertising or publicity pertaining - * to distribution of the software without specific, written prior - * permission.  FundsXpress makes no representations about the suitability of - * this software for any purpose.  It is provided "as is" without express - * or implied warranty. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -%% This notice is provided with respect to certain files/code which may included in the implementation of AWT within the software: - -****************************************************** -BEGIN  src/solaris/native/sun/awt/HPkeysym.h -Copyright 1987, 1998  The Open Group - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, - -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Hewlett Packard -or Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. 3.2.2. UCB/LBL + +Copyright (c) 1993 The Regents of the University of California. All rights +reserved. + +This software was developed by the Computer Systems Engineering group at +Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to +Berkeley. + +All advertising materials mentioning features or use of this software must +display the following acknowledgement: This product includes software +developed by the University of California, Lawrence Berkeley Laboratory. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: This product includes software + developed by the University of California, Berkeley and its contributors. + + 4. Neither the name of the University nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3.2.3. The +NetBSD Foundation, Inc. + +Copyright (c) 2003 The NetBSD Foundation, Inc. All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation by Ben +Collver + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: This product includes software + developed by the NetBSD Foundation, Inc. and its contributors. + + 4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS ``AS +IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3.2.4. Theodore +Ts'o. + +Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All rights +reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + and the entire permission notice in its entirety, including the disclaimer + of warranties. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. he name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE, ALL OF WHICH ARE HEREBY DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. 3.2.5. Theo de Raadt and Damien Miller + +Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. Copyright (c) +2001-2002 Damien Miller. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. 3.2.6. Todd C. Miller + +Copyright (c) 1998 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright +notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 3.2.7. Thomas +Winischhofer + +Copyright (C) 2001-2004 Thomas Winischhofer + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESSED OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. 3.3. NVIDIA Corp + +Copyright (c) 1996 NVIDIA, Corp. All rights reserved. + +NOTICE TO USER: The source code is copyrighted under U.S. and international +laws. NVIDIA, Corp. of Sunnyvale, California owns the copyright and as design +patents pending on the design and interface of the NV chips. Users and +possessors of this source code are hereby granted a nonexclusive, royalty-free +copyright and design patent license to use this code in individual and +commercial software. + +Any use of this source code must include, in the user documentation and +internal comments to the code, notices to the end user as follows: + +Copyright (c) 1996 NVIDIA, Corp. NVIDIA design patents pending in the U.S. and +foreign countries. + +NVIDIA, CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE +CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED +WARRANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE +FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. 3.4. GLX Public +License + +GLX PUBLIC LICENSE (Version 1.0 (2/11/99)) ("License") + +Subject to any third party claims, Silicon Graphics, Inc. ("SGI") hereby +grants permission to Recipient (defined below), under Recipient's copyrights +in the Original Software (defined below), to use, copy, modify, merge, +publish, distribute, sublicense and/or sell copies of Subject Software +(defined below), and to permit persons to whom the Subject Software is +furnished in accordance with this License to do the same, subject to all of +the following terms and conditions, which Recipient accepts by engaging in any +such use, copying, modifying, merging, publishing, distributing, sublicensing +or selling: + +1. Definitions. + + (a) "Original Software" means source code of computer software code which + is described in Exhibit A as Original Software. + + (b) "Modifications" means any addition to or deletion from the substance + or structure of either the Original Software or any previous + Modifications. When Subject Software is released as a series of files, a + Modification means (i) any addition to or deletion from the contents of a + file containing Original Software or previous Modifications and (ii) any + new file that contains any part of the Original Code or previous + Modifications. + + (c) "Subject Software" means the Original Software or Modifications or the + combination of the Original Software and Modifications, or portions of any + of the foregoing. + + (d) "Recipient" means an individual or a legal entity exercising rights + under, and complying with all of the terms of, this License. For legal + entities, "Recipient" includes any entity which controls, is controlled + by, or is under common control with Recipient. For purposes of this + definition, "control" of an entity means (a) the power, direct or + indirect, to direct or manage such entity, or (b) ownership of fifty + percent (50%) or more of the outstanding shares or beneficial ownership of + such entity. + +2. Redistribution of Source Code Subject to These Terms. Redistributions of +Subject Software in source code form must retain the notice set forth in +Exhibit A, below, in every file. A copy of this License must be included in +any documentation for such Subject Software where the recipients' rights +relating to Subject Software are described. Recipient may distribute the +source code version of Subject Software under a license of Recipient's choice, +which may contain terms different from this License, provided that (i) +Recipient is in compliance with the terms of this License, and (ii) the +license terms include this Section 2 and Sections 3, 4, 7, 8, 10, 12 and 13 of +this License, which terms may not be modified or superseded by any other terms +of such license. If Recipient distributes the source code version under a +different license Recipient must make it absolutely clear that any terms which +differ from this License are offered by Recipient alone, not by SGI. Recipient +hereby agrees to indemnify SGI for any liability incurred by SGI as a result +of any such terms Recipient offers. + +3. Redistribution in Executable Form. The notice set forth in Exhibit A must +be conspicuously included in any notice in an executable version of Subject +Software, related documentation or collateral in which Recipient describes the +user's rights relating to the Subject Software. Recipient may distribute the +executable version of Subject Software under a license of Recipient's choice, +which may contain terms different from this License, provided that (i) +Recipient is in compliance with the terms of this License, and (ii) the +license terms include this Section 3 and Sections 4, 7, 8, 10, 12 and 13 of +this License, which terms may not be modified or superseded by any other terms +of such license. If Recipient distributes the executable version under a +different license Recipient must make it absolutely clear that any terms which +differ from this License are offered by Recipient alone, not by SGI. Recipient +hereby agrees to indemnify SGI for any liability incurred by SGI as a result +of any such terms Recipient offers. + +4. Termination. This License and the rights granted hereunder will terminate +automatically if Recipient fails to comply with terms herein and fails to cure +such breach within 30 days of the breach. Any sublicense to the Subject +Software which is properly granted shall survive any termination of this +License absent termination by the terms of such sublicense. Provisions which, +by their nature, must remain in effect beyond the termination of this License +shall survive. + +5. No Trademark Rights. This License does not grant any rights to use any +trade name, trademark or service mark whatsoever. No trade name, trademark or +service mark of SGI may be used to endorse or promote products derived from +the Subject Software without prior written permission of SGI. + +6. No Other Rights. This License does not grant any rights with respect to the +OpenGL API or to any software or hardware implementation thereof or to any +other software whatsoever, nor shall any other rights or licenses not +expressly granted hereunder arise by implication, estoppel or otherwise with +respect to the Subject Software. Title to and ownership of the Original +Software at all times remains with SGI. All rights in the Original Software +not expressly granted under this License are reserved. + +7. Compliance with Laws; Non-Infringement. Recipient shall comply with all +applicable laws and regulations in connection with use and distribution of the +Subject Software, including but not limited to, all export and import control +laws and regulations of the U.S. government and other countries. Recipient may +not distribute Subject Software that (i) in any way infringes (directly or +contributorily) the rights (including patent, copyright, trade secret, +trademark or other intellectual property rights of any kind) of any other +person or entity or (ii) breaches any representation or warranty, express, +implied or statutory, which under any applicable law it might be deemed to +have been distributed. + +8. Claims of Infringement. If Recipient at any time has knowledge of any one +or more third party claims that reproduction, modification, use, distribution, +import or sale of Subject Software (including particular functionality or code +incorporated in Subject Software) infringes the third party's intellectual +property rights, Recipient must place in a well-identified web page bearing +the title "LEGAL" a description of each such claim and a description of the +party making each such claim in sufficient detail that a user of the Subject +Software will know whom to contact regarding the claim. Also, upon gaining +such knowledge of any such claim, Recipient must conspicuously include the URL +for such web page in the Exhibit A notice required under Sections 2 and 3, +above, and in the text of any related documentation, license agreement or +collateral in which Recipient describes end user's rights relating to the +Subject Software. If Recipient obtains such knowledge after it makes Subject +Software available to any other person or entity, Recipient shall take other +steps (such as notifying appropriate mailing lists or newsgroups) reasonably +calculated to inform those who received the Subject Software that new +knowledge has been obtained. + +9. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, +WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT +LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, +MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON- INFRINGING. SGI ASSUMES NO +RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE +PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY +SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN +ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED +HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, +WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), +CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY +CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK +STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER +COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF +THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY +TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO +THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT +ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO +THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT. + +11. Indemnity. Recipient shall be solely responsible for damages arising, +directly or indirectly, out of its utilization of rights under this License. +Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from +and against any loss, liability, damages, costs or expenses (including the +payment of reasonable attorneys fees) arising out of Recipient's use, +modification, reproduction and distribution of the Subject Software or out of +any representation or warranty made by Recipient. + +12. U.S. Government End Users. The Subject Software is a "commercial item" +consisting of "commercial computer software" as such terms are defined in +title 48 of the Code of Federal Regulations and all U.S. Government End Users +acquire only the rights set forth in this License and are subject to the terms +of this License. + +13. Miscellaneous. This License represents the complete agreement concerning +subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed so as to achieve as nearly as +possible the same economic effect as the original provision and the remainder +of this License will remain in effect. This License shall be governed by and +construed in accordance with the laws of the United States and the State of +California as applied to agreements entered into and to be performed entirely +within California between California residents. Any litigation relating to +this License shall be subject to the exclusive jurisdiction of the Federal +Courts of the Northern District of California (or, absent subject matter +jurisdiction in such courts, the courts of the State of California), with +venue lying exclusively in Santa Clara County, California, with the losing +party responsible for costs, including without limitation, court costs and +reasonable attorneys fees and expenses. The application of the United Nations +Convention on Contracts for the International Sale of Goods is expressly +excluded. Any law or regulation which provides that the language of a contract +shall be construed against the drafter shall not apply to this License. + +Exhibit A + +The contents of this file are subject to Sections 2, 3, 4, 7, 8, 10, 12 and 13 +of the GLX Public License Version 1.0 (the "License"). You may not use this +file except in compliance with those sections of the License. You may obtain a +copy of the License at Silicon Graphics, Inc., attn: Legal Services, 2011 N. +Shoreline Blvd., Mountain View, CA 94043 or at +http://www.sgi.com/software/opensource/glx/license.html. + +Software distributed under the License is distributed on an "AS IS" basis. ALL +WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED +WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON- +INFRINGEMENT. See the License for the specific language governing rights and +limitations under the License. + +The Original Software is GLX version 1.2 source code, released February, 1999. +The developer of the Original Software is Silicon Graphics, Inc. Those +portions of the Subject Software created by Silicon Graphics, Inc. are +Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. 3.5. CID +Font Code Public License + +CID FONT CODE PUBLIC LICENSE (Version 1.0 (3/31/99))("License") + +Subject to any applicable third party claims, Silicon Graphics, Inc. ("SGI") +hereby grants permission to Recipient (defined below), under SGI's copyrights +in the Original Software (defined below), to use, copy, modify, merge, +publish, distribute, sublicense and/or sell copies of Subject Software +(defined below) in both source code and executable form, and to permit persons +to whom the Subject Software is furnished in accordance with this License to +do the same, subject to all of the following terms and conditions, which +Recipient accepts by engaging in any such use, copying, modifying, merging, +publication, distributing, sublicensing or selling: + +1. Definitions. + + a. "Original Software" means source code of computer software code that is + described in Exhibit A as Original Software. + + b. "Modifications" means any addition to or deletion from the substance or + structure of either the Original Software or any previous Modifications. + When Subject Software is released as a series of files, a Modification + means (i) any addition to or deletion from the contents of a file + containing Original Software or previous Modifications and (ii) any new + file that contains any part of the Original Code or previous + Modifications. + + c. "Subject Software" means the Original Software or Modifications or the + combination of the Original Software and Modifications, or portions of any + of the foregoing. + + d. "Recipient" means an individual or a legal entity exercising rights + under the terms of this License. For legal entities, "Recipient" includes + any entity that controls, is controlled by, or is under common control + with Recipient. For purposes of this definition, "control" of an entity + means (i) the power, direct or indirect, to direct or manage such entity, + or (ii) ownership of fifty percent (50%) or more of the outstanding shares + or beneficial ownership of such entity. + + e. "Required Notice" means the notice set forth in Exhibit A to this + License. + + f. "Accompanying Technology" means any software or other technology that + is not a Modification and that is distributed or made publicly available + by Recipient with the Subject Software. Separate software files that do + not contain any Original Software or any previous Modification shall not + be deemed a Modification, even if such software files are aggregated as + part of a product, or in any medium of storage, with any file that does + contain Original Software or any previous Modification. + +2. License Terms. All distribution of the Subject Software must be made +subject to the terms of this License. A copy of this License and the Required +Notice must be included in any documentation for Subject Software where +Recipient's rights relating to Subject Software and/or any Accompanying +Technology are described. Distributions of Subject Software in source code +form must also include the Required Notice in every file distributed. In +addition, a ReadMe file entitled "Important Legal Notice" must be distributed +with each distribution of one or more files that incorporate Subject Software. +That file must be included with distributions made in both source code and +executable form. A copy of the License and the Required Notice must be +included in that file. Recipient may distribute Accompanying Technology under +a license of Recipient's choice, which may contain terms different from this +License, provided that (i) Recipient is in compliance with the terms of this +License, (ii) such other license terms do not modify or supersede the terms of +this License as applicable to the Subject Software, (iii) Recipient hereby +indemnifies SGI for any liability incurred by SGI as a result of the +distribution of Accompanying Technology or the use of other license terms. + +3. Termination. This License and the rights granted hereunder will terminate +automatically if Recipient fails to comply with terms herein and fails to cure +such breach within 30 days of the breach. Any sublicense to the Subject +Software that is properly granted shall survive any termination of this +License absent termination by the terms of such sublicense. Provisions which, +by their nature, must remain in effect beyond the termination of this License +shall survive. + +4. Trademark Rights. This License does not grant any rights to use any trade +name, trademark or service mark whatsoever. No trade name, trademark or +service mark of SGI may be used to endorse or promote products derived from or +incorporating any Subject Software without prior written permission of SGI. + +5. No Other Rights. No rights or licenses not expressly granted hereunder +shall arise by implication, estoppel or otherwise. Title to and ownership of +the Original Software at all times remains with SGI. All rights in the +Original Software not expressly granted under this License are reserved. + +6. Compliance with Laws; Non-Infringement. Recipient shall comply with all +applicable laws and regulations in connection with use and distribution of the +Subject Software, including but not limited to, all export and import control +laws and regulations of the U.S. government and other countries. Recipient may +not distribute Subject Software that (i) in any way infringes (directly or +contributorily) the rights (including patent, copyright, trade secret, +trademark or other intellectual property rights of any kind) of any other +person or entity, or (ii) breaches any representation or warranty, express, +implied or statutory, which under any applicable law it might be deemed to +have been distributed. + +7. Claims of Infringement. If Recipient at any time has knowledge of any one +or more third party claims that reproduction, modification, use, distribution, +import or sale of Subject Software (including particular functionality or code +incorporated in Subject Software) infringes the third party's intellectual +property rights, Recipient must place in a well-identified web page bearing +the title "LEGAL" a description of each such claim and a description of the +party making each such claim in sufficient detail that a user of the Subject +Software will know whom to contact regarding the claim. Also, upon gaining +such knowledge of any such claim, Recipient must conspicuously include the URL +for such web page in the Required Notice, and in the text of any related +documentation, license agreement or collateral in which Recipient describes +end user's rights relating to the Subject Software. If Recipient obtains such +knowledge after it makes Subject Software available to any other person or +entity, Recipient shall take other steps (such as notifying appropriate +mailing lists or newsgroups) reasonably calculated to provide such knowledge +to those who received the Subject Software. + +8. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, +WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT +LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, +MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. SGI ASSUMES NO +RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE +PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY +SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN +ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED +HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, +WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), +CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SUBJECT SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SUBJECT SOFTWARE. SOME JURISDICTIONS DO NOT +ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO THIS EXCLUSION AND +LIMITATION MAY NOT APPLY TO RECIPIENT TO THE EXTENT SO DISALLOWED. + +10. Indemnity. Recipient shall be solely responsible for damages arising, +directly or indirectly, out of its utilization of rights under this License. +Recipient will defend, indemnify and hold SGI and its successors and assigns +harmless from and against any loss, liability, damages, costs or expenses +(including the payment of reasonable attorneys fees) arising out of +(Recipient's use, modification, reproduction and distribution of the Subject +Software or out of any representation or warranty made by Recipient. + +11. U.S. Government End Users. The Subject Software is a "commercial item" +consisting of "commercial computer software" as such terms are defined in +title 48 of the Code of Federal Regulations and all U.S. Government End Users +acquire only the rights set forth in this License and are subject to the terms +of this License. + +12. Miscellaneous. This License represents the complete agreement concerning +subject matter hereof. If any provision of this License is held to be +unenforceable by any judicial or administrative authority having proper +jurisdiction with respect thereto, such provision shall be reformed so as to +achieve as nearly as possible the same economic effect as the original +provision and the remainder of this License will remain in effect. This +License shall be governed by and construed in accordance with the laws of the +United States and the State of California as applied to agreements entered +into and to be performed entirely within California between California +residents. Any litigation relating to this License shall be subject to the +exclusive jurisdiction of the Federal Courts of the Northern District of +California (or, absent subject matter jurisdiction in such courts, the courts +of the State of California), with venue lying exclusively in Santa Clara +County, California, with the losing party responsible for costs, including +without limitation, court costs and reasonable attorneys fees and expenses. +The application of the United Nations Convention on Contracts for the +International Sale of Goods is expressly excluded. Any law or regulation that +provides that the language of a contract shall be construed against the +drafter shall not apply to this License. + +Exhibit A + +Copyright (c) 1994-1999 Silicon Graphics, Inc. + +The contents of this file are subject to the CID Font Code Public License +Version 1.0 (the "License"). You may not use this file except in compliance +with the License. You may obtain a copy of the License at Silicon Graphics, +Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 +or at http://www.sgi.com/software/opensource/cid/license.html + +Software distributed under the License is distributed on an "AS IS" basis. ALL +WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED +WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF +NON-INFRINGEMENT. See the License for the specific language governing rights +and limitations under the License. + +The Original Software (as defined in the License) is CID font code that was +developed by Silicon Graphics, Inc. Those portions of the Subject Software (as +defined in the License) that were created by Silicon Graphics, Inc. are +Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. + +[NOTE: When using this text in connection with Subject Software delivered +solely in object code form, Recipient may replace the words "this file" with +"this software" in both the first and second sentences.] 3.6. Bitstream Vera +Fonts Copyright + +The fonts have a generous copyright, allowing derivative works (as long as +"Bitstream" or "Vera" are not in the names), and full redistribution (so long +as they are not *sold* by themselves). They can be be bundled, redistributed +and sold with any software. + +The fonts are distributed under the following copyright: + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a +trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license ("Fonts") and associated documentation +files (the "Font Software"), to reproduce and distribute the Font Software, +including without limitation the rights to use, copy, merge, publish, +distribute, and/or sell copies of the Font Software, and to permit persons to +whom the Font Software is furnished to do so, subject to the following +conditions: + +The above copyright and trademark notices and this permission notice shall be +included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular the +designs of glyphs or characters in the Fonts may be modified and additional +glyphs or characters may be added to the Fonts, only if the fonts are renamed +to names not containing either the words "Bitstream" or the word "Vera". + +This License becomes null and void to the extent applicable to Fonts or Font +Software that has been modified and is distributed under the "Bitstream Vera" +names. + +The Font Software may be sold as part of a larger software package but no copy +of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, +SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO +USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome Foundation, +and Bitstream Inc., shall not be used in advertising or otherwise to promote +the sale, use or other dealings in this Font Software without prior written +authorization from the Gnome Foundation or Bitstream Inc., respectively. For +further information, contact: fonts at gnome dot org. 3.7. Bigelow & Holmes +Inc and URW++ GmbH Luxi font license + +Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font instruction +code copyright (c) 2001 by URW++ GmbH. All Rights Reserved. Luxi is a +registered trademark of Bigelow & Holmes Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of these Fonts and associated documentation files (the "Font Software"), to +deal in the Font Software, including without limitation the rights to use, +copy, merge, publish, distribute, sublicense, and/or sell copies of the Font +Software, and to permit persons to whom the Font Software is furnished to do +so, subject to the following conditions: + +The above copyright and trademark notices and this permission notice shall be +included in all copies of one or more of the Font Software. + +The Font Software may not be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may not be modified nor may +additional glyphs or characters be added to the Fonts. This License becomes +null and void when the Fonts or Font Software have been modified. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & HOLMES INC. OR URW++ +GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY +GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR +INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT +SOFTWARE. + +Except as contained in this notice, the names of Bigelow & Holmes Inc. and +URW++ GmbH. shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Font Software without prior written +authorization from Bigelow & Holmes Inc. and URW++ GmbH. + +For further information, contact: + +info@urwpp.de or design@bigelowandholmes.com + + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to zlib v1.2.3, which is included +with JRE 7, JDK 7, and OpenJDK 7 + +--- begin of LICENSE --- + + version 1.2.3, July 18th, 2005 + + Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +--- end of LICENSE --- + +------------------------------------------------------------------------------- + +%% This notice is provided with respect to the following which is +included with JRE 7, JDK 7, and OpenJDK 7, except where noted: + + Apache Derby 10.8.1.2 [included with JDK 7 only] + Apache Jakarta BCEL 5.2 + Apache Jakarta Regexp 1.4 + Apache Santuario XMLSec-Java 1.4.2 + Apache Xalan-Java 2.7.1 + Apache Xerces2 Java 2.10.0 + Apache XML Resolver 1.1 + + +--- begin of LICENSE --- + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--- end of LICENSE --- + +------------------------------------------------------------------------------- -HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD -TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE.  Hewlett-Packard shall not be liable for errors -contained herein or direct, indirect, special, incidental or -consequential damages in connection with the furnishing, -performance, or use of this material. - -END  src/solaris/native/sun/awt/HPkeysym.h -****************************************************** -****************************************************** -BEGIN src/solaris/native/sun/awt/Xrandr.h -/* - * $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $ - * - * Copyright © 2000 Compaq Computer Corporation, Inc. - * Copyright © 2002 Hewlett-Packard Company, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Compaq not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission.  HP makes no representations about the - * suitability of this software for any purpose.  It is provided "as is" - * without express or implied warranty. - * - * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author:  Jim Gettys, HP Labs, HP. - */ - - -END src/solaris/native/sun/awt/Xrandr.h -****************************************************** -BEGIN src/solaris/native/sun/awt/extutil.h -/* - * $Xorg: extutil.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ - * -Copyright 1989, 1998  The Open Group - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * - * Author:  Jim Fulton, MIT The Open Group - * - *                     Xlib Extension-Writing Utilities - * - * This package contains utilities for writing the client API for various - * protocol extensions.  THESE INTERFACES ARE NOT PART OF THE X STANDARD AND - * ARE SUBJECT TO CHANGE! - */ -/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ - -END src/solaris/native/sun/awt/extutil.h -****************************************************** -BEGIN   src/solaris/native/sun/awt/fontconfig.h -/* - * $RCSId: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.30 2002/09/26 00:17:27 -keithp Exp $ - * - * Copyright © 2001 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission.  Keith Packard makes no - * representations about the suitability of this software for any purpose.  It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - -END   src/solaris/native/sun/awt/fontconfig.h -****************************************************** -BEGIN src/solaris/native/sun/awt/list.c -AND  src/solaris/native/sun/awt/list.h -AND src/solaris/native/sun/awt/multiVis.c -AND  src/solaris/native/sun/awt/multiVis.h -AND  src/solaris/native/sun/awt/wsutils.h - -Copyright (c) 1994 Hewlett-Packard Co. -Copyright (c) 1996  X Consortium - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from the X Consortium. - -END src/solaris/native/sun/awt/list.c -AND  src/solaris/native/sun/awt/list.h -AND src/solaris/native/sun/awt/multiVis.c -AND  src/solaris/native/sun/awt/multiVis.h -AND  src/solaris/native/sun/awt/wsutils.h - -***************************************************************** -BEGIN src/solaris/native/sun/awt/randr.h - - * - * Copyright © 2000, Compaq Computer Corporation, - * Copyright © 2002, Hewlett Packard, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Compaq or HP not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission.  HP makes no representations about the - * suitability of this software for any purpose.  It is provided "as is" - * without express or implied warranty. - * - * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author:  Jim Gettys, HP Labs, Hewlett-Packard, Inc. - -END src/solaris/native/sun/awt/randr.h -***************************************************** - -BEGIN src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h - * Mesa 3-D graphics library - * Version:  4.1 - * - * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -END src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h diff --git a/make/com/sun/tools/attach/Makefile b/make/com/sun/tools/attach/Makefile index ac5994d89bec21ecb8ac51df0b850b4504eefaaa..1179f1860b262a0b4ee5e7bad3397f939bf127e2 100644 --- a/make/com/sun/tools/attach/Makefile +++ b/make/com/sun/tools/attach/Makefile @@ -48,6 +48,9 @@ include Exportedfiles.gmk ifeq ($(PLATFORM), solaris) OTHER_LDLIBS += -ldoor endif +ifeq ($(PLATFORM), windows) +EXTRA_LIBS += psapi.lib +endif vpath %.c $(PLATFORM_SRC)/native/sun/tools/attach diff --git a/make/common/Defs-embedded.gmk b/make/common/Defs-embedded.gmk index f196e2f4fedffe2284d729818fbd11df441da13e..de449f82b5a0f704218e9abafa73b0738c7eb168 100644 --- a/make/common/Defs-embedded.gmk +++ b/make/common/Defs-embedded.gmk @@ -49,5 +49,21 @@ RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX) JRE_REDUCED_HEADLESS_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-reduced-headless-image JRE_REDUCED_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-reduced-image +# Override on linux to further reduce binary/lib sizes in product build +ifeq ($(PLATFORM), linux) + ifeq ($(VARIANT), OPT) + ifneq ($(NO_STRIP), true) + ifneq ($(DEBUG_BINARIES), true) + POST_STRIP_PROCESS = $(STRIP) --strip-unneeded + endif + endif + endif +endif + +# NIO Platform specific source file location +ifdef CROSS_COMPILE_ARCH + NIO_PLATFORM_CLASSES_ROOT_DIR = $(CLOSED_PLATFORM_SRC)/classes/ +endif + endif # JAVASE_EMBEDDED diff --git a/make/common/Release-embedded.gmk b/make/common/Release-embedded.gmk index 06e2127ecf307da3cf0d589d966f3b969e735fe9..655b324d26596245dd30fa994930ec116b3e67c1 100644 --- a/make/common/Release-embedded.gmk +++ b/make/common/Release-embedded.gmk @@ -53,25 +53,30 @@ $(NOT_HEADLESS_RT_JAR_LIST): $(NOT_RT_JAR_LIST) $(RM) $(HEADLESS_CLASSLIST) $(RM) $(NOT_HEADLESS_RT_JAR_LIST) $(CP) $(NOT_RT_JAR_LIST) $(NOT_HEADLESS_RT_JAR_LIST) +# List all the packages to be excluded $(ECHO) "sun/awt/motif/" >> $@ $(ECHO) "sun/awt/X11/" >> $@ $(ECHO) "sun/applet/" >> $@ $(ECHO) "sun/java2d/opengl/" >> $@ $(ECHO) "com/sun/java/swing/plaf/" >> $@ - $(ECHO) "sun/awt/motif/MFontConfiguration" >$(HEADLESS_CLASSLIST) - $(ECHO) "sun/applet/AppContextCreator" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/applet/AppletAudioClip" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/GLXSurfaceData" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/GLXSurfaceData"\$$"GLXOffScreenSurfaceData" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/GLXVolatileSurfaceManager" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/OGLSurfaceData" >>$(HEADLESS_CLASSLIST) +# List all the individual classes to be included + $(ECHO) "sun/awt/motif/MFontConfiguration.class" >$(HEADLESS_CLASSLIST) + $(ECHO) "sun/applet/AppContextCreator.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/applet/AppletAudioClip.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/GLXSurfaceData.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/GLXSurfaceData"\$$"GLXOffScreenSurfaceData.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/GLXVolatileSurfaceManager.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/OGLSurfaceData.class" >>$(HEADLESS_CLASSLIST) + $(TOTAL_HEADLESS_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_HEADLESS_RT_JAR_LIST) $(prep-target) $(RM) $@.temp $(CD) $(CLASSBINDIR) ; \ $(BOOT_JAVA_CMD) -jar $(JARREORDER_JARFILE) \ - -o $@.temp $(HEADLESS_CLASSLIST) $(NOT_HEADLESS_RT_JAR_LIST) . + -o $@.temp - $(NOT_HEADLESS_RT_JAR_LIST) . +# Add on the explicitly included class files from the otherwise excluded packages + $(CAT) $(HEADLESS_CLASSLIST) >> $@.temp $(MV) $@.temp $@ @$(CD) $(CLASSBINDIR); $(java-vm-cleanup) @@ -124,13 +129,9 @@ NOT_REDUCEDJRE_LIB = \ $(LIBARCH)/libjavaplugin_nscp.so \ $(LIBARCH)/libjavaplugin_oji.so - -ifeq ($(PLATFORM), linux) - STRIP_OPTS = --strip-unneeded -else - STRIP_OPTS = -x -endif - +# JRE docs that don't get included in reduced jre image top directory +NOT_REDUCEDJRE_DOC = \ + Welcome.html reduced-image-jre:: @$(ECHO) Starting to Produce Reduced JRE @@ -142,12 +143,6 @@ reduced-image-jre:: $(CD) $(JRE_IMAGE_DIR); \ $(TAR) cf - . | ($(CD) $(JRE_REDUCED_IMAGE_DIR); $(TAR) xf - ); - @# strip the main .so files - $(STRIP) $(STRIP_OPTS) $(JRE_REDUCED_IMAGE_DIR)/lib/$(LIBARCH)/client/libjvm.so -ifndef BUILD_CLIENT_ONLY - $(STRIP) $(STRIP_OPTS) $(JRE_REDUCED_IMAGE_DIR)/lib/$(LIBARCH)/server/libjvm.so -endif - @# @# Remove all of the files that are not needed for the @# reduced JRE @@ -158,6 +153,9 @@ endif for l in $(NOT_REDUCEDJRE_LIB) ; do \ $(RM) $(JRE_REDUCED_IMAGE_DIR)/lib/$$l ; \ done + for l in $(NOT_REDUCEDJRE_DOC) ; do \ + $(RM) $(JRE_REDUCED_IMAGE_DIR)/$$l ; \ + done @# Remove misc. other files $(RM) -r $(JRE_REDUCED_IMAGE_DIR)/man diff --git a/make/common/Release.gmk b/make/common/Release.gmk index 1d3762087b10928f007022670af0db92cd583ef5..ed9ac7ca87e8c087d954d8b3d4bcfb1814825c6c 100644 --- a/make/common/Release.gmk +++ b/make/common/Release.gmk @@ -900,8 +900,10 @@ initial-image-jdk-db: $(DB_ZIP_LIST) for d in $(DB_ZIP_LIST); do \ ($(CD) $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $$d); \ done + $(CP) $(ABS_DB_PATH)/README-JDK.html $(JDK_IMAGE_DIR)/db $(RM) -rf $(DEMODIR)/db $(MV) $(JDK_IMAGE_DIR)/db/demo $(DEMODIR)/db + $(CP) $(ABS_DB_PATH)/README-JDK-DEMOS.html $(DEMODIR)/db/ $(RM) $(JDK_IMAGE_DIR)/db/index.html $(JDK_IMAGE_DIR)/db/register.html endif diff --git a/make/common/shared/Defs.gmk b/make/common/shared/Defs.gmk index 87a3ec3b2666ed311179e9212961c72f17463384..5c2f6ad23cf262fb0f9c1c7c9246bfa0739f1b6e 100644 --- a/make/common/shared/Defs.gmk +++ b/make/common/shared/Defs.gmk @@ -195,8 +195,8 @@ ifndef JDK_MAJOR_VERSION endif ifndef JDK_MINOR_VERSION - JDK_MINOR_VERSION = 7 - PREVIOUS_MINOR_VERSION = 6 + JDK_MINOR_VERSION = 8 + PREVIOUS_MINOR_VERSION = 7 endif ifndef JDK_MICRO_VERSION diff --git a/make/docs/Makefile b/make/docs/Makefile index 9a5a1aa29b7579ff5618c7885d65fcebeafa0c56..8517654153da8192cebf9ff9303e0641c592cbe5 100644 --- a/make/docs/Makefile +++ b/make/docs/Makefile @@ -223,6 +223,9 @@ endif ifeq ($(JDK_MINOR_VERSION),6) JDK_IS_FCS = true endif +ifeq ($(JDK_MINOR_VERSION),7) + JDK_IS_FCS = true +endif ifeq ($(JDK_IS_FCS),false) ifneq ($(MILESTONE), fcs) DRAFT_HEADER =
DRAFT $(MILESTONE)-$(BUILD_NUMBER) diff --git a/make/java/nio/Makefile b/make/java/nio/Makefile index 4c55385607ee405e40377be0594a25d805c76f2c..cedc64bfa467916275d90f78de6d6709e4c45916 100644 --- a/make/java/nio/Makefile +++ b/make/java/nio/Makefile @@ -255,7 +255,7 @@ FILES_export += \ sun/nio/fs/LinuxWatchService.java \ sun/nio/fs/UnixCopyFile.java \ sun/nio/fs/UnixNativeDispatcher.java - + FILES_gen += \ sun/nio/fs/UnixConstants.java endif # PLATFORM = linux @@ -771,7 +771,7 @@ $(CS_GEN)/CharsetEncoder.java: $(CHARSET_X_CODER_TEMPLATE) $(GEN_CODER_SH) # GEN_EX_SH = genExceptions.sh - + GEN_EX_CMD = NAWK="$(NAWK)" SH="$(SH)" $(SH) $(GEN_EX_SH) $(CH_GEN)/%Exception.java: genExceptions.sh $(CH_SRC)/exceptions @@ -820,14 +820,19 @@ $(TEMPDIR)/$(GENSOR_SRC) : $(GENSOR_SRC) $(GENSOR_EXE) : $(TEMPDIR)/$(GENSOR_SRC) $(prep-target) - ($(CD) $(TEMPDIR); $(HOST_CC) $(CPPFLAGS) $(LDDFLAGS) \ + ($(CD) $(TEMPDIR); $(CC) $(CPPFLAGS) $(LDDFLAGS) \ -o genSocketOptionRegistry$(EXE_SUFFIX) $(GENSOR_SRC)) +ifdef NIO_PLATFORM_CLASSES_ROOT_DIR +$(SCH_GEN)/SocketOptionRegistry.java: $(NIO_PLATFORM_CLASSES_ROOT_DIR)/sun/nio/ch/SocketOptionRegistry-$(PLATFORM)-$(ARCH).java + $(prep-target) + $(CP) $< $@ +else $(SCH_GEN)/SocketOptionRegistry.java: $(GENSOR_EXE) $(prep-target) NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(SOR_COPYRIGHT_YEARS)" > $@ $(GENSOR_EXE) >> $@ - +endif # # Generated sun.nio.cs SingleByte classes # @@ -851,12 +856,18 @@ GENUC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENUC_SRC) | \ $(GENUC_EXE) : $(GENUC_SRC) $(prep-target) - $(HOST_CC) $(CPPFLAGS) -o $@ $(GENUC_SRC) + $(CC) $(CPPFLAGS) -o $@ $(GENUC_SRC) +ifdef NIO_PLATFORM_CLASSES_ROOT_DIR +$(SFS_GEN)/UnixConstants.java: $(NIO_PLATFORM_CLASSES_ROOT_DIR)/sun/nio/fs/UnixConstants-$(PLATFORM)-$(ARCH).java + $(prep-target) + $(CP) $< $@ +else $(SFS_GEN)/UnixConstants.java: $(GENUC_EXE) $(prep-target) NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(GENUC_COPYRIGHT_YEARS)" > $@ $(GENUC_EXE) >> $@ +endif GENSC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genSolarisConstants.c @@ -867,11 +878,17 @@ GENSC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSC_SRC) | \ $(GENSC_EXE) : $(GENSC_SRC) $(prep-target) - $(HOST_CC) $(CPPFLAGS) -o $@ $(GENSC_SRC) + $(CC) $(CPPFLAGS) -o $@ $(GENSC_SRC) +ifdef NIO_PLATFORM_CLASSES_ROOT_DIR +$(SFS_GEN)/SolarisConstants.java: $(NIO_PLATFORM_CLASSES_ROOT_DIR)/sun/nio/fs/SolarisConstants-$(PLATFORM)-$(ARCH).java + $(prep-target) + $(CP) $< $@ +else $(SFS_GEN)/SolarisConstants.java: $(GENSC_EXE) $(prep-target) NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(GENSC_COPYRIGHT_YEARS)" > $@ $(GENSC_EXE) >> $@ +endif .PHONY: sources diff --git a/make/javax/crypto/Makefile b/make/javax/crypto/Makefile index f8b55a411a37a44d04d64b4235d401fad9e10df6..b9eee08bd747e878cd5d30fe66cf28b4d6f21425 100644 --- a/make/javax/crypto/Makefile +++ b/make/javax/crypto/Makefile @@ -370,8 +370,7 @@ $(SIGNED_POLICY_BUILDDIR)/limited/local_policy.jar: \ CLOSED_DIR = $(BUILDDIR)/closed/javax/crypto -release: $(SIGNED_DIR)/jce.jar sign-policy $(CLOSED_DIR)/doc/COPYRIGHT.html \ - $(CLOSED_DIR)/doc/README.txt +release: $(SIGNED_DIR)/jce.jar sign-policy $(CLOSED_DIR)/doc/README.txt $(RM) -r \ $(JCE_BUILD_DIR)/release/UnlimitedJCEPolicy \ $(JCE_BUILD_DIR)/release/jce.jar \ @@ -387,7 +386,6 @@ release: $(SIGNED_DIR)/jce.jar sign-policy $(CLOSED_DIR)/doc/COPYRIGHT.html \ $(CP) \ $(SIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar \ $(SIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar \ - $(CLOSED_DIR)/doc/COPYRIGHT.html \ $(CLOSED_DIR)/doc/README.txt \ $(JCE_BUILD_DIR)/release/UnlimitedJCEPolicy cd $(JCE_BUILD_DIR)/release ; \ diff --git a/make/sun/security/pkcs11/Makefile b/make/sun/security/pkcs11/Makefile index c7c33504f55f50b7aa2837250ce23ee9ef832b89..a63198f5fb4f4fef4320095b5120bc1eeea936b2 100644 --- a/make/sun/security/pkcs11/Makefile +++ b/make/sun/security/pkcs11/Makefile @@ -147,7 +147,7 @@ OTHER_INCLUDES += \ # Rules # CLASSDESTDIR = $(TEMPDIR)/classes -JAVAHFLAGS += -classpath $(CLASSDESTDIR) +JAVAHFLAGS += -Xbootclasspath/p:$(CLASSDESTDIR) include $(BUILDDIR)/common/Mapfile-vers.gmk diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java index ac12b2080b99c70206464365fd67b504954d6caa..0cff673711c9676494631f94dd00cbfcf768e562 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java @@ -174,8 +174,11 @@ class GTKFileChooserUI extends SynthFileChooserUI { // construct the resulting string for (int i=0; i 0) { + buf.append(" "); + } if (len > 1) { - buf.append(" \""); + buf.append("\""); } buf.append(result.get(i)); if (len > 1) { diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties index 45f4a4dc7a659ea52ebee7faa371a2ca634b70b4..3696c0e6b1090d7d98bf19ab682a0a54d5d1b11d 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties @@ -56,9 +56,9 @@ FileChooser.deleteFileButtonMnemonic=76 FileChooser.renameFileButtonText=Rename File FileChooser.renameFileButtonMnemonic=82 FileChooser.cancelButtonText=Cancel -#FileChooser.cancelButtonMnemonic=67 +FileChooser.cancelButtonMnemonic=67 FileChooser.saveButtonText=OK -#FileChooser.saveButtonMnemonic=79 +FileChooser.saveButtonMnemonic=79 FileChooser.openButtonText=OK FileChooser.openButtonMnemonic=79 FileChooser.saveDialogTitleText=Save @@ -79,5 +79,5 @@ FileChooser.renameFileDialogText=Rename file "{0}" to FileChooser.renameFileErrorTitle=Error FileChooser.renameFileErrorText=Error renaming file "{0}" to "{1}" -#OptionPane.okButtonMnemonic=79 -#OptionPane.cancelButtonMnemonic=67 +OptionPane.okButtonMnemonic=79 +OptionPane.cancelButtonMnemonic=67 diff --git a/src/share/classes/java/awt/Toolkit.java b/src/share/classes/java/awt/Toolkit.java index 3ac2714dcef892da3bb4d97a96f61fa2123715bb..8187084b52d176f1843e9b17a7f4f217fcd188da 100644 --- a/src/share/classes/java/awt/Toolkit.java +++ b/src/share/classes/java/awt/Toolkit.java @@ -1857,7 +1857,7 @@ public abstract class Toolkit { /** * Adds the specified property change listener for the named desktop - * property. When a {@link PropertyChangeListenerProxy} object is added, + * property. When a {@link java.beans.PropertyChangeListenerProxy} object is added, * its property name is ignored, and the wrapped listener is added. * If {@code name} is {@code null} or {@code pcl} is {@code null}, * no exception is thrown and no action is performed. @@ -1874,7 +1874,7 @@ public abstract class Toolkit { /** * Removes the specified property change listener for the named - * desktop property. When a {@link PropertyChangeListenerProxy} object + * desktop property. When a {@link java.beans.PropertyChangeListenerProxy} object * is removed, its property name is ignored, and * the wrapped listener is removed. * If {@code name} is {@code null} or {@code pcl} is {@code null}, @@ -1893,11 +1893,11 @@ public abstract class Toolkit { /** * Returns an array of all the property change listeners * registered on this toolkit. The returned array - * contains {@code PropertyChangeListenerProxy} objects + * contains {@link java.beans.PropertyChangeListenerProxy} objects * that associate listeners with the names of desktop properties. * - * @return all of this toolkit's {@ code PropertyChangeListener} - * objects wrapped in {@code PropertyChangeListenerProxy} objects + * @return all of this toolkit's {@link PropertyChangeListener} + * objects wrapped in {@code java.beans.PropertyChangeListenerProxy} objects * or an empty array if no listeners are added * * @see PropertyChangeSupport#getPropertyChangeListeners() diff --git a/src/share/classes/java/awt/color/ICC_Profile.java b/src/share/classes/java/awt/color/ICC_Profile.java index 8bfe98e2d7a89d180ab2c02e8c5f0ec1e82a6a22..81212fbfeaf141dff32acb1c6f88a3a8c6cda374 100644 --- a/src/share/classes/java/awt/color/ICC_Profile.java +++ b/src/share/classes/java/awt/color/ICC_Profile.java @@ -1382,13 +1382,19 @@ public class ICC_Profile implements Serializable { /** * Sets a particular tagged data element in the profile from - * a byte array. This method is useful - * for advanced applets or applications which need to access - * profile data directly. + * a byte array. The array should contain data in a format, corresponded + * to the {@code tagSignature} as defined in the ICC specification, section 10. + * This method is useful for advanced applets or applications which need to + * access profile data directly. * * @param tagSignature The ICC tag signature for the data element * you want to set. * @param tagData the data to set for the specified tag signature + * @throws IllegalArgumentException if {@code tagSignature} is not a signature + * as defined in the ICC specification. + * @throws IllegalArgumentException if a content of the {@code tagData} + * array can not be interpreted as valid tag data, corresponding + * to the {@code tagSignature}. * @see #getData */ public void setData(int tagSignature, byte[] tagData) { diff --git a/src/share/classes/java/lang/Byte.java b/src/share/classes/java/lang/Byte.java index 2ab00f8f97deafccf9070685e78807744f58c866..cb260f803c9d99f714028c4b849a39bad051b041 100644 --- a/src/share/classes/java/lang/Byte.java +++ b/src/share/classes/java/lang/Byte.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, 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 @@ -324,40 +324,45 @@ public final class Byte extends Number implements Comparable { } /** - * Returns the value of this {@code Byte} as a - * {@code short}. + * Returns the value of this {@code Byte} as a {@code short} after + * a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public short shortValue() { return (short)value; } /** - * Returns the value of this {@code Byte} as an - * {@code int}. + * Returns the value of this {@code Byte} as an {@code int} after + * a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public int intValue() { return (int)value; } /** - * Returns the value of this {@code Byte} as a - * {@code long}. + * Returns the value of this {@code Byte} as a {@code long} after + * a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public long longValue() { return (long)value; } /** - * Returns the value of this {@code Byte} as a - * {@code float}. + * Returns the value of this {@code Byte} as a {@code float} after + * a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public float floatValue() { return (float)value; } /** - * Returns the value of this {@code Byte} as a - * {@code double}. + * Returns the value of this {@code Byte} as a {@code double} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public double doubleValue() { return (double)value; diff --git a/src/share/classes/java/lang/Double.java b/src/share/classes/java/lang/Double.java index 1f6c9d4ca3b3479f7b4473e75e1af1eb36089cc3..6f8cdaf1eb2a60f4fdce634b4401012ed6dd66f9 100644 --- a/src/share/classes/java/lang/Double.java +++ b/src/share/classes/java/lang/Double.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2011, 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 @@ -634,11 +634,12 @@ public final class Double extends Number implements Comparable { } /** - * Returns the value of this {@code Double} as a {@code byte} (by - * casting to a {@code byte}). + * Returns the value of this {@code Double} as a {@code byte} + * after a narrowing primitive conversion. * * @return the {@code double} value represented by this object * converted to type {@code byte} + * @jls 5.1.3 Narrowing Primitive Conversions * @since JDK1.1 */ public byte byteValue() { @@ -646,11 +647,12 @@ public final class Double extends Number implements Comparable { } /** - * Returns the value of this {@code Double} as a - * {@code short} (by casting to a {@code short}). + * Returns the value of this {@code Double} as a {@code short} + * after a narrowing primitive conversion. * * @return the {@code double} value represented by this object * converted to type {@code short} + * @jls 5.1.3 Narrowing Primitive Conversions * @since JDK1.1 */ public short shortValue() { @@ -658,8 +660,9 @@ public final class Double extends Number implements Comparable { } /** - * Returns the value of this {@code Double} as an - * {@code int} (by casting to type {@code int}). + * Returns the value of this {@code Double} as an {@code int} + * after a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions * * @return the {@code double} value represented by this object * converted to type {@code int} @@ -669,22 +672,24 @@ public final class Double extends Number implements Comparable { } /** - * Returns the value of this {@code Double} as a - * {@code long} (by casting to type {@code long}). + * Returns the value of this {@code Double} as a {@code long} + * after a narrowing primitive conversion. * * @return the {@code double} value represented by this object * converted to type {@code long} + * @jls 5.1.3 Narrowing Primitive Conversions */ public long longValue() { return (long)value; } /** - * Returns the {@code float} value of this - * {@code Double} object. + * Returns the value of this {@code Double} as a {@code float} + * after a narrowing primitive conversion. * * @return the {@code double} value represented by this object * converted to type {@code float} + * @jls 5.1.3 Narrowing Primitive Conversions * @since JDK1.0 */ public float floatValue() { @@ -692,8 +697,7 @@ public final class Double extends Number implements Comparable { } /** - * Returns the {@code double} value of this - * {@code Double} object. + * Returns the {@code double} value of this {@code Double} object. * * @return the {@code double} value represented by this object */ diff --git a/src/share/classes/java/lang/Float.java b/src/share/classes/java/lang/Float.java index 612888f32098733b9343253b0325cc3794e55e97..fa4bfb73857fbb50dc4cb4bbe6d18562cba735de 100644 --- a/src/share/classes/java/lang/Float.java +++ b/src/share/classes/java/lang/Float.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2011, 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 @@ -556,22 +556,24 @@ public final class Float extends Number implements Comparable { } /** - * Returns the value of this {@code Float} as a {@code byte} (by - * casting to a {@code byte}). + * Returns the value of this {@code Float} as a {@code byte} after + * a narrowing primitive conversion. * * @return the {@code float} value represented by this object * converted to type {@code byte} + * @jls 5.1.3 Narrowing Primitive Conversions */ public byte byteValue() { return (byte)value; } /** - * Returns the value of this {@code Float} as a {@code short} (by - * casting to a {@code short}). + * Returns the value of this {@code Float} as a {@code short} + * after a narrowing primitive conversion. * * @return the {@code float} value represented by this object * converted to type {@code short} + * @jls 5.1.3 Narrowing Primitive Conversions * @since JDK1.1 */ public short shortValue() { @@ -579,22 +581,24 @@ public final class Float extends Number implements Comparable { } /** - * Returns the value of this {@code Float} as an {@code int} (by - * casting to type {@code int}). + * Returns the value of this {@code Float} as an {@code int} after + * a narrowing primitive conversion. * * @return the {@code float} value represented by this object * converted to type {@code int} + * @jls 5.1.3 Narrowing Primitive Conversions */ public int intValue() { return (int)value; } /** - * Returns value of this {@code Float} as a {@code long} (by - * casting to type {@code long}). + * Returns value of this {@code Float} as a {@code long} after a + * narrowing primitive conversion. * * @return the {@code float} value represented by this object * converted to type {@code long} + * @jls 5.1.3 Narrowing Primitive Conversions */ public long longValue() { return (long)value; @@ -610,11 +614,12 @@ public final class Float extends Number implements Comparable { } /** - * Returns the {@code double} value of this {@code Float} object. + * Returns the value of this {@code Float} as a {@code double} + * after a widening primitive conversion. * * @return the {@code float} value represented by this - * object is converted to type {@code double} and the - * result of the conversion is returned. + * object converted to type {@code double} + * @jls 5.1.2 Widening Primitive Conversions */ public double doubleValue() { return (double)value; diff --git a/src/share/classes/java/lang/Integer.java b/src/share/classes/java/lang/Integer.java index a87e4b1ab5d68f57aaf6f66bbf36b6275ea93f09..605918c839e82db6c80703633e898fbd494575aa 100644 --- a/src/share/classes/java/lang/Integer.java +++ b/src/share/classes/java/lang/Integer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2011, 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 @@ -678,16 +678,18 @@ public final class Integer extends Number implements Comparable { } /** - * Returns the value of this {@code Integer} as a - * {@code byte}. + * Returns the value of this {@code Integer} as a {@code byte} + * after a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions */ public byte byteValue() { return (byte)value; } /** - * Returns the value of this {@code Integer} as a - * {@code short}. + * Returns the value of this {@code Integer} as a {@code short} + * after a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions */ public short shortValue() { return (short)value; @@ -702,24 +704,27 @@ public final class Integer extends Number implements Comparable { } /** - * Returns the value of this {@code Integer} as a - * {@code long}. + * Returns the value of this {@code Integer} as a {@code long} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public long longValue() { return (long)value; } /** - * Returns the value of this {@code Integer} as a - * {@code float}. + * Returns the value of this {@code Integer} as a {@code float} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public float floatValue() { return (float)value; } /** - * Returns the value of this {@code Integer} as a - * {@code double}. + * Returns the value of this {@code Integer} as a {@code double} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public double doubleValue() { return (double)value; diff --git a/src/share/classes/java/lang/Long.java b/src/share/classes/java/lang/Long.java index bee7da3611ead3a93b92c1d04e84992c3bfcdc79..2c5905a40ca5414097bb2a2771eaa4956f124042 100644 --- a/src/share/classes/java/lang/Long.java +++ b/src/share/classes/java/lang/Long.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2011, 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 @@ -703,24 +703,27 @@ public final class Long extends Number implements Comparable { } /** - * Returns the value of this {@code Long} as a - * {@code byte}. + * Returns the value of this {@code Long} as a {@code byte} after + * a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions */ public byte byteValue() { return (byte)value; } /** - * Returns the value of this {@code Long} as a - * {@code short}. + * Returns the value of this {@code Long} as a {@code short} after + * a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions */ public short shortValue() { return (short)value; } /** - * Returns the value of this {@code Long} as an - * {@code int}. + * Returns the value of this {@code Long} as an {@code int} after + * a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions */ public int intValue() { return (int)value; @@ -735,16 +738,18 @@ public final class Long extends Number implements Comparable { } /** - * Returns the value of this {@code Long} as a - * {@code float}. + * Returns the value of this {@code Long} as a {@code float} after + * a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public float floatValue() { return (float)value; } /** - * Returns the value of this {@code Long} as a - * {@code double}. + * Returns the value of this {@code Long} as a {@code double} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public double doubleValue() { return (double)value; diff --git a/src/share/classes/java/lang/Number.java b/src/share/classes/java/lang/Number.java index 216ce8d7f4e0ce5ce89a1f9e0c44fa8037d9e652..d901609571b1ef1a6675bcb4caf096c858af3512 100644 --- a/src/share/classes/java/lang/Number.java +++ b/src/share/classes/java/lang/Number.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2011, 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 @@ -26,69 +26,78 @@ package java.lang; /** - * The abstract class Number is the superclass of classes - * BigDecimal, BigInteger, - * Byte, Double, Float, - * Integer, Long, and Short. - *

- * Subclasses of Number must provide methods to convert - * the represented numeric value to byte, double, - * float, int, long, and - * short. + * The abstract class {@code Number} is the superclass of platform + * classes representing numeric values that are convertible to the + * primitive types {@code byte}, {@code double}, {@code float}, {@code + * int}, {@code long}, and {@code short}. + * + * The specific semantics of the conversion from the numeric value of + * a particular {@code Number} implementation to a given primitive + * type is defined by the {@code Number} implementation in question. + * + * For platform classes, the conversion is often analogous to a + * narrowing primitive conversion or a widening primitive conversion + * as defining in The Java™ Language Specification + * for converting between primitive types. Therefore, conversions may + * lose information about the overall magnitude of a numeric value, may + * lose precision, and may even return a result of a different sign + * than the input. + * + * See the documentation of a given {@code Number} implementation for + * conversion details. * * @author Lee Boynton * @author Arthur van Hoff - * @see java.lang.Byte - * @see java.lang.Double - * @see java.lang.Float - * @see java.lang.Integer - * @see java.lang.Long - * @see java.lang.Short + * @jls 5.1.2 Widening Primitive Conversions + * @jls 5.1.3 Narrowing Primitive Conversions * @since JDK1.0 */ public abstract class Number implements java.io.Serializable { /** - * Returns the value of the specified number as an int. - * This may involve rounding or truncation. + * Returns the value of the specified number as an {@code int}, + * which may involve rounding or truncation. * * @return the numeric value represented by this object after conversion - * to type int. + * to type {@code int}. */ public abstract int intValue(); /** - * Returns the value of the specified number as a long. - * This may involve rounding or truncation. + * Returns the value of the specified number as a {@code long}, + * which may involve rounding or truncation. * * @return the numeric value represented by this object after conversion - * to type long. + * to type {@code long}. */ public abstract long longValue(); /** - * Returns the value of the specified number as a float. - * This may involve rounding. + * Returns the value of the specified number as a {@code float}, + * which may involve rounding. * * @return the numeric value represented by this object after conversion - * to type float. + * to type {@code float}. */ public abstract float floatValue(); /** - * Returns the value of the specified number as a double. - * This may involve rounding. + * Returns the value of the specified number as a {@code double}, + * which may involve rounding. * * @return the numeric value represented by this object after conversion - * to type double. + * to type {@code double}. */ public abstract double doubleValue(); /** - * Returns the value of the specified number as a byte. - * This may involve rounding or truncation. + * Returns the value of the specified number as a {@code byte}, + * which may involve rounding or truncation. + * + *

This implementation returns the result of {@link #intValue} cast + * to a {@code byte}. * * @return the numeric value represented by this object after conversion - * to type byte. + * to type {@code byte}. * @since JDK1.1 */ public byte byteValue() { @@ -96,11 +105,14 @@ public abstract class Number implements java.io.Serializable { } /** - * Returns the value of the specified number as a short. - * This may involve rounding or truncation. + * Returns the value of the specified number as a {@code short}, + * which may involve rounding or truncation. + * + *

This implementation returns the result of {@link #intValue} cast + * to a {@code short}. * * @return the numeric value represented by this object after conversion - * to type short. + * to type {@code short}. * @since JDK1.1 */ public short shortValue() { diff --git a/src/share/classes/java/lang/Short.java b/src/share/classes/java/lang/Short.java index 5ff010da00e4eea17cc0c40498636cbd52f73154..15a00e17ff65c2ad2af06b725f2b3754182fe62a 100644 --- a/src/share/classes/java/lang/Short.java +++ b/src/share/classes/java/lang/Short.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, 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 @@ -321,8 +321,9 @@ public final class Short extends Number implements Comparable { } /** - * Returns the value of this {@code Short} as a - * {@code byte}. + * Returns the value of this {@code Short} as a {@code byte} after + * a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions */ public byte byteValue() { return (byte)value; @@ -337,32 +338,36 @@ public final class Short extends Number implements Comparable { } /** - * Returns the value of this {@code Short} as an - * {@code int}. + * Returns the value of this {@code Short} as an {@code int} after + * a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public int intValue() { return (int)value; } /** - * Returns the value of this {@code Short} as a - * {@code long}. + * Returns the value of this {@code Short} as a {@code long} after + * a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public long longValue() { return (long)value; } /** - * Returns the value of this {@code Short} as a - * {@code float}. + * Returns the value of this {@code Short} as a {@code float} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public float floatValue() { return (float)value; } /** - * Returns the value of this {@code Short} as a - * {@code double}. + * Returns the value of this {@code Short} as a {@code double} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions */ public double doubleValue() { return (double)value; diff --git a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java index 7d7c2b1f9874fe52c103c30fc6b8a4753c7f9205..dcd4f2a34c5686d6378e3660522b0ebbe33a7e02 100644 --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -41,21 +41,23 @@ package java.lang.annotation; public class IncompleteAnnotationException extends RuntimeException { private static final long serialVersionUID = 8445097402741811912L; - private Class annotationType; + private Class annotationType; private String elementName; - /** * Constructs an IncompleteAnnotationException to indicate that * the named element was missing from the specified annotation type. * * @param annotationType the Class object for the annotation type * @param elementName the name of the missing element + * @throws NullPointerException if either parameter is {@code null} */ public IncompleteAnnotationException( Class annotationType, String elementName) { - super(annotationType.getName() + " missing element " + elementName); + super(annotationType.getName().toString() + + " missing element " + + elementName.toString()); this.annotationType = annotationType; this.elementName = elementName; diff --git a/src/share/classes/java/lang/invoke/AdapterMethodHandle.java b/src/share/classes/java/lang/invoke/AdapterMethodHandle.java index 6c2ca8fe31e45a7b743de7d894ade6f8c84035fd..897d177b37af0068bcf2165378b1f01cb84a3e6b 100644 --- a/src/share/classes/java/lang/invoke/AdapterMethodHandle.java +++ b/src/share/classes/java/lang/invoke/AdapterMethodHandle.java @@ -405,13 +405,13 @@ class AdapterMethodHandle extends BoundMethodHandle { insertStackMove(stackMove) ); } - private static long makeSwapConv(int convOp, int srcArg, byte type, int destSlot) { + private static long makeSwapConv(int convOp, int srcArg, byte srcType, int destSlot, byte destType) { // more complex argument motion, requiring two slots to specify assert(convOp == OP_SWAP_ARGS || convOp == OP_ROT_ARGS); return ((long) srcArg << 32 | (long) convOp << CONV_OP_SHIFT | - (int) type << CONV_SRC_TYPE_SHIFT | - (int) type << CONV_DEST_TYPE_SHIFT | + (int) srcType << CONV_SRC_TYPE_SHIFT | + (int) destType << CONV_DEST_TYPE_SHIFT | (int) destSlot << CONV_VMINFO_SHIFT ); } @@ -943,24 +943,27 @@ class AdapterMethodHandle extends BoundMethodHandle { if (type2size(newType.parameterType(swapArg1)) != type2size(newType.parameterType(swapArg2))) { // turn a swap into a pair of rotates: - // [x a b c y] => [a b c y x] => [y a b c x] + // [x a b c y] rot2(-1,argc=5) => [a b c y x] rot1(+1,argc=4) => target[y a b c x] int argc = swapArg2 - swapArg1 + 1; final int ROT = 1; ArrayList> rot1Params = new ArrayList>(target.type().parameterList()); Collections.rotate(rot1Params.subList(swapArg1, swapArg1 + argc), -ROT); MethodType rot1Type = MethodType.methodType(target.type().returnType(), rot1Params); MethodHandle rot1 = makeRotateArguments(rot1Type, target, swapArg1, argc, +ROT); + assert(rot1 != null); if (argc == 2) return rot1; MethodHandle rot2 = makeRotateArguments(newType, rot1, swapArg1, argc-1, -ROT); + assert(rot2 != null); return rot2; } if (!canSwapArguments(newType, target.type(), swapArg1, swapArg2)) return null; - Class swapType = newType.parameterType(swapArg1); + Class type1 = newType.parameterType(swapArg1); + Class type2 = newType.parameterType(swapArg2); // in arglist: [0: ...keep1 | pos1: a1 | pos1+1: keep2... | pos2: a2 | pos2+1: keep3... ] // out arglist: [0: ...keep1 | pos1: a2 | pos1+1: keep2... | pos2: a1 | pos2+1: keep3... ] int swapSlot2 = newType.parameterSlotDepth(swapArg2 + 1); - long conv = makeSwapConv(OP_SWAP_ARGS, swapArg1, basicType(swapType), swapSlot2); + long conv = makeSwapConv(OP_SWAP_ARGS, swapArg1, basicType(type1), swapSlot2, basicType(type2)); return new AdapterMethodHandle(target, newType, conv); } @@ -1029,16 +1032,16 @@ class AdapterMethodHandle extends BoundMethodHandle { assert(MAX_ARG_ROTATION == 1); int srcArg, dstArg; int dstSlot; - byte basicType; - if (chunk2Slots <= chunk1Slots) { + int moveChunk; + if (rotateBy == 1) { // Rotate right/down N (rotateBy = +N, N small, c2 small): // in arglist: [0: ...keep1 | arg1: c1... | limit-N: c2 | limit: keep2... ] // out arglist: [0: ...keep1 | arg1: c2 | arg1+N: c1... | limit: keep2... ] srcArg = limit-1; dstArg = firstArg; - dstSlot = depth0 - chunk2Slots; - basicType = basicType(newType.parameterType(srcArg)); - assert(chunk2Slots == type2size(basicType)); + //dstSlot = depth0 - chunk2Slots; //chunk2Slots is not relevant + dstSlot = depth0 + MethodHandleNatives.OP_ROT_ARGS_DOWN_LIMIT_BIAS; + moveChunk = chunk2Slots; } else { // Rotate left/up N (rotateBy = -N, N small, c1 small): // in arglist: [0: ...keep1 | arg1: c1 | arg1+N: c2... | limit: keep2... ] @@ -1046,10 +1049,12 @@ class AdapterMethodHandle extends BoundMethodHandle { srcArg = firstArg; dstArg = limit-1; dstSlot = depth2; - basicType = basicType(newType.parameterType(srcArg)); - assert(chunk1Slots == type2size(basicType)); + moveChunk = chunk1Slots; } - long conv = makeSwapConv(OP_ROT_ARGS, srcArg, basicType, dstSlot); + byte srcType = basicType(newType.parameterType(srcArg)); + byte dstType = basicType(newType.parameterType(dstArg)); + assert(moveChunk == type2size(srcType)); + long conv = makeSwapConv(OP_ROT_ARGS, srcArg, srcType, dstSlot, dstType); return new AdapterMethodHandle(target, newType, conv); } diff --git a/src/share/classes/java/lang/invoke/MethodHandleImpl.java b/src/share/classes/java/lang/invoke/MethodHandleImpl.java index 5437e85a34dec8d2e74e6553716a2e2af68d3ebd..173fc5e5dcbc90b5037d9c22cef0bf2fbd55bbed 100644 --- a/src/share/classes/java/lang/invoke/MethodHandleImpl.java +++ b/src/share/classes/java/lang/invoke/MethodHandleImpl.java @@ -788,6 +788,7 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; .insertParameterTypes(keepPosArgs, arrayType); return spreadArguments(target, newType, keepPosArgs, arrayType, arrayLength); } + // called internally only static MethodHandle spreadArgumentsFromPos(MethodHandle target, MethodType newType, int spreadArgPos) { int arrayLength = target.type().parameterCount() - spreadArgPos; return spreadArguments(target, newType, spreadArgPos, Object[].class, arrayLength); @@ -849,6 +850,12 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; MethodType ttype = target.type(); MethodType ftype = filter.type(); assert(ftype.parameterCount() == 1); + MethodHandle result = null; + if (AdapterMethodHandle.canCollectArguments(ttype, ftype, pos, false)) { + result = AdapterMethodHandle.makeCollectArguments(target, filter, pos, false); + if (result != null) return result; + } + assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated MethodType rtype = ttype.changeParameterType(pos, ftype.parameterType(0)); MethodType gttype = ttype.generic(); if (ttype != gttype) { @@ -860,18 +867,11 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; filter = convertArguments(filter, gftype, ftype, 0); ftype = gftype; } - MethodHandle result = null; - if (AdapterMethodHandle.canCollectArguments(ttype, ftype, pos, false)) { - result = AdapterMethodHandle.makeCollectArguments(target, filter, pos, false); - } - if (result == null) { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - if (ftype == ttype) { + if (ftype == ttype) { // simple unary case - result = FilterOneArgument.make(filter, target); - } else { - result = FilterGeneric.makeArgumentFilter(pos, filter, target); - } + result = FilterOneArgument.make(filter, target); + } else { + result = FilterGeneric.makeArgumentFilter(pos, filter, target); } if (result.type() != rtype) result = result.asType(rtype); @@ -920,7 +920,7 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; this.fallback = fallback; } static boolean preferRicochetFrame(MethodType type) { - return (type.parameterCount() >= INVOKES.length || type.hasPrimitives()); + return true; // always use RF if available } static MethodHandle make(MethodHandle test, MethodHandle target, MethodHandle fallback) { MethodType type = target.type(); @@ -931,12 +931,13 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; MethodHandle invoke = INVOKES[nargs]; MethodType gtype = type.generic(); assert(invoke.type().dropParameterTypes(0,1) == gtype); - MethodHandle gtest = convertArguments(test, gtype.changeReturnType(boolean.class), test.type(), 0); - MethodHandle gtarget = convertArguments(target, gtype, type, 0); - MethodHandle gfallback = convertArguments(fallback, gtype, type, 0); + // Note: convertArguments(...2) avoids interface casts present in convertArguments(...0) + MethodHandle gtest = convertArguments(test, gtype.changeReturnType(boolean.class), test.type(), 2); + MethodHandle gtarget = convertArguments(target, gtype, type, 2); + MethodHandle gfallback = convertArguments(fallback, gtype, type, 2); if (gtest == null || gtarget == null || gfallback == null) return null; MethodHandle gguard = new GuardWithTest(invoke, gtest, gtarget, gfallback); - return convertArguments(gguard, type, gtype, 0); + return convertArguments(gguard, type, gtype, 2); } else { assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated MethodHandle invoke = VARARGS_INVOKE; @@ -1221,11 +1222,12 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; if (nargs < GuardWithCatch.INVOKES.length) { MethodType gtype = type.generic(); MethodType gcatchType = gtype.insertParameterTypes(0, Throwable.class); - MethodHandle gtarget = convertArguments(target, gtype, type, 0); - MethodHandle gcatcher = convertArguments(catcher, gcatchType, ctype, 0); + // Note: convertArguments(...2) avoids interface casts present in convertArguments(...0) + MethodHandle gtarget = convertArguments(target, gtype, type, 2); + MethodHandle gcatcher = convertArguments(catcher, gcatchType, ctype, 2); MethodHandle gguard = new GuardWithCatch(gtarget, exType, gcatcher); if (gtarget == null || gcatcher == null || gguard == null) return null; - return convertArguments(gguard, type, gtype, 0); + return convertArguments(gguard, type, gtype, 2); } else { MethodType gtype = MethodType.genericMethodType(0, true); MethodType gcatchType = gtype.insertParameterTypes(0, Throwable.class); diff --git a/src/share/classes/java/lang/invoke/MethodHandleNatives.java b/src/share/classes/java/lang/invoke/MethodHandleNatives.java index ef3df63a3e4f011c998af1b05e07e51917e1694c..5ad86fd0e48df6d14863bb422c255672bedec3eb 100644 --- a/src/share/classes/java/lang/invoke/MethodHandleNatives.java +++ b/src/share/classes/java/lang/invoke/MethodHandleNatives.java @@ -118,32 +118,20 @@ class MethodHandleNatives { /** Derived mode flag. Only false on some old JVM implementations. */ static final boolean HAVE_RICOCHET_FRAMES; + static final int OP_ROT_ARGS_DOWN_LIMIT_BIAS; + private static native void registerNatives(); static { - int JVM_PUSH_LIMIT_; - int JVM_STACK_MOVE_UNIT_; - int CONV_OP_IMPLEMENTED_MASK_; - try { - registerNatives(); - JVM_PUSH_LIMIT_ = getConstant(Constants.GC_JVM_PUSH_LIMIT); - JVM_STACK_MOVE_UNIT_ = getConstant(Constants.GC_JVM_STACK_MOVE_UNIT); - CONV_OP_IMPLEMENTED_MASK_ = getConstant(Constants.GC_CONV_OP_IMPLEMENTED_MASK); - //sun.reflect.Reflection.registerMethodsToFilter(MethodHandleImpl.class, "init"); - } catch (UnsatisfiedLinkError ee) { - // ignore; if we use init() methods later we'll see linkage errors - JVM_PUSH_LIMIT_ = 3; // arbitrary - JVM_STACK_MOVE_UNIT_ = -1; // arbitrary - CONV_OP_IMPLEMENTED_MASK_ = 0; - JVM_PUSH_LIMIT = JVM_PUSH_LIMIT_; - JVM_STACK_MOVE_UNIT = JVM_STACK_MOVE_UNIT_; - throw ee; // just die; hopeless to try to run with an older JVM - } - JVM_PUSH_LIMIT = JVM_PUSH_LIMIT_; - JVM_STACK_MOVE_UNIT = JVM_STACK_MOVE_UNIT_; - if (CONV_OP_IMPLEMENTED_MASK_ == 0) - CONV_OP_IMPLEMENTED_MASK_ = DEFAULT_CONV_OP_IMPLEMENTED_MASK; - CONV_OP_IMPLEMENTED_MASK = CONV_OP_IMPLEMENTED_MASK_; - HAVE_RICOCHET_FRAMES = (CONV_OP_IMPLEMENTED_MASK & (1< * Since invalidation is a global and immediate operation, * the execution of this query, on a valid switchpoint, diff --git a/src/share/classes/java/lang/reflect/GenericSignatureFormatError.java b/src/share/classes/java/lang/reflect/GenericSignatureFormatError.java index 1650803fb63e4cba840a9030223e9001c210fb67..3fd70d3d2d41e5a5e9c3a4ba2dbb94089a0f8980 100644 --- a/src/share/classes/java/lang/reflect/GenericSignatureFormatError.java +++ b/src/share/classes/java/lang/reflect/GenericSignatureFormatError.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -35,4 +35,22 @@ package java.lang.reflect; */ public class GenericSignatureFormatError extends ClassFormatError { private static final long serialVersionUID = 6709919147137911034L; + + /** + * Constructs a new {@code GenericSignatureFormatError}. + * + */ + public GenericSignatureFormatError() { + super(); + } + + /** + * Constructs a new {@code GenericSignatureFormatError} with the + * specified message. + * + * @param message the detail message, may be {@code null} + */ + public GenericSignatureFormatError(String message) { + super(message); + } } diff --git a/src/share/classes/java/net/InetAddress.java b/src/share/classes/java/net/InetAddress.java index 792458184d56d7f3d53203c9a6fa59fdc1619f4d..a64011f09145a398aa6702fd4ef08374bcc7e530 100644 --- a/src/share/classes/java/net/InetAddress.java +++ b/src/share/classes/java/net/InetAddress.java @@ -1013,6 +1013,12 @@ class InetAddress implements java.io.Serializable { return InetAddress.getAllByName(host)[0]; } + // called from deployment cache manager + private static InetAddress getByName(String host, InetAddress reqAddr) + throws UnknownHostException { + return InetAddress.getAllByName(host, reqAddr)[0]; + } + /** * Given the name of a host, returns an array of its IP addresses, * based on the configured name service on the system. @@ -1054,6 +1060,11 @@ class InetAddress implements java.io.Serializable { */ public static InetAddress[] getAllByName(String host) throws UnknownHostException { + return getAllByName(host, null); + } + + private static InetAddress[] getAllByName(String host, InetAddress reqAddr) + throws UnknownHostException { if (host == null || host.length() == 0) { InetAddress[] ret = new InetAddress[1]; @@ -1113,7 +1124,7 @@ class InetAddress implements java.io.Serializable { // We were expecting an IPv6 Litteral, but got something else throw new UnknownHostException("["+host+"]"); } - return getAllByName0(host); + return getAllByName0(host, reqAddr, true); } /** @@ -1174,6 +1185,12 @@ class InetAddress implements java.io.Serializable { */ static InetAddress[] getAllByName0 (String host, boolean check) throws UnknownHostException { + return getAllByName0 (host, null, check); + } + + private static InetAddress[] getAllByName0 (String host, InetAddress reqAddr, boolean check) + throws UnknownHostException { + /* If it gets here it is presumed to be a hostname */ /* Cache.get can return: null, unknownAddress, or InetAddress[] */ @@ -1191,7 +1208,7 @@ class InetAddress implements java.io.Serializable { /* If no entry in cache, then do the host lookup */ if (addresses == null) { - addresses = getAddressesFromNameService(host); + addresses = getAddressesFromNameService(host, reqAddr); } if (addresses == unknown_array) @@ -1200,7 +1217,7 @@ class InetAddress implements java.io.Serializable { return addresses.clone(); } - private static InetAddress[] getAddressesFromNameService(String host) + private static InetAddress[] getAddressesFromNameService(String host, InetAddress reqAddr) throws UnknownHostException { InetAddress[] addresses = null; @@ -1256,10 +1273,32 @@ class InetAddress implements java.io.Serializable { } } - // Cache the addresses. + // More to do? + if (reqAddr != null && addresses.length > 1 && !addresses[0].equals(reqAddr)) { + // Find it? + int i = 1; + for (; i < addresses.length; i++) { + if (addresses[i].equals(reqAddr)) { + break; + } + } + // Rotate + if (i < addresses.length) { + InetAddress tmp, tmp2 = reqAddr; + for (int j = 0; j < i; j++) { + tmp = addresses[j]; + addresses[j] = tmp2; + tmp2 = tmp; + } + addresses[i] = tmp2; + } + } + // Cache the address. cacheAddresses(host, addresses, success); + if (!success && ex != null) throw ex; + } finally { // Delete host from the lookupTable and notify // all threads waiting on the lookupTable monitor. @@ -1393,7 +1432,7 @@ class InetAddress implements java.io.Serializable { InetAddress[] localAddrs; try { localAddrs = - InetAddress.getAddressesFromNameService(local); + InetAddress.getAddressesFromNameService(local, null); } catch (UnknownHostException uhe) { // Rethrow with a more informative error message. UnknownHostException uhe2 = diff --git a/src/share/classes/java/net/NetworkInterface.java b/src/share/classes/java/net/NetworkInterface.java index a53d6eb0161a77e2eb9a278e061297fb8b0ccd6f..229f113a68daa38c43a94aa6aaaf056ae78b2956 100644 --- a/src/share/classes/java/net/NetworkInterface.java +++ b/src/share/classes/java/net/NetworkInterface.java @@ -547,13 +547,8 @@ public final class NetworkInterface { if (displayName != null) { result += " (" + displayName + ")"; } - result += " index: "+index+" addresses:\n"; - for (Enumeration e = getInetAddresses(); e.hasMoreElements(); ) { - InetAddress addr = (InetAddress)e.nextElement(); - result += addr+";\n"; - } return result; } - private static native void init(); + private static native void init(); } diff --git a/src/share/classes/java/net/Socket.java b/src/share/classes/java/net/Socket.java index e8eb3eab8654b39e2763bc6c62d918998d6fa519..bf145dc98fe7347f59923ef0943efbf894b657f4 100644 --- a/src/share/classes/java/net/Socket.java +++ b/src/share/classes/java/net/Socket.java @@ -127,11 +127,12 @@ class Socket implements java.io.Closeable { } if (security != null) { if (epoint.isUnresolved()) - security.checkConnect(epoint.getHostName(), - epoint.getPort()); + epoint = new InetSocketAddress(epoint.getHostName(), epoint.getPort()); + if (epoint.isUnresolved()) + security.checkConnect(epoint.getHostName(), epoint.getPort()); else security.checkConnect(epoint.getAddress().getHostAddress(), - epoint.getPort()); + epoint.getPort()); } impl = new SocksSocketImpl(p); impl.setSocket(this); diff --git a/src/share/classes/java/net/SocketPermission.java b/src/share/classes/java/net/SocketPermission.java index 4528da22b12f635656314ccc73dadab2f8a4cc20..41fbdbf9552bedf606de463546b802fa35b2d55d 100644 --- a/src/share/classes/java/net/SocketPermission.java +++ b/src/share/classes/java/net/SocketPermission.java @@ -40,7 +40,9 @@ import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.IOException; import sun.net.util.IPAddressUtil; +import sun.net.RegisteredDomain; import sun.security.util.SecurityConstants; +import sun.security.util.Debug; /** @@ -211,13 +213,32 @@ implements java.io.Serializable // port range on host private transient int[] portrange; - // true if the trustProxy system property is set - private static boolean trustProxy; + private transient boolean defaultDeny = false; + + // true if this SocketPermission represents a hostname + // that failed our reverse mapping heuristic test + private transient boolean untrusted; + private transient boolean trusted; + + // true if the sun.net.trustNameService system property is set + private static boolean trustNameService; + + private static Debug debug = null; + private static boolean debugInit = false; static { Boolean tmp = java.security.AccessController.doPrivileged( - new sun.security.action.GetBooleanAction("trustProxy")); - trustProxy = tmp.booleanValue(); + new sun.security.action.GetBooleanAction("sun.net.trustNameService")); + trustNameService = tmp.booleanValue(); + } + + private static synchronized Debug getDebug() + { + if (!debugInit) { + debug = Debug.getInstance("access"); + debugInit = true; + } + return debug; } /** @@ -263,6 +284,10 @@ implements java.io.Serializable init(getName(), mask); } + private void setDeny() { + defaultDeny = true; + } + private static String getHost(String host) { if (host.equals("")) { @@ -560,6 +585,37 @@ implements java.io.Serializable return mask; } + private boolean isUntrusted() + throws UnknownHostException + { + if (trusted) return false; + if (invalid || untrusted) return true; + try { + if (!trustNameService && (defaultDeny || + sun.net.www.URLConnection.isProxiedHost(hostname))) { + if (this.cname == null) { + this.getCanonName(); + } + if (!match(cname, hostname)) { + // Last chance + if (!authorized(hostname, addresses[0].getAddress())) { + untrusted = true; + Debug debug = getDebug(); + if (debug != null && Debug.isOn("failure")) { + debug.println("socket access restriction: proxied host " + "(" + addresses[0] + ")" + " does not match " + cname + " from reverse lookup"); + } + return true; + } + } + trusted = true; + } + } catch (UnknownHostException uhe) { + invalid = true; + throw uhe; + } + return false; + } + /** * attempt to get the fully qualified domain name * @@ -567,7 +623,7 @@ implements java.io.Serializable void getCanonName() throws UnknownHostException { - if (cname != null || invalid) return; + if (cname != null || invalid || untrusted) return; // attempt to get the canonical name @@ -593,6 +649,96 @@ implements java.io.Serializable } } + private transient String cdomain, hdomain; + + private boolean match(String cname, String hname) { + String a = cname.toLowerCase(); + String b = hname.toLowerCase(); + if (a.startsWith(b) && + ((a.length() == b.length()) || (a.charAt(b.length()) == '.'))) + return true; + if (cdomain == null) { + cdomain = RegisteredDomain.getRegisteredDomain(a); + } + if (hdomain == null) { + hdomain = RegisteredDomain.getRegisteredDomain(b); + } + + return cdomain.length() != 0 && hdomain.length() != 0 + && cdomain.equals(hdomain); + } + + private boolean authorized(String cname, byte[] addr) { + if (addr.length == 4) + return authorizedIPv4(cname, addr); + else if (addr.length == 16) + return authorizedIPv6(cname, addr); + else + return false; + } + + private boolean authorizedIPv4(String cname, byte[] addr) { + String authHost = ""; + InetAddress auth; + + try { + authHost = "auth." + + (addr[3] & 0xff) + "." + (addr[2] & 0xff) + "." + + (addr[1] & 0xff) + "." + (addr[0] & 0xff) + + ".in-addr.arpa"; + // Following check seems unnecessary + // auth = InetAddress.getAllByName0(authHost, false)[0]; + authHost = hostname + '.' + authHost; + auth = InetAddress.getAllByName0(authHost, false)[0]; + if (auth.equals(InetAddress.getByAddress(addr))) { + return true; + } + Debug debug = getDebug(); + if (debug != null && Debug.isOn("failure")) { + debug.println("socket access restriction: IP address of " + auth + " != " + InetAddress.getByAddress(addr)); + } + } catch (UnknownHostException uhe) { + Debug debug = getDebug(); + if (debug != null && Debug.isOn("failure")) { + debug.println("socket access restriction: forward lookup failed for " + authHost); + } + } + return false; + } + + private boolean authorizedIPv6(String cname, byte[] addr) { + String authHost = ""; + InetAddress auth; + + try { + StringBuffer sb = new StringBuffer(39); + + for (int i = 15; i >= 0; i--) { + sb.append(Integer.toHexString(((addr[i]) & 0x0f))); + sb.append('.'); + sb.append(Integer.toHexString(((addr[i] >> 4) & 0x0f))); + sb.append('.'); + } + authHost = "auth." + sb.toString() + "IP6.ARPA"; + //auth = InetAddress.getAllByName0(authHost, false)[0]; + authHost = hostname + '.' + authHost; + auth = InetAddress.getAllByName0(authHost, false)[0]; + if (auth.equals(InetAddress.getByAddress(addr))) + return true; + Debug debug = getDebug(); + if (debug != null && Debug.isOn("failure")) { + debug.println("socket access restriction: IP address of " + auth + " != " + InetAddress.getByAddress(addr)); + } + } catch (UnknownHostException uhe) { + Debug debug = getDebug(); + if (debug != null && Debug.isOn("failure")) { + debug.println("socket access restriction: forward lookup failed for " + authHost); + } + } + return false; + } + + /** * get IP addresses. Sets invalid to true if we can't get them. * @@ -720,12 +866,7 @@ implements java.io.Serializable // return if either one of these NetPerm objects are invalid... if (this.invalid || that.invalid) { - return (trustProxy ? inProxyWeTrust(that) : false); - } - - - if (this.getName().equalsIgnoreCase(that.getName())) { - return true; + return compareHostnames(that); } try { @@ -778,28 +919,29 @@ implements java.io.Serializable that.getIP(); } - for (j = 0; j < this.addresses.length; j++) { - for (i=0; i < that.addresses.length; i++) { - if (this.addresses[j].equals(that.addresses[i])) - return true; + if (!(that.init_with_ip && this.isUntrusted())) { + for (j = 0; j < this.addresses.length; j++) { + for (i=0; i < that.addresses.length; i++) { + if (this.addresses[j].equals(that.addresses[i])) + return true; + } } - } - // XXX: if all else fails, compare hostnames? - // Do we really want this? - if (this.cname == null) { - this.getCanonName(); - } + // XXX: if all else fails, compare hostnames? + // Do we really want this? + if (this.cname == null) { + this.getCanonName(); + } - if (that.cname == null) { - that.getCanonName(); - } + if (that.cname == null) { + that.getCanonName(); + } - return (this.cname.equalsIgnoreCase(that.cname)); + return (this.cname.equalsIgnoreCase(that.cname)); + } } catch (UnknownHostException uhe) { - if (trustProxy) - return inProxyWeTrust(that); + return compareHostnames(that); } // make sure the first thing that is done here is to return @@ -808,9 +950,8 @@ implements java.io.Serializable return false; } - private boolean inProxyWeTrust(SocketPermission that) { - // if we trust the proxy, we see if the original names/IPs passed - // in were equal. + private boolean compareHostnames(SocketPermission that) { + // we see if the original names/IPs passed in were equal. String thisHost = hostname; String thatHost = that.hostname; @@ -819,8 +960,8 @@ implements java.io.Serializable return false; else return thisHost.equalsIgnoreCase(thatHost); - } + /** * Checks two SocketPermission objects for equality. *

diff --git a/src/share/classes/java/nio/file/Path.java b/src/share/classes/java/nio/file/Path.java index 370c38dbac285e08608d515a35be1560ef0ce6c9..6e572684727ebb5f1cbfb93dacf7502c604bc102 100644 --- a/src/share/classes/java/nio/file/Path.java +++ b/src/share/classes/java/nio/file/Path.java @@ -460,15 +460,13 @@ public interface Path /** * Returns a URI to represent this path. * - *

This method constructs a hierarchical {@link URI} that is absolute - * with a non-empty path component. Its {@link URI#getScheme() scheme} is - * equal to the URI scheme that identifies the provider. The exact form of - * the other URI components is highly provider dependent. In particular, it - * is implementation dependent if its query, fragment, and authority - * components are defined or undefined. - * - *

For the default provider the {@link URI#getPath() path} component - * will represent the {@link #toAbsolutePath absolute} path; the query, + *

This method constructs an absolute {@link URI} with a {@link + * URI#getScheme() scheme} equal to the URI scheme that identifies the + * provider. The exact form of the scheme specific part is highly provider + * dependent. + * + *

In the case of the default provider, the URI is hierarchical with + * a {@link URI#getPath() path} component that is absolute. The query and * fragment components are undefined. Whether the authority component is * defined or not is implementation dependent. There is no guarantee that * the {@code URI} may be used to construct a {@link java.io.File java.io.File}. @@ -497,7 +495,7 @@ public interface Path * A format for compound URIs is not defined in this release; such a scheme * may be added in a future release. * - * @return an absolute, hierarchical URI with a non-empty path component + * @return the URI representing this path * * @throws java.io.IOError * if an I/O error occurs obtaining the absolute path, or where a diff --git a/src/share/classes/java/rmi/server/UID.java b/src/share/classes/java/rmi/server/UID.java index f03586caf7d4503a0832e98d8a278cf71679ffb0..b84e80d1b4af87109dfae84c9b1892552bd6c3a5 100644 --- a/src/share/classes/java/rmi/server/UID.java +++ b/src/share/classes/java/rmi/server/UID.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, 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 @@ -118,15 +118,17 @@ public final class UID implements Serializable { boolean done = false; while (!done) { long now = System.currentTimeMillis(); - if (now <= lastTime) { + if (now == lastTime) { // wait for time to change try { - Thread.currentThread().sleep(1); + Thread.sleep(1); } catch (InterruptedException e) { interrupted = true; } } else { - lastTime = now; + // If system time has gone backwards increase + // original by 1ms to maintain uniqueness + lastTime = (now < lastTime) ? lastTime+1 : now; lastCount = Short.MIN_VALUE; done = true; } diff --git a/src/share/classes/java/security/SignedObject.java b/src/share/classes/java/security/SignedObject.java index 8d5631d9ff96b1745e4305e04a20d01098dfbb65..1f901fa1c7789e29b330ad501142c46ed17beaab 100644 --- a/src/share/classes/java/security/SignedObject.java +++ b/src/share/classes/java/security/SignedObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, 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 @@ -249,10 +249,10 @@ public final class SignedObject implements Serializable { * a stream. */ private void readObject(java.io.ObjectInputStream s) - throws java.io.IOException, ClassNotFoundException - { - s.defaultReadObject(); - content = content.clone(); - signature = signature.clone(); + throws java.io.IOException, ClassNotFoundException { + java.io.ObjectInputStream.GetField fields = s.readFields(); + content = ((byte[])fields.get("content", null)).clone(); + signature = ((byte[])fields.get("signature", null)).clone(); + thealgorithm = (String)fields.get("thealgorithm", null); } } diff --git a/src/share/classes/java/sql/BatchUpdateException.java b/src/share/classes/java/sql/BatchUpdateException.java index 8405da2dac70e738f6047bca13d57c5d412c15bb..19742c82fa7dc53fa177f2752165631dcf8b3ea7 100644 --- a/src/share/classes/java/sql/BatchUpdateException.java +++ b/src/share/classes/java/sql/BatchUpdateException.java @@ -79,7 +79,8 @@ public class BatchUpdateException extends SQLException { */ public BatchUpdateException( String reason, String SQLState, int vendorCode, int[] updateCounts ) { - this(reason, SQLState, vendorCode, updateCounts, null); + super(reason, SQLState, vendorCode); + this.updateCounts = (updateCounts == null) ? null : Arrays.copyOf(updateCounts, updateCounts.length); } /** @@ -106,7 +107,7 @@ public class BatchUpdateException extends SQLException { */ public BatchUpdateException(String reason, String SQLState, int[] updateCounts) { - this(reason, SQLState, 0, updateCounts, null); + this(reason, SQLState, 0, updateCounts); } /** @@ -132,7 +133,7 @@ public class BatchUpdateException extends SQLException { * @since 1.2 */ public BatchUpdateException(String reason, int[] updateCounts) { - this(reason, null, 0, updateCounts, null); + this(reason, null, 0, updateCounts); } /** @@ -155,7 +156,7 @@ public class BatchUpdateException extends SQLException { * @since 1.2 */ public BatchUpdateException(int[] updateCounts) { - this(null, null, 0, updateCounts, null); + this(null, null, 0, updateCounts); } /** @@ -170,7 +171,7 @@ public class BatchUpdateException extends SQLException { * @since 1.2 */ public BatchUpdateException() { - this(null, null, 0, null, null); + this(null, null, 0, null); } /** diff --git a/src/share/classes/java/util/Random.java b/src/share/classes/java/util/Random.java index 447c4165586a9729f10e41f8c38022e4f2d380b9..e56051cbdd38399bb8f828e3d89e347b3b820178 100644 --- a/src/share/classes/java/util/Random.java +++ b/src/share/classes/java/util/Random.java @@ -118,7 +118,13 @@ class Random implements java.io.Serializable { * @see #setSeed(long) */ public Random(long seed) { - this.seed = new AtomicLong(initialScramble(seed)); + if (getClass() == Random.class) + this.seed = new AtomicLong(initialScramble(seed)); + else { + // subclass might have overriden setSeed + this.seed = new AtomicLong(); + setSeed(seed); + } } private static long initialScramble(long seed) { diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java b/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java index 0d8a7a1ae79599dd89d4598cafe3bca1af9af436..ec68acd781a67c55e73561697b175fa667fea787 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicInteger.java @@ -246,18 +246,37 @@ public class AtomicInteger extends Number implements java.io.Serializable { } + /** + * Returns the value of this {@code AtomicInteger} as an + * {@code int}. + */ public int intValue() { return get(); } + /** + * Returns the value of this {@code AtomicInteger} as a {@code long} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions + */ public long longValue() { return (long)get(); } + /** + * Returns the value of this {@code AtomicInteger} as a {@code float} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions + */ public float floatValue() { return (float)get(); } + /** + * Returns the value of this {@code AtomicInteger} as a {@code double} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions + */ public double doubleValue() { return (double)get(); } diff --git a/src/share/classes/java/util/concurrent/atomic/AtomicLong.java b/src/share/classes/java/util/concurrent/atomic/AtomicLong.java index 4fc4c904bf5054c7a3c07acbcf75a88a46afac56..bf2c71a340af511e1e8ab47e57992131b720a9d6 100644 --- a/src/share/classes/java/util/concurrent/atomic/AtomicLong.java +++ b/src/share/classes/java/util/concurrent/atomic/AtomicLong.java @@ -260,18 +260,37 @@ public class AtomicLong extends Number implements java.io.Serializable { } + /** + * Returns the value of this {@code AtomicLong} as an {@code int} + * after a narrowing primitive conversion. + * @jls 5.1.3 Narrowing Primitive Conversions + */ public int intValue() { return (int)get(); } + /** + * Returns the value of this {@code AtomicLong} as a {@code long} + * value. + */ public long longValue() { return get(); } + /** + * Returns the value of this {@code AtomicLong} as a {@code float} + * after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions + */ public float floatValue() { return (float)get(); } + /** + * Returns the value of this {@code AtomicLong} as a {@code + * double} after a widening primitive conversion. + * @jls 5.1.2 Widening Primitive Conversions + */ public double doubleValue() { return (double)get(); } diff --git a/src/share/classes/java/util/logging/Logger.java b/src/share/classes/java/util/logging/Logger.java index e3ce6bdac605d0cc57e20643a874f89b85ca401f..aebf63ed5e8c34b0e296cb2e2a62988353d6a14d 100644 --- a/src/share/classes/java/util/logging/Logger.java +++ b/src/share/classes/java/util/logging/Logger.java @@ -251,7 +251,10 @@ public class Logger { protected Logger(String name, String resourceBundleName) { this.manager = LogManager.getLogManager(); if (resourceBundleName != null) { - // Note: we may get a MissingResourceException here. + // MissingResourceException or IllegalArgumentException can + // be thrown by setupResourceInfo(). Since this is the Logger + // constructor, the resourceBundleName field is null so + // IllegalArgumentException cannot happen here. setupResourceInfo(resourceBundleName); } this.name = name; @@ -374,13 +377,10 @@ public class Logger { public static Logger getLogger(String name, String resourceBundleName) { LogManager manager = LogManager.getLogManager(); Logger result = manager.demandLogger(name); - if (result.resourceBundleName == null) { - // Note: we may get a MissingResourceException here. - result.setupResourceInfo(resourceBundleName); - } else if (!result.resourceBundleName.equals(resourceBundleName)) { - throw new IllegalArgumentException(result.resourceBundleName + - " != " + resourceBundleName); - } + + // MissingResourceException or IllegalArgumentException can be + // thrown by setupResourceInfo(). + result.setupResourceInfo(resourceBundleName); return result; } @@ -1353,14 +1353,29 @@ public class Logger { } // Private utility method to initialize our one entry - // resource bundle cache. + // resource bundle name cache. // Note: for consistency reasons, we are careful to check // that a suitable ResourceBundle exists before setting the - // ResourceBundleName. + // resourceBundleName field. + // Synchronized to prevent races in setting the field. private synchronized void setupResourceInfo(String name) { if (name == null) { return; } + + if (resourceBundleName != null) { + // this Logger already has a ResourceBundle + + if (resourceBundleName.equals(name)) { + // the names match so there is nothing more to do + return; + } + + // cannot change ResourceBundles once they are set + throw new IllegalArgumentException( + resourceBundleName + " != " + name); + } + ResourceBundle rb = findResourceBundle(name); if (rb == null) { // We've failed to find an expected ResourceBundle. diff --git a/src/share/classes/javax/security/auth/kerberos/JavaxSecurityAuthKerberosAccessImpl.java b/src/share/classes/javax/security/auth/kerberos/JavaxSecurityAuthKerberosAccessImpl.java index 56ed40eed3e391fd8897d1d5c360076bce1d805a..4b20626ec75f1196966e76601df75d8ea6cb408c 100644 --- a/src/share/classes/javax/security/auth/kerberos/JavaxSecurityAuthKerberosAccessImpl.java +++ b/src/share/classes/javax/security/auth/kerberos/JavaxSecurityAuthKerberosAccessImpl.java @@ -25,7 +25,7 @@ package javax.security.auth.kerberos; -import sun.misc.JavaxSecurityAuthKerberosAccess; +import sun.security.krb5.JavaxSecurityAuthKerberosAccess; import sun.security.krb5.EncryptionKey; import sun.security.krb5.PrincipalName; diff --git a/src/share/classes/javax/security/auth/kerberos/KeyTab.java b/src/share/classes/javax/security/auth/kerberos/KeyTab.java index c2f8dd79478baccae14b76c19a02033ddb0a9b7c..3ebce9975a29d98952ad6c54f3a5fea9164b1ed2 100644 --- a/src/share/classes/javax/security/auth/kerberos/KeyTab.java +++ b/src/share/classes/javax/security/auth/kerberos/KeyTab.java @@ -27,8 +27,8 @@ package javax.security.auth.kerberos; import java.io.File; import java.util.Objects; -import sun.misc.SharedSecrets; import sun.security.krb5.EncryptionKey; +import sun.security.krb5.KerberosSecrets; import sun.security.krb5.PrincipalName; import sun.security.krb5.RealmException; @@ -74,9 +74,9 @@ public final class KeyTab { // is maintained in snapshot, this field is never "resolved". private final File file; - // Set up JavaxSecurityAuthKerberosAccess in SharedSecrets + // Set up JavaxSecurityAuthKerberosAccess in KerberosSecrets static { - SharedSecrets.setJavaxSecurityAuthKerberosAccess( + KerberosSecrets.setJavaxSecurityAuthKerberosAccess( new JavaxSecurityAuthKerberosAccessImpl()); } diff --git a/src/share/classes/javax/swing/ImageIcon.java b/src/share/classes/javax/swing/ImageIcon.java index f9318abea413b3a3b2dff83c04bc21de42ce3d0e..b16a62fe6b341a09dc71eb1eb3675cd29b04fbad 100644 --- a/src/share/classes/javax/swing/ImageIcon.java +++ b/src/share/classes/javax/swing/ImageIcon.java @@ -40,8 +40,7 @@ import javax.accessibility.*; import sun.awt.AppContext; import java.lang.reflect.Field; -import java.security.PrivilegedAction; -import java.security.AccessController; +import java.security.*; /** * An implementation of the Icon interface that paints Icons @@ -81,32 +80,51 @@ public class ImageIcon implements Icon, Serializable, Accessible { ImageObserver imageObserver; String description = null; + // Fields for twisted backward compatibility only. DO NOT USE. protected final static Component component; protected final static MediaTracker tracker; static { - component = new Component() {}; - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { + component = AccessController.doPrivileged(new PrivilegedAction() { + public Component run() { try { + final Component component = createNoPermsComponent(); + // 6482575 - clear the appContext field so as not to leak it Field appContextField = - Component.class.getDeclaredField("appContext"); + + Component.class.getDeclaredField("appContext"); appContextField.setAccessible(true); appContextField.set(component, null); - } - catch (NoSuchFieldException e) { - e.printStackTrace(); - } - catch (IllegalAccessException e) { + + return component; + } catch (Throwable e) { + // We don't care about component. + // So don't prevent class initialisation. e.printStackTrace(); + return null; } - return null; } }); tracker = new MediaTracker(component); } + private static Component createNoPermsComponent() { + // 7020198 - set acc field to no permissions and no subject + // Note, will have appContext set. + return AccessController.doPrivileged( + new PrivilegedAction() { + public Component run() { + return new Component() { + }; + } + }, + new AccessControlContext(new ProtectionDomain[]{ + new ProtectionDomain(null, null) + }) + ); + } + /** * Id used in loading images from MediaTracker. */ diff --git a/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java b/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java index 4ed74644770c436e5a3c973bdeed493b09908c6b..b03bf653fc58b6b1e8eb578a71fa34e92ea68e65 100644 --- a/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java @@ -588,6 +588,10 @@ public class NimbusLookAndFeel extends SynthLookAndFeel { } private void addDefault(String key, Object value) { + if (compiledDefaults == null) { + return; + } + String prefix = parsePrefix(key); if (prefix != null) { Map keys = compiledDefaults.get(prefix); diff --git a/src/share/classes/javax/swing/text/Utilities.java b/src/share/classes/javax/swing/text/Utilities.java index aaea4812313073fac8ef7723e47644d6af5cfe39..a6cbfadb0d8ef2c08bb939c547df9382f2f6b621 100644 --- a/src/share/classes/javax/swing/text/Utilities.java +++ b/src/share/classes/javax/swing/text/Utilities.java @@ -337,8 +337,7 @@ public class Utilities { // x before x0, return. return 0; } - int currX = x0; - int nextX = currX; + int nextX = x0; // s may be a shared segment, so it is copied prior to calling // the tab expander char[] txt = s.array; @@ -388,19 +387,45 @@ public class Utilities { } else { nextX += metrics.charWidth(txt[i]); } - if ((x >= currX) && (x < nextX)) { + if (x < nextX) { // found the hit position... return the appropriate side - int offset = ((round == false) || ((x - currX) < (nextX - x))) ? - (i - txtOffset) : (i + 1 - txtOffset); + int offset; + // the length of the string measured as a whole may differ from // the sum of individual character lengths, for example if // fractional metrics are enabled; and we must guard from this. - while (offset > 0 && metrics.charsWidth(txt, txtOffset, offset) > (x - x0)) { - offset--; + if (round) { + offset = i + 1 - txtOffset; + + int width = metrics.charsWidth(txt, txtOffset, offset); + int span = x - x0; + + if (span < width) { + while (offset > 0) { + int nextWidth = offset > 1 ? metrics.charsWidth(txt, txtOffset, offset - 1) : 0; + + if (span >= nextWidth) { + if (span - nextWidth < width - span) { + offset--; + } + + break; + } + + width = nextWidth; + offset--; + } + } + } else { + offset = i - txtOffset; + + while (offset > 0 && metrics.charsWidth(txt, txtOffset, offset) > (x - x0)) { + offset--; + } } + return offset; } - currX = nextX; } // didn't find, return end offset diff --git a/src/share/classes/sun/font/FileFontStrike.java b/src/share/classes/sun/font/FileFontStrike.java index 02e53d2b0041967af49f66bb5168e57abe83116e..67622411b1908d317893af2e7a5d5736963304f7 100644 --- a/src/share/classes/sun/font/FileFontStrike.java +++ b/src/share/classes/sun/font/FileFontStrike.java @@ -180,7 +180,6 @@ public class FileFontStrike extends PhysicalStrike { pScalerContext = NullFontScaler.getNullScalerContext(); } else { pScalerContext = fileFont.getScaler().createScalerContext(matrix, - fileFont instanceof TrueTypeFont, desc.aaHint, desc.fmHint, boldness, italic, disableHinting); } diff --git a/src/share/classes/sun/font/FontScaler.java b/src/share/classes/sun/font/FontScaler.java index cb65a8a547feba68d03c45c6ccf2cf8853f43b70..89179b3e97298597a5028f86c88aeac0664688c9 100644 --- a/src/share/classes/sun/font/FontScaler.java +++ b/src/share/classes/sun/font/FontScaler.java @@ -242,7 +242,6 @@ public abstract class FontScaler implements DisposerRecord { freed when corresponding strike is being released. */ abstract long createScalerContext(double[] matrix, - boolean fontType, int aa, int fm, float boldness, float italic, boolean disableHinting); diff --git a/src/share/classes/sun/font/FreetypeFontScaler.java b/src/share/classes/sun/font/FreetypeFontScaler.java index 7f0e47d92b03ac105c63e4c3a818af486a4ddd64..3edfe5f0e6a1d7333cbb9fbf10b1b58692689013 100644 --- a/src/share/classes/sun/font/FreetypeFontScaler.java +++ b/src/share/classes/sun/font/FreetypeFontScaler.java @@ -210,12 +210,12 @@ class FreetypeFontScaler extends FontScaler { return getUnitsPerEMNative(nativeScaler); } - long createScalerContext(double[] matrix, boolean fontType, + long createScalerContext(double[] matrix, int aa, int fm, float boldness, float italic, boolean disableHinting) { if (nativeScaler != 0L) { return createScalerContextNative(nativeScaler, matrix, - fontType, aa, fm, boldness, italic); + aa, fm, boldness, italic); } return NullFontScaler.getNullScalerContext(); } @@ -254,7 +254,7 @@ class FreetypeFontScaler extends FontScaler { private native long getUnitsPerEMNative(long pScaler); native long createScalerContextNative(long pScaler, double[] matrix, - boolean fontType, int aa, int fm, float boldness, float italic); + int aa, int fm, float boldness, float italic); /* Freetype scaler context does not contain any pointers that has to be invalidated if native scaler is bad */ diff --git a/src/share/classes/sun/font/NullFontScaler.java b/src/share/classes/sun/font/NullFontScaler.java index bbf3f6300ef2d094de6eb05fb979ccffd87fb1b5..3e0ecb3a55d7b6b82b6cc59d0aeff92c02c5a115 100644 --- a/src/share/classes/sun/font/NullFontScaler.java +++ b/src/share/classes/sun/font/NullFontScaler.java @@ -66,7 +66,7 @@ class NullFontScaler extends FontScaler { long getLayoutTableCache() {return 0L;} - long createScalerContext(double[] matrix, boolean fontType, int aa, + long createScalerContext(double[] matrix, int aa, int fm, float boldness, float italic, boolean disableHinting) { return getNullScalerContext(); } diff --git a/src/share/classes/sun/font/TrueTypeFont.java b/src/share/classes/sun/font/TrueTypeFont.java index 419c4c104b397647e3ff65f9ce1299780c33a10b..e60a74b7b055edb8498a7cc2a490c7ef78a260e7 100644 --- a/src/share/classes/sun/font/TrueTypeFont.java +++ b/src/share/classes/sun/font/TrueTypeFont.java @@ -106,7 +106,7 @@ public class TrueTypeFont extends FileFont { private static Map lcidMap; - class DirectoryEntry { + static class DirectoryEntry { int tag; int offset; int length; diff --git a/src/share/classes/sun/java2d/loops/Blit.java b/src/share/classes/sun/java2d/loops/Blit.java index d913e64bd63dfdaae13ff933eced58eb12938d56..61dd277af21aa18fe30e41922f2110e41a7a7596 100644 --- a/src/share/classes/sun/java2d/loops/Blit.java +++ b/src/share/classes/sun/java2d/loops/Blit.java @@ -172,11 +172,11 @@ public class Blit extends GraphicsPrimitive while (si.nextSpan(span)) { int w = span[2] - span[0]; int h = span[3] - span[1]; - srcRas = srcRas.createChild(srcx + span[0], srcy + span[1], - w, h, 0, 0, null); - dstRas = dstRas.createWritableChild(span[0], span[1], - w, h, 0, 0, null); - ctx.compose(srcRas, dstRas, dstRas); + Raster tmpSrcRas = srcRas.createChild(srcx + span[0], srcy + span[1], + w, h, 0, 0, null); + WritableRaster tmpDstRas = dstRas.createWritableChild(span[0], span[1], + w, h, 0, 0, null); + ctx.compose(tmpSrcRas, tmpDstRas, tmpDstRas); } ctx.dispose(); } diff --git a/src/share/classes/sun/java2d/pipe/DrawImage.java b/src/share/classes/sun/java2d/pipe/DrawImage.java index dccaba7432fb335fd0035386876a141dbe33779b..f702a68be689609ff475ac0465366471ebeece18 100644 --- a/src/share/classes/sun/java2d/pipe/DrawImage.java +++ b/src/share/classes/sun/java2d/pipe/DrawImage.java @@ -509,6 +509,9 @@ public class DrawImage implements DrawImagePipe * edges thus has to be h*2+2 in length */ int edges[] = new int[(dy2-dy1)*2+2]; + // It is important that edges[0]=edges[1]=0 when we call + // Transform in case it must return early and we would + // not want to render anything on an error condition. helper.Transform(tmpmaskblit, srcData, tmpData, AlphaComposite.Src, null, itx, interpType, diff --git a/src/share/classes/sun/launcher/resources/launcher.properties b/src/share/classes/sun/launcher/resources/launcher.properties index 14f3c0c8364c59554c6354dd80a217320190ff5c..26d3ecc54662e5734f9f8e7c9764377772a5547c 100644 --- a/src/share/classes/sun/launcher/resources/launcher.properties +++ b/src/share/classes/sun/launcher/resources/launcher.properties @@ -43,7 +43,7 @@ java.launcher.opt.footer =\ -cp =\n\ \ set a system property\n\ -\ -verbose[:class|gc|jni]\n\ +\ -verbose:[class|gc|jni]\n\ \ enable verbose output\n\ \ -version print product version and exit\n\ \ -version:\n\ diff --git a/src/share/classes/sun/misc/SharedSecrets.java b/src/share/classes/sun/misc/SharedSecrets.java index 969da9a744fe8dfadf558e8e220f1856fc5c52f5..0bd39b4a5d42f0b12478143bad17dce21db3ba11 100644 --- a/src/share/classes/sun/misc/SharedSecrets.java +++ b/src/share/classes/sun/misc/SharedSecrets.java @@ -29,7 +29,6 @@ import java.util.jar.JarFile; import java.io.Console; import java.io.FileDescriptor; import java.security.ProtectionDomain; -import javax.security.auth.kerberos.KeyTab; import java.security.AccessController; @@ -52,7 +51,6 @@ public class SharedSecrets { private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess; private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess; private static JavaSecurityAccess javaSecurityAccess; - private static JavaxSecurityAuthKerberosAccess javaxSecurityAuthKerberosAccess; public static JavaUtilJarAccess javaUtilJarAccess() { if (javaUtilJarAccess == null) { @@ -141,16 +139,4 @@ public class SharedSecrets { } return javaSecurityAccess; } - - public static void setJavaxSecurityAuthKerberosAccess - (JavaxSecurityAuthKerberosAccess jsaka) { - javaxSecurityAuthKerberosAccess = jsaka; - } - - public static JavaxSecurityAuthKerberosAccess - getJavaxSecurityAuthKerberosAccess() { - if (javaxSecurityAuthKerberosAccess == null) - unsafe.ensureClassInitialized(KeyTab.class); - return javaxSecurityAuthKerberosAccess; - } } diff --git a/src/share/classes/sun/misc/URLClassPath.java b/src/share/classes/sun/misc/URLClassPath.java index 011067754b70bf5724554cc39c35cabc9df41c76..5db540d60020573158cb450ef892a8f872c5afa9 100644 --- a/src/share/classes/sun/misc/URLClassPath.java +++ b/src/share/classes/sun/misc/URLClassPath.java @@ -532,15 +532,11 @@ public class URLClassPath { uc = url.openConnection(); InputStream in = uc.getInputStream(); if (uc instanceof JarURLConnection) { - /* JarURLConnection.getInputStream() returns a separate - * instance on each call. So we have to close this here. - * The jar file cache will keep the file open. - * Also, need to remember the jar file so it can be closed + /* Need to remember the jar file so it can be closed * in a hurry. */ JarURLConnection juc = (JarURLConnection)uc; jarfile = juc.getJarFile(); - in.close(); } } catch (Exception e) { return null; diff --git a/src/share/classes/sun/net/RegisteredDomain.java b/src/share/classes/sun/net/RegisteredDomain.java new file mode 100644 index 0000000000000000000000000000000000000000..49c67c2b24b7964b4167eb1872d5b1807564dab2 --- /dev/null +++ b/src/share/classes/sun/net/RegisteredDomain.java @@ -0,0 +1,879 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package sun.net; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/* + * The naming tables listed below were gathered from publicly available data such as + * the subdomain registration websites listed for each top-level domain by the Internet + * Assigned Numbers Authority and the website of the Internet Corporation for Assigned Names + * and Numbers as well as Wikipedia. + */ + +public class RegisteredDomain { + +// XX.AA +private static Set top1Set = new HashSet(Arrays.asList("asia", "biz", "cat", "coop", + "edu", "info", "gov", "jobs", "travel", "am", "aq", "ax", "cc", "cf", "cg", "ch", "cv", "cz", + "de", "dj", "dk", "fm", "fo", "ga", "gd", "gf", "gl", "gm", "gq", "gs", "gw", "hm", + "li", "lu", "md", "mh", "mil", "mobi", "mq", "ms", "ms", "ne", "nl", "nu", "si", + "sm", "sr", "su", "tc", "td", "tf", "tg", "tk", "tm", "tv", "va", "vg", + /* ae */ "xn--mgbaam7a8h", /* cn s */ "xn--fiqs8s", /* cn t */ "xn--fiqz9s", + /* eg */ "xn--wgbh1c", /* hk */ "xn--j6w193g", /* jo */ "xn--mgbayh7gpa", + /* lk */ "xn--fzc2c9e2c", /* ps */ "xn--ygbi2ammx", /* ru */ "xn--p1ai", + /* qa */ "xn--wgbl6a", /* sa */ "xn--mgberp4a5d4ar", /* sg */ "xn--yfro4i67o", + /* th */ "xn--o3cw4h", /* tn */ "xn--pgbs0dh", /* tw s */ "xn--kpry57d", + /* tw */ "xn--kprw13d", /* sg tamil */ "xn--clchc0ea0b2g2a9gcd")); + +// common pattern: XX.AA or XX.GOV.AA +private static Set top2Set = new HashSet(Arrays.asList("as", "bf", "cd", "cx", + "ie", "lt", "mr", "tl")); + +// common pattern: XX.AA or XX.COM.AA or XX.EDU.AA or XX.NET.AA or XX.ORG.AA or XX.GOV.AA +private static Set top4Set = new HashSet(Arrays.asList("af", "bm", "bs", "bt", + "bz", "dm", "ky", "lb", "lr", "mo", "sc", "sl", "ws")); + +// AA or less than 3 other XX.BB.AA possible matches +private static Set top3Set = new HashSet(Arrays.asList("ad", "aw", "be", "bw", + "cl", "fi", "int", "io", "mc")); + +// AA.UK exceptions +private static Set ukSet = new HashSet(Arrays.asList( "bl", "british-library", + "jet", "nhs", "nls", "parliament", "mod", "police")); + +// AA.AR exceptions +private static Set arSet = new HashSet(Arrays.asList( "argentina", "educ", + "gobiernoelectronico", "nic", "promocion", "retina", "uba")); + +// AA.OM exceptions +private static Set omSet = new HashSet(Arrays.asList("mediaphone", "nawrastelecom", + "nawras", "omanmobile", "omanpost", "omantel", "rakpetroleum", "siemens", "songfest", + "statecouncil", "shura", "peie", "omran", "omnic", "omanet", "oman", "muriya", "kom")); + +// any XX.BB.AA +private static Set top5Set = new HashSet(Arrays.asList("au", "arpa", "bd", "bn", "ck", + "cy", "er", "et", "fj", "fk", "gt", "gu", "il", "jm", "ke", "kh", "kw", + "mm", "mt", "mz", "ni", "np", "nz", "pg", "sb", "sv", "tz", "uy", "ve", "ye", + "za", "zm", "zw")); + +// XX.CC.BB.JP +private static Set jpSet = new HashSet(Arrays.asList("aichi", "akita", "aomori", + "chiba", "ehime", "fukui", "fukuoka", "fukushima", "gifu", "gunma", "hiroshima", "hokkaido", + "hyogo", "ibaraki", "ishikawa", "iwate", "kagawa", "kagoshima", "kanagawa", "kawasaki", + "kitakyushu", "kobe", "kochi", "kumamoto", "kyoto", "mie", "miyagi", "miyazaki", "nagano", + "nagasaki", "nagoya", "nara", "niigata", "oita", "okayama", "okinawa", "osaka", "saga", + "saitama", "sapporo", "sendai", "shiga", "shimane", "shizuoka", "tochigi", "tokushima", + "tokyo", "tottori", "toyama", "wakayama", "yamagata", "yamaguchi", "yamanashi", "yokohama")); + +// CC.BB.JP exceptions +private static Set jp2Set = new HashSet(Arrays.asList("metro.tokyo.jp", + "pref.aichi.jp", "pref.akita.jp", "pref.aomori.jp", "pref.chiba.jp", "pref.ehime.jp", + "pref.fukui.jp", "pref.fukuoka.jp", "pref.fukushima.jp", "pref.gifu.jp", "pref.gunma.jp", + "pref.hiroshima.jp", "pref.hokkaido.jp", "pref.hyogo.jp", "pref.ibaraki.jp", "pref.ishikawa.jp", + "pref.iwate.jp", "pref.kagawa.jp", "pref.kagoshima.jp", "pref.kanagawa.jp", "pref.kochi.jp", + "pref.kumamoto.jp", "pref.kyoto.jp", "pref.mie.jp", "pref.miyagi.jp", "pref.miyazaki.jp", + "pref.nagano.jp", "pref.nagasaki.jp", "pref.nara.jp", "pref.niigata.jp", "pref.oita.jp", + "pref.okayama.jp", "pref.okinawa.jp", "pref.osaka.jp", "pref.saga.jp", "pref.saitama.jp", + "pref.shiga.jp", "pref.shimane.jp", "pref.shizuoka.jp", "pref.tochigi.jp", "pref.tokushima.jp", + "pref.tottori.jp", "pref.toyama.jp", "pref.wakayama.jp", "pref.yamagata.jp", "pref.yamaguchi.jp", + "pref.yamanashi.jp", "city.chiba.jp", "city.fukuoka.jp", "city.hamamatsu.jp", "city.hiroshima.jp", "city.kawasaki.jp", + "city.kitakyushu.jp", "city.kobe.jp", "city.kyoto.jp", "city.nagoya.jp", "city.niigata.jp", + "city.okayama.jp", "city.osaka.jp", "city.sagamihara.jp", "city.saitama.jp", "city.sapporo.jp", "city.sendai.jp", + "city.shizuoka.jp", "city.yokohama.jp")); + +private static Set usStateSet = new HashSet(Arrays.asList("ak", + "al", "ar", "as", "az", "ca", "co", "ct", "dc", "de", "fl", "ga", "gu", "hi", "ia", + "id", "il", "in", "ks", "ky", "la", "ma", "md", "me", "mi", "mn", "mo", "ms", "mt", + "nc", "nd", "ne", "nh", "nj", "nm", "nv", "ny", "oh", "ok", "or", "pa", "pr", "ri", + "sc", "sd", "tn", "tx", "ut", "vi", "vt", "va", "wa", "wi", "wv", "wy")); + +private static Set usSubStateSet = new HashSet(Arrays.asList("state", + "lib", "k12", "cc", "tec", "gen", "cog", "mus", "dst")); + +private static Map topMap = new HashMap(); +private static Map top3Map = new HashMap(); + +static { + /* + * XX.AA or XX.BB.AA + */ + topMap.put("ac", new HashSet(Arrays.asList("com", "co", "edu", "gov", "net", "mil", "org"))); + topMap.put("ae", new HashSet(Arrays.asList("co", "net", "org", "sch", "ac", "gov", "mil"))); + topMap.put("aero", new HashSet(Arrays.asList("accident-investigation", + "accident-prevention", "aerobatic", "aeroclub", "aerodrome", "agents", "aircraft", + "airline", "airport", "air-surveillance", "airtraffic", "air-traffic-control", + "ambulance", "amusement", "association", "author", "ballooning", "broker", "caa", + "cargo", "catering", "certification", "championship", "charter", "civilaviation", + "club", "conference", "consultant", "consulting", "control", "council", "crew", + "design", "dgca", "educator", "emergency", "engine", "engineer", "entertainment", + "equipment", "exchange", "express", "federation", "flight", "freight", "fuel", + "gliding", "government", "groundhandling", "group", "hanggliding", "homebuilt", + "insurance", "journal", "journalist", "leasing", "logistics", "magazine", + "maintenance", "marketplace", "media", "microlight", "modelling", "navigation", + "parachuting", "paragliding", "passenger-association", "pilot", "press", "production", + "recreation", "repbody", "res", "research", "rotorcraft", "safety", "scientist", + "services", "show", "skydiving", "software", "student", "taxi", "trader", "trading", + "trainer", "union", "workinggroup", "works" ))); + topMap.put( "ag", new HashSet(Arrays.asList("com", "org", "net", "co", "nom"))); + topMap.put( "ai", new HashSet(Arrays.asList("off", "com", "net", "org"))); + topMap.put( "al", new HashSet(Arrays.asList("com", "edu", "gov", "mil", "net", "org"))); + topMap.put( "an", new HashSet(Arrays.asList("com"))); + topMap.put( "ao", new HashSet(Arrays.asList("ed", "gv", "og", "co", "pb", "it"))); + topMap.put( "at", new HashSet(Arrays.asList("ac", "co", "gv", "or", "biz", "info", "priv"))); + topMap.put( "az", new HashSet(Arrays.asList("com", "net", "int", "gov", "org", "edu", "info", + "pp", "mil", "name", "biz"))); + topMap.put( "ba", new HashSet(Arrays.asList("org", "net", "edu", "gov", "mil", "unbi", + "unmo", "unsa", "untz", "unze", "co", "com", "rs"))); + topMap.put( "bb", new HashSet(Arrays.asList("biz", "com", "edu", "gov", "info", "net", "org", + "store"))); + topMap.put( "bg", new HashSet(Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", + "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", + "2", "3", "4", "5", "6", "7", "8", "9"))); + topMap.put( "bh", new HashSet(Arrays.asList("com", "info", "cc", "edu", "biz", "net", + "org", "gov"))); + topMap.put( "bi", new HashSet(Arrays.asList("co", "com", "edu", "gov", "info", "or", "org"))); + topMap.put( "bj", new HashSet(Arrays.asList("asso", "barreau", "com", "edu", "gouv", "gov", "mil"))); + topMap.put( "bo", new HashSet(Arrays.asList("com", "edu", "gov", "gob", "int", "org", "net", + "mil", "tv"))); + topMap.put( "br", new HashSet(Arrays.asList("adm", "adv", "agr", "am", "arq", "art", "ato", + "b", "bio", "blog", "bmd", "cim", "cng", "cnt", "com", "coop", "ecn", "edu", "emp", "eng", + "esp", "etc", "eti", "far", "flog", "fm", "fnd", "fot", "fst", "g12", "ggf", "gov", + "imb", "ind", "inf", "jor", "jus", "lel", "mat", "med", "mil", "mus", "net", "nom", + "not", "ntr", "odo", "org", "ppg", "pro", "psc", "psi", "qsl", "radio", "rec", "slg", + "srv", "taxi", "teo", "tmp", "trd", "tur", "tv", "vet", "vlog", "wiki", "zlg"))); + topMap.put( "bw", new HashSet(Arrays.asList("co", "gov", "org"))); + topMap.put( "by", new HashSet(Arrays.asList("gov", "mil", "com", "of"))); + topMap.put( "ca", new HashSet(Arrays.asList("ab", "bc", "mb", "nb", "nf", + "nl", "ns", "nt", "nu", "on", "pe", "qc", "sk", "yk", "gc"))); + topMap.put( "ci", new HashSet(Arrays.asList("org", "or", "com", "co", "edu", + "ed", "ac", "net", "go", "asso", "xn--aroport-bya", "int", + "presse", "md", "gouv"))); + topMap.put( "com", new HashSet(Arrays.asList("ad", "ar", "br", "cn", "de", "eu", "gb", + "gr", "hu", "jpn", "kr", "no", "qc", "ru", "sa", "se", "uk", "us", "uy", "za"))); + topMap.put( "cm", new HashSet(Arrays.asList("co", "com", "gov", "net"))); + topMap.put( "cn", new HashSet(Arrays.asList("ac", "com", "edu", "gov", "net", + "org", "mil", "xn--55qx5d", "xn--io0a7i", + "ah", "bj", "cq", "fj", "gd", "gs", "gz", "gx", + "ha", "hb", "he", "hi", "hl", "hn", "jl", "js", "jx", "ln", "nm", "nx", "qh", + "sc", "sd", "sh", "sn", "sx", "tj", "xj", "xz", "yn", "zj", "hk", "mo", "tw"))); + topMap.put( "co", new HashSet(Arrays.asList("arts", "com", "edu", "firm", "gov", "info", + "int", "mil", "net", "nom", "org", "rec", "web"))); + topMap.put( "cr", new HashSet(Arrays.asList("ac", "co", "ed", "fi", "go", "or", "sa"))); + topMap.put( "cu", new HashSet(Arrays.asList("com", "edu", "org", "net", "gov", "inf"))); + topMap.put( "do", new HashSet(Arrays.asList("com", "edu", "org", "net", "gov", "gob", + "web", "art", "sld", "mil"))); + topMap.put( "dz", new HashSet(Arrays.asList("com", "org", "net", "gov", "edu", "asso", + "pol", "art"))); + topMap.put( "ec", new HashSet(Arrays.asList("com", "info", "net", "fin", "k12", "med", + "pro", "org", "edu", "gov", "gob", "mil"))); + topMap.put( "ee", new HashSet(Arrays.asList("edu", "gov", "riik", "lib", "med", "com", + "pri", "aip", "org", "fie"))); + topMap.put( "eg", new HashSet(Arrays.asList("com", "edu", "eun", "gov", "mil", "name", + "net", "org", "sci"))); + topMap.put( "es", new HashSet(Arrays.asList("com", "nom", "org", "gob", "edu"))); + topMap.put( "eu", new HashSet(Arrays.asList("europa"))); + topMap.put( "fr", new HashSet(Arrays.asList("com", "asso", "nom", "prd", "presse", + "tm", "aeroport", "assedic", "avocat", "avoues", "cci", "chambagri", + "chirurgiens-dentistes", "experts-comptables", "geometre-expert", "gouv", "greta", + "huissier-justice", "medecin", "notaires", "pharmacien", "port", "veterinaire"))); + topMap.put( "ge", new HashSet(Arrays.asList("com", "edu", "gov", "org", "mil", "net", "pvt"))); + topMap.put( "gg", new HashSet(Arrays.asList("co", "org", "net", "sch", "gov"))); + topMap.put( "gh", new HashSet(Arrays.asList("com", "edu", "gov", "org", "mil"))); + topMap.put( "gi", new HashSet(Arrays.asList("com", "ltd", "gov", "mod", "edu", "org"))); + topMap.put( "gn", new HashSet(Arrays.asList("ac", "com", "edu", "gov", "org", "net"))); + topMap.put( "gp", new HashSet(Arrays.asList("com", "net", "mobi", "edu", "org", "asso"))); + topMap.put( "gr", new HashSet(Arrays.asList("com", "co", "net", "edu", "org", "gov", + "mil", "mod", "sch"))); + topMap.put( "gy", new HashSet(Arrays.asList("co", "com", "net", "org", "edu", "gov"))); + topMap.put( "hk", new HashSet(Arrays.asList("com", "edu", "gov", "idv", "net", "org", + /* com */ "xn--55qx5d", /* edu */ "xn--wcvs22d", /* gov */"xn--mxtq1m", + /* idv */ "xn--gmqw5a", /* net */ "xn--od0alg", /*org*/ "xn--uc0atv"))); + topMap.put( /* hk */ "xn--j6w193g", new HashSet(Arrays.asList( + /* com */ "xn--55qx5d", /* edu */ "xn--wcvs22d", /* gov */"xn--mxtq1m", + /* idv */ "xn--gmqw5a", /* net */ "xn--od0alg", /*org*/ "xn--uc0atv"))); + topMap.put( "hn", new HashSet(Arrays.asList("com", "edu", "org", "net", "mil", "gob"))); + topMap.put( "hr", new HashSet(Arrays.asList("iz.hr", "from.hr", "name.hr", "com.hr"))); + topMap.put( "ht", new HashSet(Arrays.asList("com", "shop", "firm", "info", "adult", + "net", "pro", "org", "med", "art", "coop", "pol", "asso", "edu", "rel", "gouv", "perso"))); + topMap.put( "hu", new HashSet(Arrays.asList("co", "info", "org", "priv", "sport", "tm", + "2000", "agrar", "bolt", "casino", "city", "erotica", "erotika", "film", "forum", + "games", "hotel", "ingatlan", "jogasz", "konyvelo", "lakas", "media", "news", "reklam", + "sex", "shop", "suli", "szex", "tozsde", "utazas", "video"))); + topMap.put( "id", new HashSet(Arrays.asList("ac", "co", "go", "mil", "net", "or", "sch", + "web"))); + topMap.put( "im", new HashSet(Arrays.asList("co.im", "com", "net.im", "gov.im", "org.im", + "ac.im"))); + topMap.put( "in", new HashSet(Arrays.asList("co", "firm", "ernet", "net", "org", "gen", "ind", + "nic", "ac", "edu", "res", "gov", "mil"))); + topMap.put( "iq", new HashSet(Arrays.asList("gov", "edu", "mil", "com", "org", "net" ))); + topMap.put( "ir", new HashSet(Arrays.asList("ac", "co", "gov", "id", "net", "org", "sch" + ))); + topMap.put( "is", new HashSet(Arrays.asList("net", "com", "edu", "gov", "org", "int"))); + topMap.put( "it", new HashSet(Arrays.asList("gov", "edu", "agrigento", "ag", "alessandria", + "al", "ancona", "an", "aosta", "aoste", "ao", "arezzo", "ar", "ascoli-piceno", + "ascolipiceno", "ap", "asti", "at", "avellino", "av", "bari", "ba", + "andria-barletta-trani", "andriabarlettatrani", "trani-barletta-andria", + "tranibarlettaandria", "barletta-trani-andria", "barlettatraniandria", + "andria-trani-barletta", "andriatranibarletta", "trani-andria-barletta", + "traniandriabarletta", "bt", "belluno", "bl", "benevento", "bn", "bergamo", "bg", + "biella", "bi", "bologna", "bo", "bolzano", "bozen", "balsan", "alto-adige", + "altoadige", "suedtirol", "bz", "brescia", "bs", "brindisi", "br", "cagliari", + "ca", "caltanissetta", "cl", "campobasso", "cb", "carboniaiglesias", "carbonia-iglesias", + "iglesias-carbonia", "iglesiascarbonia", "ci", "caserta", "ce", "catania", "ct", + "catanzaro", "cz", "chieti", "ch", "como", "co", "cosenza", "cs", "cremona", "cr", + "crotone", "kr", "cuneo", "cn", "dell-ogliastra", "dellogliastra", "ogliastra", "og", + "enna", "en", "ferrara", "fe", "fermo", "fm", "firenze", "florence", "fi", "foggia", + "fg", "forli-cesena", "forlicesena", "cesena-forli", "cesenaforli", "fc", "frosinone", + "fr", "genova", "genoa", "ge", "gorizia", "go", "grosseto", "gr", "imperia", "im", + "isernia", "is", "laquila", "aquila", "aq", "la-spezia", "laspezia", "sp", "latina", + "lt", "lecce", "le", "lecco", "lc", "livorno", "li", "lodi", "lo", "lucca", "lu", + "macerata", "mc", "mantova", "mn", "massa-carrara", "massacarrara", "carrara-massa", + "carraramassa", "ms", "matera", "mt", "medio-campidano", "mediocampidano", + "campidano-medio", "campidanomedio", "vs", "messina", "me", "milano", "milan", + "mi", "modena", "mo", "monza", "monza-brianza", "monzabrianza", "monzaebrianza", + "monzaedellabrianza", "monza-e-della-brianza", "mb", "napoli", "naples", "na", + "novara", "no", "nuoro", "nu", "oristano", "or", "padova", "padua", "pd", "palermo", + "pa", "parma", "pr", "pavia", "pv", "perugia", "pg", "pescara", "pe", "pesaro-urbino", + "pesarourbino", "urbino-pesaro", "urbinopesaro", "pu", "piacenza", "pc", "pisa", + "pi", "pistoia", "pt", "pordenone", "pn", "potenza", "pz", "prato", "po", "ragusa", + "rg", "ravenna", "ra", "reggio-calabria", "reggiocalabria", "rc", "reggio-emilia", + "reggioemilia", "re", "rieti", "ri", "rimini", "rn", "roma", "rome", "rm", "rovigo", + "ro", "salerno", "sa", "sassari", "ss", "savona", "sv", "siena", "si", "siracusa", + "sr", "sondrio", "so", "taranto", "ta", "tempio-olbia", "tempioolbia", "olbia-tempio", + "olbiatempio", "ot", "teramo", "te", "terni", "tr", "torino", "turin", "to", + "trapani", "tp", "trento", "trentino", "tn", "treviso", "tv", "trieste", "ts", + "udine", "ud", "varese", "va", "venezia", "venice", "ve", "verbania", "vb", + "vercelli", "vc", "verona", "vr", "vibo-valentia", "vibovalentia", "vv", "vicenza", + "vi", "viterbo", "vt"))); + topMap.put( "je", new HashSet(Arrays.asList("co", "org", "net", "sch", "gov"))); + topMap.put( "jo", new HashSet(Arrays.asList("com", "org", "net", "edu", "sch", + "gov", "mil", "name"))); + topMap.put( "jp", new HashSet(Arrays.asList("ac", "ad", "co", "ed", "go", "gr", "lg", + "ne", "or"))); + topMap.put( "kg", new HashSet(Arrays.asList("org", "net", "com", "edu", "gov", "mil"))); + topMap.put( "ki", new HashSet(Arrays.asList("edu", "biz", "net", "org", "gov", + "info", "com"))); + topMap.put( "km", new HashSet(Arrays.asList("org", "nom", "gov", "prd", "tm", "edu", + "mil", "ass", "com", "coop", "asso", "presse", "medecin", "notaires", "pharmaciens", + "veterinaire", "gouv"))); + topMap.put( "kn", new HashSet(Arrays.asList("net", "org", "edu", "gov"))); + topMap.put( "kp", new HashSet(Arrays.asList("com", "edu", "gov", "org", "rep", "tra"))); + topMap.put( "kr", new HashSet(Arrays.asList("ac", "co", "es", "go", "hs", "kg", "mil", + "ms", "ne", "or", "pe", "re", "sc", "busan", "chungbuk", "chungnam", "daegu", + "daejeon", "gangwon", "gwangju", "gyeongbuk", "gyeonggi", "gyeongnam", "incheon", + "jeju", "jeonbuk", "jeonnam", "seoul", "ulsan"))); + topMap.put( "kz", new HashSet(Arrays.asList("org", "edu", "net", "gov", "mil", "com"))); + topMap.put( "la", new HashSet(Arrays.asList("int", "net", "info", "edu", "gov", "per", + "com", "org", "c"))); + topMap.put( "lc", new HashSet(Arrays.asList("com", "net", "co", "org", "edu", "gov", + "l.lc", "p.lc"))); + topMap.put( "lk", new HashSet(Arrays.asList("gov", "sch", "net", "int", "com", "org", + "edu", "ngo", "soc", "web", "ltd", "assn", "grp", "hotel"))); + topMap.put( "ls", new HashSet(Arrays.asList("co", "gov", "ac", "org"))); + topMap.put( "lv", new HashSet(Arrays.asList("com", "edu", "gov", "org", "mil", + "id", "net", "asn", "conf"))); + topMap.put( "ly", new HashSet(Arrays.asList("com", "net", "gov", "plc", "edu", "sch", + "med", "org", "id"))); + topMap.put( "ma", new HashSet(Arrays.asList("co", "net", "gov", "org", "ac", "press"))); + topMap.put( "me", new HashSet(Arrays.asList("co", "net", "org", "edu", "ac", "gov", + "its", "priv"))); + topMap.put( "mg", new HashSet(Arrays.asList("org", "nom", "gov", "prd", "tm", + "edu", "mil", "com"))); + topMap.put( "mk", new HashSet(Arrays.asList("com", "org", "net", "edu", "gov", "inf", + "name", "pro"))); + topMap.put( "ml", new HashSet(Arrays.asList("com", "edu", "gouv", "gov", "net", + "org", "presse"))); + topMap.put( "mn", new HashSet(Arrays.asList("gov", "edu", "org"))); + topMap.put( "mp", new HashSet(Arrays.asList("gov", "co", "org"))); + topMap.put( "mu", new HashSet(Arrays.asList("com", "net", "org", "gov", "ac", + "co", "or"))); + topMap.put( "museum", new HashSet(Arrays.asList("academy", "agriculture", "air", + "airguard", "alabama", "alaska", "amber", "ambulance", "american", "americana", + "americanantiques", "americanart", "amsterdam", "and", "annefrank", "anthro", + "anthropology", "antiques", "aquarium", "arboretum", "archaeological", "archaeology", + "architecture", "art", "artanddesign", "artcenter", "artdeco", "arteducation", + "artgallery", "arts", "artsandcrafts", "asmatart", "assassination", "assisi", + "association", "astronomy", "atlanta", "austin", "australia", "automotive", "aviation", + "axis", "badajoz", "baghdad", "bahn", "bale", "baltimore", "barcelona", "baseball", + "basel", "baths", "bauern", "beauxarts", "beeldengeluid", "bellevue", "bergbau", + "berkeley", "berlin", "bern", "bible", "bilbao", "bill", "birdart", "birthplace", + "bonn", "boston", "botanical", "botanicalgarden", "botanicgarden", "botany", + "brandywinevalley", "brasil", "bristol", "british", "britishcolumbia", "broadcast", + "brunel", "brussel", "brussels", "bruxelles", "building", "burghof", "bus", "bushey", + "cadaques", "california", "cambridge", "can", "canada", "capebreton", "carrier", + "cartoonart", "casadelamoneda", "castle", "castres", "celtic", "center", "chattanooga", + "cheltenham", "chesapeakebay", "chicago", "children", "childrens", "childrensgarden", + "chiropractic", "chocolate", "christiansburg", "cincinnati", "cinema", "circus", + "civilisation", "civilization", "civilwar", "clinton", "clock", "coal", "coastaldefence", + "cody", "coldwar", "collection", "colonialwilliamsburg", "coloradoplateau", "columbia", + "columbus", "communication", "communications", "community", "computer", + "computerhistory", "xn--comunicaes-v6a2o", "contemporary", "contemporaryart", + "convent", "copenhagen", "corporation", "xn--correios-e-telecomunicaes-ghc29a", + "corvette", "costume", "countryestate", "county", "crafts", "cranbrook", "creation", + "cultural", "culturalcenter", "culture", "cyber", "cymru", "dali", "dallas", "database", + "ddr", "decorativearts", "delaware", "delmenhorst", "denmark", "depot", "design", + "detroit", "dinosaur", "discovery", "dolls", "donostia", "durham", "eastafrica", + "eastcoast", "education", "educational", "egyptian", "eisenbahn", "elburg", + "elvendrell", "embroidery", "encyclopedic", "england", "entomology", "environment", + "environmentalconservation", "epilepsy", "essex", "estate", "ethnology", "exeter", + "exhibition", "family", "farm", "farmequipment", "farmers", "farmstead", "field", + "figueres", "filatelia", "film", "fineart", "finearts", "finland", "flanders", "florida", + "force", "fortmissoula", "fortworth", "foundation", "francaise", "frankfurt", + "franziskaner", "freemasonry", "freiburg", "fribourg", "frog", "fundacio", "furniture", + "gallery", "garden", "gateway", "geelvinck", "gemological", "geology", "georgia", + "giessen", "glas", "glass", "gorge", "grandrapids", "graz", "guernsey", "halloffame", + "hamburg", "handson", "harvestcelebration", "hawaii", "health", "heimatunduhren", + "hellas", "helsinki", "hembygdsforbund", "heritage", "histoire", "historical", + "historicalsociety", "historichouses", "historisch", "historisches", "history", + "historyofscience", "horology", "house", "humanities", "illustration", "imageandsound", + "indian", "indiana", "indianapolis", "indianmarket", "intelligence", "interactive", + "iraq", "iron", "isleofman", "jamison", "jefferson", "jerusalem", "jewelry", + "jewish", "jewishart", "jfk", "journalism", "judaica", "judygarland", "juedisches", + "juif", "karate", "karikatur", "kids", "koebenhavn", "koeln", "kunst", "kunstsammlung", + "kunstunddesign", "labor", "labour", "lajolla", "lancashire", "landes", "lans", + "xn--lns-qla", "larsson", "lewismiller", "lincoln", "linz", "living", "livinghistory", + "localhistory", "london", "losangeles", "louvre", "loyalist", "lucerne", "luxembourg", + "luzern", "mad", "madrid", "mallorca", "manchester", "mansion", "mansions", "manx", + "marburg", "maritime", "maritimo", "maryland", "marylhurst", "media", "medical", + "medizinhistorisches", "meeres", "memorial", "mesaverde", "michigan", "midatlantic", + "military", "mill", "miners", "mining", "minnesota", "missile", "missoula", "modern", + "moma", "money", "monmouth", "monticello", "montreal", "moscow", "motorcycle", "muenchen", + "muenster", "mulhouse", "muncie", "museet", "museumcenter", "museumvereniging", "music", + "national", "nationalfirearms", "nationalheritage", "nativeamerican", "naturalhistory", + "naturalhistorymuseum", "naturalsciences", "nature", "naturhistorisches", + "natuurwetenschappen", "naumburg", "naval", "nebraska", "neues", "newhampshire", + "newjersey", "newmexico", "newport", "newspaper", "newyork", "niepce", "norfolk", + "north", "nrw", "nuernberg", "nuremberg", "nyc", "nyny", "oceanographic", + "oceanographique", "omaha", "online", "ontario", "openair", "oregon", "oregontrail", + "otago", "oxford", "pacific", "paderborn", "palace", "paleo", "palmsprings", "panama", + "paris", "pasadena", "pharmacy", "philadelphia", "philadelphiaarea", "philately", + "phoenix", "photography", "pilots", "pittsburgh", "planetarium", "plantation", + "plants", "plaza", "portal", "portland", "portlligat", "posts-and-telecommunications", + "preservation", "presidio", "press", "project", "public", "pubol", "quebec", + "railroad", "railway", "research", "resistance", "riodejaneiro", "rochester", "rockart", + "roma", "russia", "saintlouis", "salem", "salvadordali", "salzburg", "sandiego", + "sanfrancisco", "santabarbara", "santacruz", "santafe", "saskatchewan", "satx", + "savannahga", "schlesisches", "schoenbrunn", "schokoladen", "school", "schweiz", + "science", "scienceandhistory", "scienceandindustry", "sciencecenter", "sciencecenters", + "science-fiction", "sciencehistory", "sciences", "sciencesnaturelles", "scotland", + "seaport", "settlement", "settlers", "shell", "sherbrooke", "sibenik", "silk", "ski", + "skole", "society", "sologne", "soundandvision", "southcarolina", "southwest", "space", + "spy", "square", "stadt", "stalbans", "starnberg", "state", "stateofdelaware", + "station", "steam", "steiermark", "stjohn", "stockholm", "stpetersburg", "stuttgart", + "suisse", "surgeonshall", "surrey", "svizzera", "sweden", "sydney", "tank", "tcm", + "technology", "telekommunikation", "television", "texas", "textile", "theater", + "time", "timekeeping", "topology", "torino", "touch", "town", "transport", "tree", + "trolley", "trust", "trustee", "uhren", "ulm", "undersea", "university", "usa", + "usantiques", "usarts", "uscountryestate", "usculture", "usdecorativearts", "usgarden", + "ushistory", "ushuaia", "uslivinghistory", "utah", "uvic", "valley", "vantaa", + "versailles", "viking", "village", "virginia", "virtual", "virtuel", "vlaanderen", + "volkenkunde", "wales", "wallonie", "war", "washingtondc", "watchandclock", + "watch-and-clock", "western", "westfalen", "whaling", "wildlife", "williamsburg", + "windmill", "workshop", "york", "yorkshire", "yosemite", "youth", "zoological", + "zoology", "xn--9dbhblg6di", "xn--h1aegh"))); + topMap.put( "mv", new HashSet(Arrays.asList("aero", "biz", "com", "coop", "edu", "gov", + "info", "int", "mil", "museum", "name", "net", "org", "pro"))); + topMap.put( "mw", new HashSet(Arrays.asList("ac", "biz", "co", "com", "coop", "edu", + "gov", "int", "museum", "net", "org"))); + topMap.put( "mx", new HashSet(Arrays.asList("com", "org", "gob", "edu", "net"))); + topMap.put( "my", new HashSet(Arrays.asList("com", "net", "org", "gov", "edu", + "mil", "name", "sch"))); + topMap.put( "na", new HashSet(Arrays.asList("co", "com", "org", "edu", "edunet", "net", + "alt", "biz", "info"))); + topMap.put( "nc", new HashSet(Arrays.asList("asso", "nom"))); + topMap.put( "net", new HashSet(Arrays.asList("gb", "se", "uk", "za"))); + topMap.put( "ng", new HashSet(Arrays.asList("name", "sch", "mil", "mobi", "com", + "edu", "gov", "net", "org"))); + topMap.put( "nf", new HashSet(Arrays.asList("com", "net", "per", "rec", "web", + "arts", "firm", "info", "other", "store"))); + topMap.put( "no", new HashSet(Arrays.asList("fhs", "vgs", "fylkesbibl", "folkebibl", + "museum", "idrett", "priv", "mil", "stat", "dep", "kommune", "herad", "aa", + "ah", "bu", "fm", "hl", "hm", "jan-mayen", "mr", "nl", "nt", "of", "ol", "oslo", + "rl", "sf", "st", "svalbard", "tm", "tr", "va", "vf", "akrehamn", + "xn--krehamn-dxa", "algard", "xn--lgrd-poac", "arna", "brumunddal", + "bryne", "bronnoysund", "xn--brnnysund-m8ac", "drobak", + "xn--drbak-wua", "egersund", "fetsund", "floro", "xn--flor-jra", + "fredrikstad", "hokksund", "honefoss", "xn--hnefoss-q1a", + "jessheim", "jorpeland", "xn--jrpeland-54a", "kirkenes", "kopervik", + "krokstadelva", "langevag", "xn--langevg-jxa", "leirvik", "mjondalen", + "xn--mjndalen-64a", "mo-i-rana", "mosjoen", "xn--mosjen-eya", + "nesoddtangen", "orkanger", "osoyro", "xn--osyro-wua", + "raholt", "xn--rholt-mra", "sandnessjoen", "xn--sandnessjen-ogb", + "skedsmokorset", "slattum", "spjelkavik", "stathelle", "stavern", "stjordalshalsen", + "xn--stjrdalshalsen-sqb", "tananger", "tranby", "vossevangen", "tranby", + "vossevangen", "afjord", "xn--fjord-lra", "agdenes", "al", + "xn--l-1fa", "alesund", "xn--lesund-hua", + "alstahaug", "alta", "xn--lt-liac", "alaheadju", + "xn--laheadju-7ya", "alvdal", "amli", "xn--mli-tla", + "amot", "xn--mot-tla", "andebu", "andoy", "xn--andy-ira", + "andasuolo", "ardal", "xn--rdal-poa", "aremark", "arendal", + "xn--s-1fa", "aseral", "xn--seral-lra", + "asker", "askim", "askvoll", "askoy", "xn--asky-ira", + "asnes", "xn--snes-poa", "audnedaln", "aukra", "aure", "aurland", + "aurskog-holand", "xn--aurskog-hland-jnb", + "austevoll", "austrheim", "averoy", "xn--avery-yua", + "balestrand", "ballangen", "balat", "xn--blt-elab", + "balsfjord", "bahccavuotna", "xn--bhccavuotna-k7a", + "bamble", "bardu", "beardu", "beiarn", "bajddar", "xn--bjddar-pta", + "baidar", "xn--bidr-5nac", "berg", "bergen", "berlevag", "xn--berlevg-jxa", + "bearalvahki", "xn--bearalvhki-y4a", "bindal", "birkenes", "bjarkoy", + "xn--bjarky-fya", "bjerkreim", "bjugn", "bodo", "xn--bod-2na", + "badaddja", "xn--bdddj-mrabd", "budejju", "bokn", + "bremanger", "bronnoy", "xn--brnny-wuac", "bygland", + "bykle", "barum", "xn--brum-voa", "bievat", "xn--bievt-0qa", + "bomlo", "xn--bmlo-gra", "batsfjord", "xn--btsfjord-9za", "bahcavuotna", + "xn--bhcavuotna-s4a", "dovre", "drammen", "drangedal", "dyroy", + "xn--dyry-ira", "donna", "xn--dnna-gra", + "eid", "eidfjord", "eidsberg", "eidskog", "eidsvoll", "eigersund", "elverum", + "enebakk", "engerdal", "etne", "etnedal", "evenes", "evenassi", + "xn--eveni-0qa01ga", "evje-og-hornnes", "farsund", "fauske", + "fuossko", "fuoisku", "fedje", "fet", "finnoy", "xn--finny-yua", + "fitjar", "fjaler", "fjell", "flakstad", "flatanger", "flekkefjord", "flesberg", + "flora", "fla", "xn--fl-zia", "folldal", "forsand", "fosnes", "frei", + "frogn", "froland", "frosta", "frana", "xn--frna-woa", + "froya", "xn--frya-hra", "fusa", "fyresdal", "forde", + "xn--frde-gra", "gamvik", "gangaviika", "xn--ggaviika-8ya47h", + "gaular", "gausdal", "gildeskal", "xn--gildeskl-g0a", + "giske", "gjemnes", "gjerdrum", "gjerstad", "gjesdal", "gjovik", + "xn--gjvik-wua", "gloppen", "gol", "gran", "grane", "granvin", + "gratangen", "grimstad", "grong", "kraanghke", "xn--kranghke-b0a", + "grue", "gulen", "hadsel", "halden", "halsa", "hamar", "hamaroy", "habmer", + "xn--hbmer-xqa", "hapmir", "xn--hpmir-xqa", + "hammerfest", "hammarfeasta", "xn--hmmrfeasta-s4ac", + "haram", "hareid", "harstad", "hasvik", "aknoluokta", "xn--koluokta-7ya57h", + "hattfjelldal", "aarborte", "haugesund", "hemne", "hemnes", "hemsedal", + "hitra", "hjartdal", "hjelmeland", + "hobol", "xn--hobl-ira", "hof", "hol", "hole", "holmestrand", "holtalen", + "xn--holtlen-hxa", "hornindal", "horten", "hurdal", "hurum", "hvaler", + "hyllestad", "hagebostad", "xn--hgebostad-g3a", "hoyanger", + "xn--hyanger-q1a", "hoylandet", "xn--hylandet-54a", + "ha", "xn--h-2fa", "ibestad", "inderoy", "xn--indery-fya", + "iveland", "jevnaker", "jondal", "jolster", "xn--jlster-bya", + "karasjok", "karasjohka", "xn--krjohka-hwab49j", + "karlsoy", "galsa", "xn--gls-elac", "karmoy", + "xn--karmy-yua", "kautokeino", "guovdageaidnu", "klepp", "klabu", + "xn--klbu-woa", "kongsberg", "kongsvinger", "kragero", "xn--krager-gya", + "kristiansand", "kristiansund", "krodsherad", "xn--krdsherad-m8a", + "kvalsund", "rahkkeravju", "xn--rhkkervju-01af", + "kvam", "kvinesdal", "kvinnherad", "kviteseid", "kvitsoy", "xn--kvitsy-fya", + "kvafjord", "xn--kvfjord-nxa", "giehtavuoatna", "kvanangen", + "xn--kvnangen-k0a", "navuotna", "xn--nvuotna-hwa", + "kafjord", "xn--kfjord-iua", "gaivuotna", "xn--givuotna-8ya", + "larvik", "lavangen", "lavagis", "loabat", "xn--loabt-0qa", + "lebesby", "davvesiida", "leikanger", "leirfjord", "leka", "leksvik", "lenvik", + "leangaviika", "xn--leagaviika-52b", "lesja", "levanger", "lier", "lierne", + "lillehammer", "lillesand", "lindesnes", "lindas", "xn--linds-pra", + "lom", "loppa", "lahppi", "xn--lhppi-xqa", "lund", "lunner", "luroy", + "xn--lury-ira", "luster", "lyngdal", "lyngen", "ivgu", "lardal", "lerdal", + "xn--lrdal-sra", "lodingen", "xn--ldingen-q1a", "lorenskog", + "xn--lrenskog-54a", "loten", "xn--lten-gra", "malvik", + "masoy", "xn--msy-ula0h", "muosat", "xn--muost-0qa", + "mandal", "marker", "marnardal", "masfjorden", "meland", "meldal", "melhus", + "meloy", "xn--mely-ira", "meraker", "xn--merker-kua", "moareke", + "xn--moreke-jua", "midsund", "midtre-gauldal", "modalen", "modum", + "molde", "moskenes", "moss", "mosvik", "malselv", "xn--mlselv-iua", + "malatvuopmi", "xn--mlatvuopmi-s4a", "namdalseid", "aejrie", "namsos", + "namsskogan", "naamesjevuemie", "xn--nmesjevuemie-tcba", + "laakesvuemie", "nannestad", "narvik", "narviika", "naustdal", "nedre-eiker", + "nesna", "nesodden", "nesseby", "unjarga", "xn--unjrga-rta", "nesset", + "nissedal", "nittedal", "nord-aurdal", "nord-fron", "nord-odal", "norddal", + "nordkapp", "davvenjarga", "xn--davvenjrga-y4a", "nordre-land", + "nordreisa", "raisa", "xn--risa-5na", "nore-og-uvdal", "notodden", "naroy", + "xn--nry-yla5g", "notteroy", "xn--nttery-byae", + "odda", "oksnes", "xn--ksnes-uua", "oppdal", "oppegard", + "xn--oppegrd-ixa", "orkdal", "orland", "xn--rland-uua", + "orskog", "xn--rskog-uua", "orsta", "xn--rsta-fra", + "os.hedmark", "os.hordaland", "osen", "osteroy", "xn--ostery-fya", + "ostre-toten", "xn--stre-toten-zcb", "overhalla", "ovre-eiker", + "xn--vre-eiker-k8a", "oyer", "xn--yer-zna", + "oygarden", "xn--ygarden-p1a", "oystre-slidre", "xn--ystre-slidre-ujb", + "porsanger", "porsangu", "xn--porsgu-sta26f", "porsgrunn", + "radoy", "xn--rady-ira", "rakkestad", "rana", "ruovat", "randaberg", + "rauma", "rendalen", "rennebu", "rennesoy", "xn--rennesy-v1a", + "rindal", "ringebu", "ringerike", "ringsaker", "rissa", "risor", + "xn--risr-ira", "roan", "rollag", "rygge", "ralingen", "xn--rlingen-mxa", + "rodoy", "xn--rdy-0nab", "romskog", "xn--rmskog-bya", + "roros", "xn--rros-gra", "rost", "xn--rst-0na", + "royken", "xn--ryken-vua", "royrvik", "xn--ryrvik-bya", + "rade", "xn--rde-ula", "salangen", "siellak", "saltdal", "salat", + "xn--slt-elab", "xn--slat-5na", "samnanger", + "sandefjord", "sandnes", "sandoy", "xn--sandy-yua", "sarpsborg", + "sauda", "sauherad", "sel", "selbu", "selje", "seljord", "sigdal", "siljan", + "sirdal", "skaun", "skedsmo", "ski", "skien", "skiptvet", "skjervoy", + "xn--skjervy-v1a", "skierva", "xn--skierv-uta", + "skjak", "xn--skjk-soa", "skodje", "skanland", "xn--sknland-fxa", + "skanit", "xn--sknit-yqa", "smola", "xn--smla-hra", + "snillfjord", "snasa", "xn--snsa-roa", "snoasa", "snaase", + "xn--snase-nra", "sogndal", "sokndal", "sola", "solund", "songdalen", + "sortland", "spydeberg", "stange", "stavanger", "steigen", "steinkjer", + "stjordal", "xn--stjrdal-s1a", "stokke", "stor-elvdal", "stord", "stordal", + "storfjord", "omasvuotna", "strand", "stranda", "stryn", "sula", "suldal", + "sund", "sunndal", "surnadal", "sveio", "svelvik", "sykkylven", "sogne", + "xn--sgne-gra", "somna", "xn--smna-gra", "sondre-land", + "xn--sndre-land-0cb", "sor-aurdal", "xn--sr-aurdal-l8a", + "sor-fron", "xn--sr-fron-q1a", "sor-odal", "xn--sr-odal-q1a", + "sor-varanger", "xn--sr-varanger-ggb", "matta-varjjat", + "xn--mtta-vrjjat-k7af", "sorfold", "xn--srfold-bya", + "sorreisa", "xn--srreisa-q1a", "sorum", "xn--srum-gra", + "tana", "deatnu", "time", "tingvoll", "tinn", "tjeldsund", "dielddanuorri", + "tjome", "xn--tjme-hra", "tokke", "tolga", "torsken", "tranoy", + "xn--trany-yua", "tromso", "xn--troms-zua", "tromsa", "romsa", + "trondheim", "troandin", "trysil", "trana", "xn--trna-woa", + "trogstad", "xn--trgstad-r1a", "tvedestrand", "tydal", "tynset", + "tysfjord", "divtasvuodna", "divttasvuotna", "tysnes", "tysvar", + "xn--tysvr-vra", "tonsberg", "xn--tnsberg-q1a", + "ullensaker", "ullensvang", "ulvik", "utsira", "vadso", "xn--vads-jra", + "cahcesuolo", "xn--hcesuolo-7ya35b", "vaksdal", "valle", "vang", + "vanylven", "vardo", "xn--vard-jra", "varggat", "xn--vrggt-xqad", + "vefsn", "vaapste", "vega", "vegarshei", "xn--vegrshei-c0a", "vennesla", + "verdal", "verran", "vestby", "vestnes", "vestre-slidre", "vestre-toten", + "vestvagoy", "xn--vestvgy-ixa6o", "vevelstad", "vik", "vikna", + "vindafjord", "volda", "voss", "varoy", "xn--vry-yla5g", + "vagan", "xn--vgan-qoa", "voagat", "vagsoy", "xn--vgsy-qoa0j", + "vaga", "xn--vg-yiab"))); + + topMap.put( "nr", new HashSet(Arrays.asList("biz", "info", "gov", "edu", "org", + "net", "com", "co"))); + topMap.put( "pa", new HashSet(Arrays.asList("ac", "gob", "com", "org", + "sld", "edu", "net", "ing", "abo", "med", "nom"))); + topMap.put( "pe", new HashSet(Arrays.asList("edu", "gob", "nom", "mil", "org", "com", + "net", "sld"))); + topMap.put( "pf", new HashSet(Arrays.asList( "com"))); + topMap.put( "ph", new HashSet(Arrays.asList("com", "net", "org", "gov", "edu", "ngo", "mil"))); + topMap.put( "pk", new HashSet(Arrays.asList("com", "net", "edu", "org", "fam", "biz", + "web", "gov", "gob", "gok", "gon", "gop", "gos", "gog", "gkp", "info"))); + topMap.put( "pl", new HashSet(Arrays.asList("aid", "agro", "atm", "auto", "biz", "com", + "edu", "gmina", "gsm", "info", "mail", "miasta", "media", "mil", "net", "nieruchomosci", + "nom", "org", "pc", "powiat", "priv", "realestate", "rel", "sex", "shop", "sklep", + "sos", "szkola", "targi", "tm", "tourism", "travel", "turystyka", "art", + "gov", "ngo", "augustow", "babia-gora", "bedzin", "beskidy", + "bialowieza", "bialystok", "bielawa", "bieszczady", "boleslawiec", "bydgoszcz", + "bytom", "cieszyn", "czeladz", "czest", "dlugoleka", "elblag", "elk", "glogow", + "gniezno", "gorlice", "grajewo", "ilawa", "jaworzno", "jelenia-gora", "jgora", + "kalisz", "kazimierz-dolny", "karpacz", "kartuzy", "kaszuby", "katowice", "kepno", + "ketrzyn", "klodzko", "kobierzyce", "kolobrzeg", "konin", "konskowola", "kutno", + "lapy", "lebork", "legnica", "lezajsk", "limanowa", "lomza", "lowicz", "lubin", + "lukow", "malbork", "malopolska", "mazowsze", "mazury", "mielec", "mielno", "mragowo", + "naklo", "nowaruda", "nysa", "olawa", "olecko", "olkusz", "olsztyn", "opoczno", + "opole", "ostroda", "ostroleka", "ostrowiec", "ostrowwlkp", "pila", "pisz", "podhale", + "podlasie", "polkowice", "pomorze", "pomorskie", "prochowice", "pruszkow", "przeworsk", + "pulawy", "radom", "rawa-maz", "rybnik", "rzeszow", "sanok", "sejny", "siedlce", + "slask", "slupsk", "sosnowiec", "stalowa-wola", "skoczow", "starachowice", "stargard", + "suwalki", "swidnica", "swiebodzin", "swinoujscie", "szczecin", "szczytno", "tarnobrzeg", + "tgory", "turek", "tychy", "ustka", "walbrzych", "warmia", "warszawa", "waw", + "wegrow", "wielun", "wlocl", "wloclawek", "wodzislaw", "wolomin", "wroclaw", + "zachpomor", "zagan", "zarow", "zgora", "zgorzelec", "gda", "gdansk", + "krakow", "poznan", "wroc", "co", + "lodz", "lublin", "torun"))); + topMap.put( "pn", new HashSet(Arrays.asList("gov", "co", "org", "edu", "net"))); + topMap.put( "pr", new HashSet(Arrays.asList("com", "net", "org", "gov", "edu", "isla", + "pro", "biz", "info", "name", "est", "prof", "ac", "gobierno"))); + topMap.put( "pro", new HashSet(Arrays.asList("aca", "bar", "cpa", "jur", "law", + "med", "eng"))); + topMap.put( "ps", new HashSet(Arrays.asList("edu", "gov", "sec", "plo", "com", "org", "net"))); + topMap.put( "pt", new HashSet(Arrays.asList("net", "gov", "org", "edu", "int", "publ", + "com", "nome"))); + topMap.put( "pw", new HashSet(Arrays.asList("co", "ne", "or", "ed", "go", "belau"))); + topMap.put( "qa", new HashSet(Arrays.asList("com", "net", "org", "gov", "edu", "mil"))); + topMap.put( "re", new HashSet(Arrays.asList("com", "asso", "nom"))); + topMap.put( "ro", new HashSet(Arrays.asList("com", "org", "tm", "nt", "nom", "info", + "rec", "arts", "firm", "store", "www"))); + topMap.put( "rs", new HashSet(Arrays.asList("co", "org", "edu", "ac", "gov", "in"))); + topMap.put( "ru", new HashSet(Arrays.asList("ac", "com", "edu", "int", "net", "org", + "pp", "adygeya", "altai", "amur", "arkhangelsk", "astrakhan", "bashkiria", + "belgorod", "bir", "bryansk", "buryatia", "cap", "cbg", "chel", "chelyabinsk", "chita", + "chukotka", "dagestan", "e-burg", "grozny", "irkutsk", + "ivanovo", "izhevsk", "jar", "joshkar-ola", "kalmykia", "kaluga", "kamchatka", + "karelia", "kazan", "kchr", "kemerovo", "khabarovsk", "khakassia", "khv", "kirov", + "koenig", "komi", "kostroma", "krasnoyarsk", "kuban", "kurgan", "kursk", "lipetsk", + "magadan", "mari", "mari-el", "marine", "mordovia", "mosreg", "msk", "murmansk", + "nalchik", "nnov", "nov", "novosibirsk", "nsk", "omsk", "orenburg", "oryol", + "palana", "penza", "perm", "pskov", "ptz", "rnd", "ryazan", "sakhalin", "samara", + "saratov", "simbirsk", "smolensk", "spb", "stavropol", "stv", "surgut", "tambov", + "tatarstan", "tom", "tomsk", "tsaritsyn", "tsk", "tula", "tuva", "tver", "tyumen", + "udm", "udmurtia", "ulan-ude", "vladikavkaz", "vladimir", "vladivostok", "volgograd", + "vologda", "voronezh", "vrn", "vyatka", "yakutia", "yamal", "yaroslavl", + "yekaterinburg", "yuzhno-sakhalinsk", "amursk", "baikal", "cmw", "fareast", + "jamal", "kms", "k-uralsk", "kustanai", "kuzbass", "magnitka", "mytis", + "nakhodka", "nkz", "norilsk", "oskol", "pyatigorsk", "rubtsovsk", "snz", "syzran", + "vdonsk", "zgrad", "gov", "mil", "test"))); + topMap.put( "rw", new HashSet(Arrays.asList("gov", "net", "edu", "ac", "com", "co", + "int", "mil", "gouv"))); + topMap.put( "sa", new HashSet(Arrays.asList("com", "net", "org", "gov", "med", "pub", + "edu", "sch"))); + topMap.put( "sd", new HashSet(Arrays.asList("com", "net", "org", "edu", "med", "gov", + "info", "tv"))); + topMap.put( "se", new HashSet(Arrays.asList("a", "ac", "b", "bd", "brand", "c", "d", + "e", "f", "fh", "fhsk", "fhv", "g", "h", "i", "k", "komforb", "kommunalforbund", + "komvux", "l", "lanarb", "lanbib", "m", "n", "naturbruksgymn", "o", "org", "p", "parti", + "pp", "press", "r", "s", "sshn", "t", "tm", "u", "w", "x", "y", "z"))); + topMap.put( "sg", new HashSet(Arrays.asList("com", "net", "org", "gov", "edu", "per"))); + topMap.put( "sh", new HashSet(Arrays.asList("co", "com", "net", "org", "gov", "edu", "nom"))); + topMap.put( "sk", new HashSet(Arrays.asList("gov", "edu"))); + topMap.put( "sn", new HashSet(Arrays.asList("art", "com", "edu", "gouv", "org", "perso", + "univ"))); + topMap.put( "so", new HashSet(Arrays.asList("com", "net", "org"))); + topMap.put( "sr", new HashSet(Arrays.asList("co", "com", "consulado", "edu", "embaixada", + "gov", "mil", "net", "org", "principe", "saotome", "store"))); + topMap.put( "sy", new HashSet(Arrays.asList("edu", "gov", "net", "mil", "com", "org", "news"))); + topMap.put( "sz", new HashSet(Arrays.asList("co", "ac", "org"))); + topMap.put( "th", new HashSet(Arrays.asList("ac", "co", "go", "in", "mi", "net", "or"))); + topMap.put( "tj", new HashSet(Arrays.asList("ac", "biz", "co", "com", "edu", "go", "gov", + "int", "mil", "name", "net", "nic", "org", "test", "web"))); + topMap.put( "tn", new HashSet(Arrays.asList("com", "ens", "fin", "gov", "ind", "intl", + "nat", "net", "org", "info", "perso", "tourism", "edunet", "rnrt", "rns", "rnu", + "mincom", "agrinet", "defense", "turen"))); + topMap.put( "to", new HashSet(Arrays.asList("gov"))); + topMap.put( "tt", new HashSet(Arrays.asList("co", "com", "org", "net", "biz", "info", + "pro", "int", "coop", "jobs", "mobi", "travel", "museum", "aero", "name", "gov", + "edu", "cat", "tel", "mil"))); + topMap.put( "tw", new HashSet(Arrays.asList("edu", "gov", "mil", "com", "net", "org", + "idv", "game", "ebiz", "club", "xn--zf0ao64a", "xn--uc0atv", "xn--czrw28b"))); + topMap.put( "ua", new HashSet(Arrays.asList("com", "edu", "gov", "in", "net", "org", + "cherkassy", "chernigov", "chernovtsy", "ck", "cn", "crimea", "cv", "dn", + "dnepropetrovsk", "donetsk", "dp", "if", "ivano-frankivsk", "kh", "kharkov", + "kherson", "kiev", "kirovograd", "km", "kr", "ks", "lg", + "lugansk", "lutsk", "lviv", "mk", "nikolaev", "od", "odessa", "pl", "poltava", + "rovno", "rv", "sebastopol", "sumy", "te", "ternopil", "uzhgorod", "vinnica", "vn", + "zaporizhzhe", "zp", "zhitomir", "zt", "cr", "lt", "lv", "sb", "sm", "tr", + "co", "biz", "in", "ne", "pp", "uz", "dominic"))); + topMap.put( "ug", new HashSet(Arrays.asList("co", "ac", "sc", "go", "ne", "or", "org", "com"))); + topMap.put( "us", new HashSet(Arrays.asList("dni", "fed", "isa", "kids", "nsn", "kyschools"))); + topMap.put( "uz", new HashSet(Arrays.asList("co", "com", "org", "gov", "ac", "edu", "int", "pp", "net"))); + topMap.put( "vc", new HashSet(Arrays.asList("com", "net", "org", "gov"))); + topMap.put( "vi", new HashSet(Arrays.asList("co", "com", "k12", "net", "org"))); + topMap.put( "vn", new HashSet(Arrays.asList( "com", "net", "org", "edu", "gov", "int", + "ac", "biz", "info", "name", "pro", "health"))); + topMap.put( "vu", new HashSet(Arrays.asList("co", "com", "net", "org", "edu", "gov", "de"))); + topMap.put("org", new HashSet(Arrays.asList("ae", "za"))); + topMap.put("pro", new HashSet(Arrays.asList("aca", "bar", "cpa", "jur", "law", "med", "eng"))); + + top3Map.put("au", new HashSet(Arrays.asList("act.edu.au", "eq.edu.au", + "nsw.edu.au", "nt.edu.au", "qld.edu.au", "sa.edu.au", "tas.edu.au", "vic.edu.au", + "wa.edu.au", "act.gov.au", "nsw.gov.au", "nt.gov.au", "qld.gov.au", "sa.gov.au", + "tas.gov.au", "vic.gov.au", "wa.gov.au"))); + top3Map.put("im", new HashSet(Arrays.asList("ltd.co.im", "plc.co.im"))); + top3Map.put("no", new HashSet(Arrays.asList("gs.aa.no", "gs.ah.no", "gs.bu.no", + "gs.fm.no", "gs.hl.no", "gs.hm.no", "gs.jan-mayen.no", "gs.mr.no", "gs.nl.no", + "gs.nt.no", "gs.of.no", "gs.ol.no", "gs.oslo.no", "gs.rl.no", "gs.sf.no", + "gs.st.no", "gs.svalbard.no", "gs.tm.no", "gs.tr.no", "gs.va.no", "gs.vf.no", + "bo.telemark.no", "xn--b-5ga.telemark.no", "bo.nordland.no", + "xn--b-5ga.nordland.no", "heroy.more-og-romsdal.no", + "xn--hery-ira.xn--mre-og-romsdal-qqb.no", "heroy.nordland.no", + "xn--hery-ira.nordland.no", "nes.akershus.no", "nes.buskerud.no", + "os.hedmark.no", "os.hordaland.no", + "sande.more-og-romsdal.no", "sande.xn--mre-og-romsdal-qqb.no", + "sande.vestfold.no", "valer.ostfold.no", "xn--vler-qoa.xn--stfold-9xa.no", + "valer.hedmark.no", "xn--vler-qoa.hedmark.no"))); + top3Map.put("tr", new HashSet(Arrays.asList("gov.nc.tr"))); +} + + + /* + * Return the registered part of a qualified domain + * name or the original if no match is found. + */ + public static String getRegisteredDomain(String cname) { + int dot; + + /* + * If one dot or less than just return. + */ + dot = cname.lastIndexOf('.'); + if (dot == -1) + return cname; + if (dot == 0) + return ""; + if (dot == cname.length() - 1) { + cname = cname.substring(0, cname.length() -1); + dot = cname.lastIndexOf('.'); + if (dot == -1) + return cname; + if (dot == 0) + return ""; + } + if (dot == cname.length() - 1) + return ""; + + /* + * Break it up into seperate labels. + */ + int second = cname.lastIndexOf('.', dot - 1); + if (second == -1) + return cname; + if (second == 0) + return ""; + int third = cname.lastIndexOf('.', second - 1); + int fourth = -1; + if (third > 0) { + fourth = cname.lastIndexOf('.', third - 1); + } + int fifth = -1; + if (fourth > 0) { + fifth = cname.lastIndexOf('.', fourth - 1); + } + String s = cname.substring(dot + 1); + String s2 = cname.substring(second + 1, dot); + + /* + * Look for longest matches first. + * XX.PVT.K12.MA.US etc. + */ + if (fourth != -1 && s.equals("us") && usStateSet.contains(s2)) { + String s3 = cname.substring(third + 1, second); + String s4 = cname.substring(fourth + 1, third); + if (s3.equals("k12")) { + if (s2.equals("ma") && (s4.equals("chtr") || s4.equals("paroch"))) { + return cname.substring(fifth + 1); + } else if (s4.equals("pvt")) { + return cname.substring(fifth + 1); + } + } + } + + /* + * XX.K12.MA.US. + */ + String str = cname.substring(third + 1); + if (third != -1) { + Set set = top3Map.get(s); + if (set != null) { + if (set.contains(str)) { + return cname.substring(fourth + 1); + } + } else if (s.equals("us") && usStateSet.contains(s2)) { + // check for known third level labels + String s3 = cname.substring(third + 1, second); + if (usSubStateSet.contains(s3)) { + return fourth != -1? cname.substring(fourth + 1): cname; + } else { + return cname.substring(third + 1); + } + } else if (s.equals("uk")) { + if (s2.equals("sch")) { + return cname.substring(fourth + 1); + } + } else if (s.equals("jp")) { + if (jpSet.contains(s2)) { + if (jp2Set.contains(str)) { + return cname.substring(third + 1); + } + return cname.substring(fourth + 1); + } + } + } + + /* + * PREF.AKITA.JP etc. + */ + if (jp2Set.contains(str)) { + return cname.substring(third + 1); + } + + /* + * XX.MA.US. + */ + Set topSet = topMap.get(s); + if (topSet != null) { + if (topSet.contains(s2)) { + return cname.substring(third + 1); + } + if (!((s.equals("us") && usStateSet.contains(s2)) || (s.equals("jp") && jpSet.contains(s2)))) { + return cname.substring(second + 1); + } + } else if (top2Set.contains(s)) { + if (s2.equals("gov")) { + return cname.substring(third + 1); + } + return cname.substring(second + 1); + } else if (top3Set.contains(s)) { + if (s.equals("ad") && s2.equals("nom") || + s.equals("aw") && s2.equals("com") || + s.equals("be") && s2.equals("ac") || + s.equals("cl") && s2.equals("gov") || + s.equals("cl") && s2.equals("gob") || + s.equals("fi") && s2.equals("aland") || + s.equals("int") && s2.equals("eu") || + s.equals("io") && s2.equals("com") || + s.equals("mc") && s2.equals("tm") || + s.equals("mc") && s2.equals("asso") || + s.equals("vc") && s2.equals("com")) { + return cname.substring(third + 1); + } + return cname.substring(second + 1); + } else if (top4Set.contains(s)) { + if (s2.equals("com") || s2.equals("edu") || s2.equals("gov") || + s2.equals("net") || s2.equals("org")) { + return cname.substring(third + 1); + } + return cname.substring(second + 1); + } else if (top5Set.contains(s)) { + return cname.substring(third + 1); + } + + /* + * BB.AA exception cases. + */ + if (s.equals("tr")) { + if (!s2.equals("nic") && !s2.equals("tsk")) { + return cname.substring(third + 1); + } + return cname.substring(second + 1); + } else if (s.equals("uk")) { + if (!ukSet.contains(s2)) { + return cname.substring(third + 1); + } + return cname.substring(second + 1); + } else if (s.equals("ar")) { + if (!arSet.contains(s2)) { + return cname.substring(third + 1); + } + return cname.substring(second + 1); + } else if (s.equals("om")) { + if (!omSet.contains(s2)) { + return cname.substring(third + 1); + } + return cname.substring(second + 1); + } + + /* + * XX.AA + */ + if (top1Set.contains(s)) { + return cname.substring(second + 1); + } + + /* + * Nothing matched so we can't shorten the string. + */ + return cname; + } +} diff --git a/src/share/classes/sun/net/www/URLConnection.java b/src/share/classes/sun/net/www/URLConnection.java index a299ec9c5318b3413ea751263e9f9ce952ce1581..2760acc2081490e765a3f13f7117e3623a0270c5 100644 --- a/src/share/classes/sun/net/www/URLConnection.java +++ b/src/share/classes/sun/net/www/URLConnection.java @@ -238,4 +238,14 @@ abstract public class URLConnection extends java.net.URLConnection { public void close() { url = null; } + + private static HashMap proxiedHosts = new HashMap<>(); + + public synchronized static void setProxiedHost(String host) { + proxiedHosts.put(host.toLowerCase(), null); + } + + public synchronized static boolean isProxiedHost(String host) { + return proxiedHosts.containsKey(host.toLowerCase()); + } } diff --git a/src/share/classes/sun/net/www/http/HttpClient.java b/src/share/classes/sun/net/www/http/HttpClient.java index 7d203829a830b1859bb30937f7a2eff76b416991..bbed63dfc5a4c1c02c8948b0da6884a8760ee9e1 100644 --- a/src/share/classes/sun/net/www/http/HttpClient.java +++ b/src/share/classes/sun/net/www/http/HttpClient.java @@ -301,7 +301,11 @@ public class HttpClient extends NetworkClient { } else { SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkConnect(url.getHost(), url.getPort()); + if (ret.proxy == Proxy.NO_PROXY || ret.proxy == null) { + security.checkConnect(InetAddress.getByName(url.getHost()).getHostAddress(), url.getPort()); + } else { + security.checkConnect(url.getHost(), url.getPort()); + } } ret.url = url; } @@ -457,6 +461,7 @@ public class HttpClient extends NetworkClient { protected synchronized void openServer() throws IOException { SecurityManager security = System.getSecurityManager(); + if (security != null) { security.checkConnect(host, port); } @@ -469,6 +474,7 @@ public class HttpClient extends NetworkClient { url.getProtocol().equals("https") ) { if ((proxy != null) && (proxy.type() == Proxy.Type.HTTP)) { + sun.net.www.URLConnection.setProxiedHost(host); privilegedOpenServer((InetSocketAddress) proxy.address()); usingProxy = true; return; @@ -484,6 +490,7 @@ public class HttpClient extends NetworkClient { * ftp url. */ if ((proxy != null) && (proxy.type() == Proxy.Type.HTTP)) { + sun.net.www.URLConnection.setProxiedHost(host); privilegedOpenServer((InetSocketAddress) proxy.address()); usingProxy = true; return; diff --git a/src/share/classes/sun/security/jgss/krb5/Krb5Util.java b/src/share/classes/sun/security/jgss/krb5/Krb5Util.java index 22552a71c3fff910153721985e9b98ffe667da5a..c51138823b9cc73c793d68a6fe9f74f178a05d4e 100644 --- a/src/share/classes/sun/security/jgss/krb5/Krb5Util.java +++ b/src/share/classes/sun/security/jgss/krb5/Krb5Util.java @@ -44,7 +44,7 @@ import java.util.Iterator; import java.util.List; import java.util.Objects; import java.util.Set; -import sun.misc.SharedSecrets; +import sun.security.krb5.KerberosSecrets; import sun.security.krb5.PrincipalName; /** * Utilities for obtaining and converting Kerberos tickets. @@ -378,7 +378,7 @@ public class Krb5Util { */ public static EncryptionKey[] keysFromJavaxKeyTab( KeyTab ktab, PrincipalName cname) { - return SharedSecrets.getJavaxSecurityAuthKerberosAccess(). + return KerberosSecrets.getJavaxSecurityAuthKerberosAccess(). keyTabGetEncryptionKeys(ktab, cname); } diff --git a/src/share/classes/sun/misc/JavaxSecurityAuthKerberosAccess.java b/src/share/classes/sun/security/krb5/JavaxSecurityAuthKerberosAccess.java similarity index 98% rename from src/share/classes/sun/misc/JavaxSecurityAuthKerberosAccess.java rename to src/share/classes/sun/security/krb5/JavaxSecurityAuthKerberosAccess.java index 9c8f9f2d3d20a8e66f27db2e8a61bac0606010ca..3992e48710890d7153934a882ddd2c800e7a723d 100644 --- a/src/share/classes/sun/misc/JavaxSecurityAuthKerberosAccess.java +++ b/src/share/classes/sun/security/krb5/JavaxSecurityAuthKerberosAccess.java @@ -23,7 +23,7 @@ * questions. */ -package sun.misc; +package sun.security.krb5; import javax.security.auth.kerberos.KeyTab; import sun.security.krb5.EncryptionKey; diff --git a/src/share/classes/sun/security/krb5/KerberosSecrets.java b/src/share/classes/sun/security/krb5/KerberosSecrets.java new file mode 100644 index 0000000000000000000000000000000000000000..44f2f0f94aa8a986f105dc08d5883873977df876 --- /dev/null +++ b/src/share/classes/sun/security/krb5/KerberosSecrets.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.security.krb5; + +import javax.security.auth.kerberos.KeyTab; +import sun.misc.Unsafe; + +public class KerberosSecrets { + private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static JavaxSecurityAuthKerberosAccess javaxSecurityAuthKerberosAccess; + + public static void setJavaxSecurityAuthKerberosAccess + (JavaxSecurityAuthKerberosAccess jsaka) { + javaxSecurityAuthKerberosAccess = jsaka; + } + + public static JavaxSecurityAuthKerberosAccess + getJavaxSecurityAuthKerberosAccess() { + if (javaxSecurityAuthKerberosAccess == null) + unsafe.ensureClassInitialized(KeyTab.class); + return javaxSecurityAuthKerberosAccess; + } +} diff --git a/src/share/classes/sun/security/pkcs11/Config.java b/src/share/classes/sun/security/pkcs11/Config.java index 6506e40e9663d5cdf6a0daaf4f9e2fef8e593797..46a0075c5b97830762d7f70fa58a873ea8b51537 100644 --- a/src/share/classes/sun/security/pkcs11/Config.java +++ b/src/share/classes/sun/security/pkcs11/Config.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -653,6 +653,13 @@ final class Config { } } debug(keyword + ": " + lib); + + // Check to see if full path is specified to prevent the DLL + // preloading attack + if (!(new File(lib)).isAbsolute()) { + throw new ConfigurationException( + "Absolute path required for library value: " + lib); + } return lib; } diff --git a/src/share/classes/sun/security/pkcs11/Secmod.java b/src/share/classes/sun/security/pkcs11/Secmod.java index 20775444731bcc784fd1d733d497e7a171165388..4f32e33d2a8a2f7c3f6a2c993ed58933f6e88500 100644 --- a/src/share/classes/sun/security/pkcs11/Secmod.java +++ b/src/share/classes/sun/security/pkcs11/Secmod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, 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 @@ -236,7 +236,8 @@ public final class Secmod { throw new IllegalStateException(e); } if (modules == null) { - List modules = (List)nssGetModuleList(nssHandle); + List modules = (List)nssGetModuleList(nssHandle, + nssLibDir); this.modules = Collections.unmodifiableList(modules); } return modules; @@ -358,7 +359,7 @@ public final class Secmod { * A representation of one PKCS#11 slot in a PKCS#11 module. */ public static final class Module { - // name of the native library + // path of the native library final String libraryName; // descriptive name used by NSS final String commonName; @@ -371,8 +372,10 @@ public final class Secmod { // trust attributes. Used for the KEYSTORE and TRUSTANCHOR modules only private Map trust; - Module(String libraryName, String commonName, boolean fips, int slot) { + Module(String libraryDir, String libraryName, String commonName, + boolean fips, int slot) { ModuleType type; + if ((libraryName == null) || (libraryName.length() == 0)) { // must be softtoken libraryName = System.mapLibraryName(SOFTTOKEN_LIB_NAME); @@ -397,7 +400,7 @@ public final class Secmod { + "module: " + libraryName + ", " + commonName); } } - this.libraryName = libraryName; + this.libraryName = (new File(libraryDir, libraryName)).getPath(); this.commonName = commonName; this.slot = slot; this.type = type; @@ -752,6 +755,6 @@ public final class Secmod { private static native boolean nssInit(String functionName, long handle, String configDir); - private static native Object nssGetModuleList(long handle); + private static native Object nssGetModuleList(long handle, String libDir); } diff --git a/src/share/classes/sun/security/provider/PolicyFile.java b/src/share/classes/sun/security/provider/PolicyFile.java index 9fa33e1a7ef2a07450cb772ac6b17e5c45b2a9db..b9a8ec2eb499b3a8121b6adca74c213218d54f0d 100644 --- a/src/share/classes/sun/security/provider/PolicyFile.java +++ b/src/share/classes/sun/security/provider/PolicyFile.java @@ -1790,15 +1790,30 @@ public class PolicyFile extends java.security.Policy { CodeSource canonCs = cs; URL u = cs.getLocation(); - if (u != null && u.getProtocol().equals("file")) { - boolean isLocalFile = false; - String host = u.getHost(); - isLocalFile = (host == null || host.equals("") || - host.equals("~") || host.equalsIgnoreCase("localhost")); - - if (isLocalFile) { - path = u.getFile().replace('/', File.separatorChar); - path = ParseUtil.decode(path); + if (u != null) { + if (u.getProtocol().equals("jar")) { + // unwrap url embedded inside jar url + String spec = u.getFile(); + int separator = spec.indexOf("!/"); + if (separator != -1) { + try { + u = new URL(spec.substring(0, separator)); + } catch (MalformedURLException e) { + // Fail silently. In this case, url stays what + // it was above + } + } + } + if (u.getProtocol().equals("file")) { + boolean isLocalFile = false; + String host = u.getHost(); + isLocalFile = (host == null || host.equals("") || + host.equals("~") || host.equalsIgnoreCase("localhost")); + + if (isLocalFile) { + path = u.getFile().replace('/', File.separatorChar); + path = ParseUtil.decode(path); + } } } diff --git a/src/share/classes/sun/security/tools/KeyTool.java b/src/share/classes/sun/security/tools/KeyTool.java index d2749f5f8b2685edbf1d2d12cfa5abd71f8acb33..2259c0382a8caebe91dae5a405043ce00965eaa2 100644 --- a/src/share/classes/sun/security/tools/KeyTool.java +++ b/src/share/classes/sun/security/tools/KeyTool.java @@ -4193,15 +4193,11 @@ class Pair { return "Pair[" + fst + "," + snd + "]"; } - private static boolean equals(Object x, Object y) { - return (x == null && y == null) || (x != null && x.equals(y)); - } - public boolean equals(Object other) { return other instanceof Pair && - equals(fst, ((Pair)other).fst) && - equals(snd, ((Pair)other).snd); + Objects.equals(fst, ((Pair)other).fst) && + Objects.equals(snd, ((Pair)other).snd); } public int hashCode() { diff --git a/src/share/classes/sun/security/x509/DistributionPoint.java b/src/share/classes/sun/security/x509/DistributionPoint.java index 4d881350fcbdb31774a28462c079742570b376f6..faca907518c0037b7fb462f41256f7b363cc5bf1 100644 --- a/src/share/classes/sun/security/x509/DistributionPoint.java +++ b/src/share/classes/sun/security/x509/DistributionPoint.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2011, 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 @@ -318,13 +318,6 @@ public class DistributionPoint { out.write(DerValue.tag_Sequence, tagged); } - /** - * Utility function for a.equals(b) where both a and b may be null. - */ - private static boolean equals(Object a, Object b) { - return (a == null) ? (b == null) : a.equals(b); - } - /** * Compare an object to this DistributionPoint for equality. * @@ -340,9 +333,9 @@ public class DistributionPoint { } DistributionPoint other = (DistributionPoint)obj; - boolean equal = equals(this.fullName, other.fullName) - && equals(this.relativeName, other.relativeName) - && equals(this.crlIssuer, other.crlIssuer) + boolean equal = Objects.equals(this.fullName, other.fullName) + && Objects.equals(this.relativeName, other.relativeName) + && Objects.equals(this.crlIssuer, other.crlIssuer) && Arrays.equals(this.reasonFlags, other.reasonFlags); return equal; } diff --git a/src/share/classes/sun/security/x509/DistributionPointName.java b/src/share/classes/sun/security/x509/DistributionPointName.java index d8d9c63690a5539e4d8de8c76459011f65def0f7..4409dc0c6c2b7342ae8c55812d794c4cd2d2ddf6 100644 --- a/src/share/classes/sun/security/x509/DistributionPointName.java +++ b/src/share/classes/sun/security/x509/DistributionPointName.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, 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 @@ -201,8 +201,8 @@ public class DistributionPointName { } DistributionPointName other = (DistributionPointName)obj; - return equals(this.fullName, other.fullName) && - equals(this.relativeName, other.relativeName); + return Objects.equals(this.fullName, other.fullName) && + Objects.equals(this.relativeName, other.relativeName); } /** @@ -239,11 +239,4 @@ public class DistributionPointName { return sb.toString(); } - - /* - * Utility function for a.equals(b) where both a and b may be null. - */ - private static boolean equals(Object a, Object b) { - return (a == null) ? (b == null) : a.equals(b); - } } diff --git a/src/share/native/common/jdk_util.h b/src/share/native/common/jdk_util.h index 8c15a4dcc353d2854a326451c6d99534bbee3625..d64e51e658d156b42b9ddd8ab35d3417e08894e9 100644 --- a/src/share/native/common/jdk_util.h +++ b/src/share/native/common/jdk_util.h @@ -28,6 +28,7 @@ #include "jni.h" #include "jvm.h" +#include "jdk_util_md.h" #ifdef __cplusplus extern "C" { diff --git a/src/share/native/sun/awt/image/jpeg/imageioJPEG.c b/src/share/native/sun/awt/image/jpeg/imageioJPEG.c index 28af8316204a4b67cfbf42ba503f56220710bc43..0f39761750a97978cf232b3b484e8ad446d1c5f7 100644 --- a/src/share/native/sun/awt/image/jpeg/imageioJPEG.c +++ b/src/share/native/sun/awt/image/jpeg/imageioJPEG.c @@ -1971,6 +1971,13 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage return data->abortFlag; } + if (cinfo->output_components <= 0 || + cinfo->image_width > (0xffffffffu / (unsigned int)cinfo->output_components)) + { + JNU_ThrowByName(env, "javax/imageio/IIOException", + "Invalid number of output components"); + return data->abortFlag; + } // Allocate a 1-scanline buffer scanLinePtr = (JSAMPROW)malloc(cinfo->image_width*cinfo->output_components); diff --git a/src/share/native/sun/font/freetypeScaler.c b/src/share/native/sun/font/freetypeScaler.c index 97744125c5fd9c43560bf16b23ecc52007b589c8..591bb382f9bc79588570b093309803174b3a255e 100644 --- a/src/share/native/sun/font/freetypeScaler.c +++ b/src/share/native/sun/font/freetypeScaler.c @@ -367,7 +367,7 @@ static double euclidianDistance(double a, double b) { JNIEXPORT jlong JNICALL Java_sun_font_FreetypeFontScaler_createScalerContextNative( JNIEnv *env, jobject scaler, jlong pScaler, jdoubleArray matrix, - jboolean ttFont, jint aa, jint fm, jfloat boldness, jfloat italic) { + jint aa, jint fm, jfloat boldness, jfloat italic) { double dmat[4], ptsz; FTScalerContext *context = (FTScalerContext*) calloc(1, sizeof(FTScalerContext)); diff --git a/src/share/native/sun/font/layout/SunLayoutEngine.cpp b/src/share/native/sun/font/layout/SunLayoutEngine.cpp index 553334a18951e1827022a52140723c70be7abd09..c7db94829f46a8c0826d2fc0d15d776278e9c4b3 100644 --- a/src/share/native/sun/font/layout/SunLayoutEngine.cpp +++ b/src/share/native/sun/font/layout/SunLayoutEngine.cpp @@ -186,7 +186,11 @@ JNIEXPORT void JNICALL Java_sun_font_SunLayoutEngine_nativeLayout jchar buffer[256]; jchar* chars = buffer; if (len > 256) { - chars = (jchar*)malloc(len * sizeof(jchar)); + size_t size = len * sizeof(jchar); + if (size / sizeof(jchar) != len) { + return; + } + chars = (jchar*)malloc(size); if (chars == 0) { return; } diff --git a/src/share/native/sun/java2d/cmm/lcms/LCMS.c b/src/share/native/sun/java2d/cmm/lcms/LCMS.c index 8ac40e4b1d17486836172dc2400f6772cbfe78ee..1195f7c5067c354a7b14eacf5a86745098d10af6 100644 --- a/src/share/native/sun/java2d/cmm/lcms/LCMS.c +++ b/src/share/native/sun/java2d/cmm/lcms/LCMS.c @@ -233,9 +233,19 @@ JNIEXPORT jlong JNICALL Java_sun_java2d_cmm_lcms_LCMS_loadProfile jint dataSize; storeID_t sProf; + if (JNU_IsNull(env, data)) { + JNU_ThrowIllegalArgumentException(env, "Invalid profile data"); + return 0L; + } + dataArray = (*env)->GetByteArrayElements (env, data, 0); dataSize = (*env)->GetArrayLength (env, data); + if (dataArray == NULL) { + JNU_ThrowIllegalArgumentException(env, "Invalid profile data"); + return 0L; + } + sProf.pf = cmsOpenProfileFromMem((const void *)dataArray, (cmsUInt32Number) dataSize); @@ -334,8 +344,9 @@ JNIEXPORT void JNICALL Java_sun_java2d_cmm_lcms_LCMS_getProfileData } /* Get profile header info */ -cmsBool _getHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize); -cmsBool _setHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize); +static cmsBool _getHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize); +static cmsBool _setHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize); +static cmsBool _writeCookedTag(cmsHPROFILE pfTarget, cmsTagSignature sig, jbyte *pData, jint size); /* * Class: sun_java2d_cmm_lcms_LCMS @@ -356,7 +367,7 @@ JNIEXPORT jint JNICALL Java_sun_java2d_cmm_lcms_LCMS_getTagSize result = sizeof(cmsICCHeader); } else { if (cmsIsTag(sProf.pf, sig.cms)) { - result = cmsReadRawTag(sProf.pf, sig.cms, NULL, 0); + result = cmsReadRawTag(sProf.pf, sig.cms, NULL, 0); } else { JNU_ThrowByName(env, "java/awt/color/CMMException", "ICC profile tag not found"); @@ -468,22 +479,30 @@ JNIEXPORT void JNICALL Java_sun_java2d_cmm_lcms_LCMS_setTagData sProf.j = id; sig.j = tagSig; + if (JNU_IsNull(env, data)) { + JNU_ThrowIllegalArgumentException(env, "Can not write tag data."); + return; + } tagSize =(*env)->GetArrayLength(env, data); dataArray = (*env)->GetByteArrayElements(env, data, 0); + if (dataArray == NULL) { + JNU_ThrowIllegalArgumentException(env, "Can not write tag data."); + return; + } + if (tagSig == SigHead) { status = _setHeaderInfo(sProf.pf, dataArray, tagSize); } else { - status = cmsWriteRawTag(sProf.pf, sig.cms, dataArray, tagSize); + status = _writeCookedTag(sProf.pf, sig.cms, dataArray, tagSize); } (*env)->ReleaseByteArrayElements(env, data, dataArray, 0); if (!status) { - JNU_ThrowByName(env, "java/awt/color/CMMException", - "Can not write tag data."); + JNU_ThrowIllegalArgumentException(env, "Can not write tag data."); } } @@ -645,7 +664,7 @@ JNIEXPORT void JNICALL Java_sun_java2d_cmm_lcms_LCMS_initLCMS PF_ID_fID = (*env)->GetFieldID (env, Pf, "ID", "J"); } -cmsBool _getHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize) +static cmsBool _getHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize) { cmsUInt32Number pfSize = 0; cmsUInt8Number* pfBuffer = NULL; @@ -672,7 +691,7 @@ cmsBool _getHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize) return status; } -cmsBool _setHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize) +static cmsBool _setHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize) { cmsICCHeader pfHeader = { 0 }; @@ -696,3 +715,77 @@ cmsBool _setHeaderInfo(cmsHPROFILE pf, jbyte* pBuffer, jint bufferSize) return TRUE; } + +static cmsBool _writeCookedTag(cmsHPROFILE pfTarget, + cmsTagSignature sig, + jbyte *pData, jint size) +{ + cmsBool status; + cmsUInt32Number pfSize = 0; + cmsUInt8Number* pfBuffer = NULL; + + cmsHPROFILE p = cmsCreateProfilePlaceholder(NULL); + if (NULL != p) { + cmsICCHeader hdr = { 0 }; + + /* Populate the placeholder's header according to target profile */ + hdr.flags = cmsGetHeaderFlags(pfTarget); + hdr.renderingIntent = cmsGetHeaderRenderingIntent(pfTarget); + hdr.manufacturer = cmsGetHeaderManufacturer(pfTarget); + hdr.model = cmsGetHeaderModel(pfTarget); + hdr.pcs = cmsGetPCS(pfTarget); + hdr.colorSpace = cmsGetColorSpace(pfTarget); + hdr.deviceClass = cmsGetDeviceClass(pfTarget); + hdr.version = cmsGetEncodedICCversion(pfTarget); + cmsGetHeaderAttributes(pfTarget, &hdr.attributes); + cmsGetHeaderProfileID(pfTarget, (cmsUInt8Number*)&hdr.profileID); + + cmsSetHeaderFlags(p, hdr.flags); + cmsSetHeaderManufacturer(p, hdr.manufacturer); + cmsSetHeaderModel(p, hdr.model); + cmsSetHeaderAttributes(p, hdr.attributes); + cmsSetHeaderProfileID(p, (cmsUInt8Number*)&(hdr.profileID)); + cmsSetHeaderRenderingIntent(p, hdr.renderingIntent); + cmsSetPCS(p, hdr.pcs); + cmsSetColorSpace(p, hdr.colorSpace); + cmsSetDeviceClass(p, hdr.deviceClass); + cmsSetEncodedICCversion(p, hdr.version); + + + if (cmsWriteRawTag(p, sig, pData, size)) { + if (cmsSaveProfileToMem(p, NULL, &pfSize)) { + pfBuffer = malloc(pfSize); + if (pfBuffer != NULL) { + /* load raw profile data into the buffer */ + if (!cmsSaveProfileToMem(p, pfBuffer, &pfSize)) { + free(pfBuffer); + pfBuffer = NULL; + } + } + } + } + cmsCloseProfile(p); + } + + if (pfBuffer == NULL) { + return FALSE; + } + + /* re-open the placeholder profile */ + p = cmsOpenProfileFromMem(pfBuffer, pfSize); + free(pfBuffer); + status = FALSE; + + if (p != NULL) { + /* Note that pCookedTag points to internal structures of the placeholder, + * so this data is valid only while the placeholder is open. + */ + void *pCookedTag = cmsReadTag(p, sig); + if (pCookedTag != NULL) { + status = cmsWriteTag(pfTarget, sig, pCookedTag); + } + pCookedTag = NULL; + cmsCloseProfile(p); + } + return status; +} diff --git a/src/share/native/sun/java2d/cmm/lcms/cmsio0.c b/src/share/native/sun/java2d/cmm/lcms/cmsio0.c index 8b7fb664bfe64d472bb36aca527fc22e9bba9a8e..257a964125d1d90d26ac9af3a9b60fb809d37765 100644 --- a/src/share/native/sun/java2d/cmm/lcms/cmsio0.c +++ b/src/share/native/sun/java2d/cmm/lcms/cmsio0.c @@ -1636,6 +1636,11 @@ cmsInt32Number CMSEXPORT cmsReadRawTag(cmsHPROFILE hProfile, cmsTagSignature sig TagDescriptor = _cmsGetTagDescriptor(sig); // Serialize + if (!_cmsWriteTypeBase(MemIO, TypeHandler ->Signature)) { + cmsCloseIOhandler(MemIO); + return 0; + } + if (!TypeHandler ->WritePtr(TypeHandler, MemIO, Object, TagDescriptor ->ElemCount)) return 0; // Get Size and close diff --git a/src/share/native/sun/java2d/loops/TransformHelper.c b/src/share/native/sun/java2d/loops/TransformHelper.c index 7ccfb0694dc754403ccce029c9e5f3b5b9a561e4..a511774747630d953a34c4f5ca67811fe9dffab6 100644 --- a/src/share/native/sun/java2d/loops/TransformHelper.c +++ b/src/share/native/sun/java2d/loops/TransformHelper.c @@ -74,6 +74,94 @@ static TransformInterpFunc BicubicInterpStub; TransformInterpFunc *pBilinearFunc = BilinearInterp; TransformInterpFunc *pBicubicFunc = BicubicInterp; +/* + * The dxydxy parameters of the inverse transform determine how + * quickly we step through the source image. For tiny scale + * factors (on the order of 1E-16 or so) the stepping distances + * are huge. The image has been scaled so small that stepping + * a single pixel in device space moves the sampling point by + * billions (or more) pixels in the source image space. These + * huge stepping values can overflow the whole part of the longs + * we use for the fixed point stepping equations and so we need + * a more robust solution. We could simply iterate over every + * device pixel, use the inverse transform to transform it back + * into the source image coordinate system and then test it for + * being in range and sample pixel-by-pixel, but that is quite + * a bit more expensive. Fortunately, if the scale factors are + * so tiny that we overflow our long values then the number of + * pixels we are planning to visit should be very tiny. The only + * exception to that rule is if the scale factor along one + * dimension is tiny (creating the huge stepping values), and + * the scale factor along the other dimension is fairly regular + * or an up-scale. In that case we have a lot of pixels along + * the direction of the larger axis to sample, but few along the + * smaller axis. Though, pessimally, with an added shear factor + * such a linearly tiny image could have bounds that cover a large + * number of pixels. Such odd transformations should be very + * rare and the absolute limit on calculations would involve a + * single reverse transform of every pixel in the output image + * which is not fast, but it should not cause an undue stall + * of the rendering software. + * + * The specific test we will use is to calculate the inverse + * transformed values of every corner of the destination bounds + * (in order to be user-clip independent) and if we can + * perform a fixed-point-long inverse transform of all of + * those points without overflowing we will use the fast + * fixed point algorithm. Otherwise we will use the safe + * per-pixel transform algorithm. + * The 4 corners are 0,0, 0,dsth, dstw,0, dstw,dsth + * Transformed they are: + * tx, ty + * tx +dxdy*H, ty +dydy*H + * tx+dxdx*W, ty+dydx*W + * tx+dxdx*W+dxdy*H, ty+dydx*W+dydy*H + */ +/* We reject coordinates not less than 1<<30 so that the distance between */ +/* any 2 of them is less than 1<<31 which would overflow into the sign */ +/* bit of a signed long value used to represent fixed point coordinates. */ +#define TX_FIXED_UNSAFE(v) (fabs(v) >= (1<<30)) +static jboolean +checkOverflow(jint dxoff, jint dyoff, + SurfaceDataBounds *pBounds, + TransformInfo *pItxInfo, + jdouble *retx, jdouble *rety) +{ + jdouble x, y; + + x = dxoff+pBounds->x1+0.5; /* Center of pixel x1 */ + y = dyoff+pBounds->y1+0.5; /* Center of pixel y1 */ + Transform_transform(pItxInfo, &x, &y); + *retx = x; + *rety = y; + if (TX_FIXED_UNSAFE(x) || TX_FIXED_UNSAFE(y)) { + return JNI_TRUE; + } + + x = dxoff+pBounds->x2-0.5; /* Center of pixel x2-1 */ + y = dyoff+pBounds->y1+0.5; /* Center of pixel y1 */ + Transform_transform(pItxInfo, &x, &y); + if (TX_FIXED_UNSAFE(x) || TX_FIXED_UNSAFE(y)) { + return JNI_TRUE; + } + + x = dxoff+pBounds->x1+0.5; /* Center of pixel x1 */ + y = dyoff+pBounds->y2-0.5; /* Center of pixel y2-1 */ + Transform_transform(pItxInfo, &x, &y); + if (TX_FIXED_UNSAFE(x) || TX_FIXED_UNSAFE(y)) { + return JNI_TRUE; + } + + x = dxoff+pBounds->x2-0.5; /* Center of pixel x2-1 */ + y = dyoff+pBounds->y2-0.5; /* Center of pixel y2-1 */ + Transform_transform(pItxInfo, &x, &y); + if (TX_FIXED_UNSAFE(x) || TX_FIXED_UNSAFE(y)) { + return JNI_TRUE; + } + + return JNI_FALSE; +} + /* * Fill the edge buffer with pairs of coordinates representing the maximum * left and right pixels of the destination surface that should be processed @@ -82,21 +170,19 @@ TransformInterpFunc *pBicubicFunc = BicubicInterp; * Only pixels that map back through the specified (inverse) transform to a * source coordinate that falls within the (0, 0, sw, sh) bounds of the * source image should be processed. - * pEdgeBuf points to an array of jints that holds MAXEDGES*2 values. - * If more storage is needed, then this function allocates a new buffer. - * In either case, a pointer to the buffer actually used to store the - * results is returned. - * The caller is responsible for freeing the buffer if the return value - * is not the same as the original pEdgeBuf passed in. + * pEdges points to an array of jints that holds 2 + numedges*2 values where + * numedges should match (pBounds->y2 - pBounds->y1). + * The first two jints in pEdges should be set to y1 and y2 and every pair + * of jints after that represent the xmin,xmax of all pixels in range of + * the transformed blit for the corresponding scanline. */ -static jint * -calculateEdges(jint *pEdgeBuf, +static void +calculateEdges(jint *pEdges, SurfaceDataBounds *pBounds, TransformInfo *pItxInfo, jlong xbase, jlong ybase, juint sw, juint sh) { - jint *pEdges; jlong dxdxlong, dydxlong; jlong dxdylong, dydylong; jlong drowxlong, drowylong; @@ -111,10 +197,8 @@ calculateEdges(jint *pEdgeBuf, dy1 = pBounds->y1; dx2 = pBounds->x2; dy2 = pBounds->y2; - if ((dy2-dy1) > MAXEDGES) { - pEdgeBuf = malloc(2 * (dy2-dy1) * sizeof (*pEdges)); - } - pEdges = pEdgeBuf; + *pEdges++ = dy1; + *pEdges++ = dy2; drowxlong = (dx2-dx1-1) * dxdxlong; drowylong = (dx2-dx1-1) * dydxlong; @@ -155,10 +239,22 @@ calculateEdges(jint *pEdgeBuf, ybase += dydylong; dy1++; } - - return pEdgeBuf; } +static void +Transform_SafeHelper(JNIEnv *env, + SurfaceDataOps *srcOps, + SurfaceDataOps *dstOps, + SurfaceDataRasInfo *pSrcInfo, + SurfaceDataRasInfo *pDstInfo, + NativePrimitive *pMaskBlitPrim, + CompositeInfo *pCompInfo, + TransformHelperFunc *pHelperFunc, + TransformInterpFunc *pInterpFunc, + RegionData *pClipInfo, TransformInfo *pItxInfo, + jint *pData, jint *pEdges, + jint dxoff, jint dyoff, jint sw, jint sh); + /* * Class: sun_java2d_loops_TransformHelper * Method: Transform @@ -187,12 +283,14 @@ Java_sun_java2d_loops_TransformHelper_Transform jint maxlinepix; TransformHelperFunc *pHelperFunc; TransformInterpFunc *pInterpFunc; - jint edgebuf[MAXEDGES * 2]; + jdouble xorig, yorig; + jint numedges; jint *pEdges; - jdouble x, y; - jlong xbase, ybase; - jlong dxdxlong, dydxlong; - jlong dxdylong, dydylong; + jint edgebuf[2 + MAXEDGES * 2]; + union { + jlong align; + jint data[LINE_SIZE]; + } rgb; #ifdef MAKE_STUBS static int th_initialized; @@ -269,39 +367,62 @@ Java_sun_java2d_loops_TransformHelper_Transform if (srcOps->Lock(env, srcOps, &srcInfo, pHelperPrim->srcflags) != SD_SUCCESS) { + /* edgeArray should already contain zeros for min/maxy */ return; } if (dstOps->Lock(env, dstOps, &dstInfo, pMaskBlitPrim->dstflags) != SD_SUCCESS) { SurfaceData_InvokeUnlock(env, srcOps, &srcInfo); + /* edgeArray should already contain zeros for min/maxy */ return; } Region_IntersectBounds(&clipInfo, &dstInfo.bounds); + numedges = (dstInfo.bounds.y2 - dstInfo.bounds.y1); + if (numedges > MAXEDGES) { + pEdges = malloc((2 + 2 * numedges) * sizeof (*pEdges)); + if (pEdges == NULL) { + SurfaceData_InvokeUnlock(env, dstOps, &dstInfo); + SurfaceData_InvokeUnlock(env, srcOps, &srcInfo); + /* edgeArray should already contain zeros for min/maxy */ + return; + } + } else { + pEdges = edgebuf; + } + Transform_GetInfo(env, itxform, &itxInfo); - dxdxlong = DblToLong(itxInfo.dxdx); - dydxlong = DblToLong(itxInfo.dydx); - dxdylong = DblToLong(itxInfo.dxdy); - dydylong = DblToLong(itxInfo.dydy); - x = dxoff+dstInfo.bounds.x1+0.5; /* Center of pixel x1 */ - y = dyoff+dstInfo.bounds.y1+0.5; /* Center of pixel y1 */ - Transform_transform(&itxInfo, &x, &y); - xbase = DblToLong(x); - ybase = DblToLong(y); - - pEdges = calculateEdges(edgebuf, &dstInfo.bounds, &itxInfo, - xbase, ybase, sx2-sx1, sy2-sy1); if (!Region_IsEmpty(&clipInfo)) { srcOps->GetRasInfo(env, srcOps, &srcInfo); dstOps->GetRasInfo(env, dstOps, &dstInfo); - if (srcInfo.rasBase && dstInfo.rasBase) { - union { - jlong align; - jint data[LINE_SIZE]; - } rgb; + if (srcInfo.rasBase == NULL || dstInfo.rasBase == NULL) { + pEdges[0] = pEdges[1] = 0; + } else if (checkOverflow(dxoff, dyoff, &dstInfo.bounds, + &itxInfo, &xorig, &yorig)) + { + Transform_SafeHelper(env, srcOps, dstOps, + &srcInfo, &dstInfo, + pMaskBlitPrim, &compInfo, + pHelperFunc, pInterpFunc, + &clipInfo, &itxInfo, rgb.data, pEdges, + dxoff, dyoff, sx2-sx1, sy2-sy1); + } else { SurfaceDataBounds span; + jlong dxdxlong, dydxlong; + jlong dxdylong, dydylong; + jlong xbase, ybase; + + dxdxlong = DblToLong(itxInfo.dxdx); + dydxlong = DblToLong(itxInfo.dydx); + dxdylong = DblToLong(itxInfo.dxdy); + dydylong = DblToLong(itxInfo.dydy); + xbase = DblToLong(xorig); + ybase = DblToLong(yorig); + + calculateEdges(pEdges, &dstInfo.bounds, &itxInfo, + xbase, ybase, sx2-sx1, sy2-sy1); Region_StartIteration(env, &clipInfo); while (Region_NextIteration(&clipInfo, &span)) { @@ -318,8 +439,8 @@ Java_sun_java2d_loops_TransformHelper_Transform /* Note - process at most one scanline at a time. */ - dx1 = pEdges[(dy1 - dstInfo.bounds.y1) * 2]; - dx2 = pEdges[(dy1 - dstInfo.bounds.y1) * 2 + 1]; + dx1 = pEdges[(dy1 - dstInfo.bounds.y1) * 2 + 2]; + dx2 = pEdges[(dy1 - dstInfo.bounds.y1) * 2 + 3]; if (dx1 < span.x1) dx1 = span.x1; if (dx2 > span.x2) dx2 = span.x2; @@ -376,21 +497,124 @@ Java_sun_java2d_loops_TransformHelper_Transform } SurfaceData_InvokeRelease(env, dstOps, &dstInfo); SurfaceData_InvokeRelease(env, srcOps, &srcInfo); + } else { + pEdges[0] = pEdges[1] = 0; } SurfaceData_InvokeUnlock(env, dstOps, &dstInfo); SurfaceData_InvokeUnlock(env, srcOps, &srcInfo); if (!JNU_IsNull(env, edgeArray)) { - (*env)->SetIntArrayRegion(env, edgeArray, 0, 1, &dstInfo.bounds.y1); - (*env)->SetIntArrayRegion(env, edgeArray, 1, 1, &dstInfo.bounds.y2); - (*env)->SetIntArrayRegion(env, edgeArray, - 2, (dstInfo.bounds.y2 - dstInfo.bounds.y1)*2, - pEdges); + (*env)->SetIntArrayRegion(env, edgeArray, 0, 2+numedges*2, pEdges); } if (pEdges != edgebuf) { free(pEdges); } } +static void +Transform_SafeHelper(JNIEnv *env, + SurfaceDataOps *srcOps, + SurfaceDataOps *dstOps, + SurfaceDataRasInfo *pSrcInfo, + SurfaceDataRasInfo *pDstInfo, + NativePrimitive *pMaskBlitPrim, + CompositeInfo *pCompInfo, + TransformHelperFunc *pHelperFunc, + TransformInterpFunc *pInterpFunc, + RegionData *pClipInfo, TransformInfo *pItxInfo, + jint *pData, jint *pEdges, + jint dxoff, jint dyoff, jint sw, jint sh) +{ + SurfaceDataBounds span; + jint dx1, dx2; + jint dy1, dy2; + jint i, iy; + + dy1 = pDstInfo->bounds.y1; + dy2 = pDstInfo->bounds.y2; + dx1 = pDstInfo->bounds.x1; + dx2 = pDstInfo->bounds.x2; + pEdges[0] = dy1; + pEdges[1] = dy2; + for (iy = dy1; iy < dy2; iy++) { + jint i = (iy - dy1) * 2; + /* row spans are set to max,min until we find a pixel in range below */ + pEdges[i + 2] = dx2; + pEdges[i + 3] = dx1; + } + + Region_StartIteration(env, pClipInfo); + while (Region_NextIteration(pClipInfo, &span)) { + dy1 = span.y1; + dy2 = span.y2; + while (dy1 < dy2) { + dx1 = span.x1; + dx2 = span.x2; + i = (dy1 - pDstInfo->bounds.y1) * 2; + while (dx1 < dx2) { + jdouble x, y; + jlong xlong, ylong; + + x = dxoff + dx1 + 0.5; + y = dyoff + dy1 + 0.5; + Transform_transform(pItxInfo, &x, &y); + xlong = DblToLong(x); + ylong = DblToLong(y); + + /* Process only pixels with centers in bounds + * Test double values to avoid overflow in conversion + * to long values and then also test the long values + * in case they rounded up and out of bounds during + * the conversion. + */ + if (x >= 0 && y >= 0 && x < sw && y < sh && + WholeOfLong(xlong) < sw && + WholeOfLong(ylong) < sh) + { + void *pDst; + + if (pEdges[i + 2] > dx1) { + pEdges[i + 2] = dx1; + } + if (pEdges[i + 3] <= dx1) { + pEdges[i + 3] = dx1 + 1; + } + + /* Get IntArgbPre pixel data from source */ + (*pHelperFunc)(pSrcInfo, + pData, 1, + xlong, 0, + ylong, 0); + + /* Interpolate result pixels if needed */ + if (pInterpFunc) { + (*pInterpFunc)(pData, 1, + FractOfLong(xlong-LongOneHalf), 0, + FractOfLong(ylong-LongOneHalf), 0); + } + + /* Store/Composite interpolated pixels into dest */ + pDst = PtrCoord(pDstInfo->rasBase, + dx1, pDstInfo->pixelStride, + dy1, pDstInfo->scanStride); + (*pMaskBlitPrim->funcs.maskblit)(pDst, pData, + 0, 0, 0, + 1, 1, + pDstInfo, pSrcInfo, + pMaskBlitPrim, + pCompInfo); + } + + /* Increment to next input pixel */ + dx1++; + } + + /* Increment to next scanline */ + dy1++; + } + } + Region_EndIteration(env, pClipInfo); +} + #define BL_INTERP_V1_to_V2_by_F(v1, v2, f) \ (((v1)<<8) + ((v2)-(v1))*(f)) diff --git a/src/share/native/sun/security/ec/impl/ec.c b/src/share/native/sun/security/ec/impl/ec.c index de35722904660b4d10caa5de84213c673ded54fa..2f665a9e0dd5b5e4fab361846e18861717dfb6b1 100644 --- a/src/share/native/sun/security/ec/impl/ec.c +++ b/src/share/native/sun/security/ec/impl/ec.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Elliptic Curve Cryptography library. * @@ -37,23 +34,7 @@ * Dr Vipul Gupta and * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "mplogic.h" #include "ec.h" diff --git a/src/share/native/sun/security/ec/impl/ec.h b/src/share/native/sun/security/ec/impl/ec.h index 96d25f2a47a997394e3db658944b4c3735a9803d..8f42783ff80ab282642e8e9483f91416f6dcd4be 100644 --- a/src/share/native/sun/security/ec/impl/ec.h +++ b/src/share/native/sun/security/ec/impl/ec.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Elliptic Curve Cryptography library. * @@ -36,23 +33,7 @@ * Contributor(s): * Dr Vipul Gupta , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef __ec_h_ #define __ec_h_ diff --git a/src/share/native/sun/security/ec/impl/ec2.h b/src/share/native/sun/security/ec/impl/ec2.h index b0ad53e9ee11eca509b1ef8da76a7fe3bf3d090d..aa5f2bba441d6fb5c7367bc06f2500bf1997fef5 100644 --- a/src/share/native/sun/security/ec/impl/ec2.h +++ b/src/share/native/sun/security/ec/impl/ec2.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for binary polynomial field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _EC2_H #define _EC2_H diff --git a/src/share/native/sun/security/ec/impl/ec2_163.c b/src/share/native/sun/security/ec/impl/ec2_163.c index 45023bfb92b81026ba5f2f0e6b1dc93fbadccf9d..d35d11d008dd87739120b32bf94f93e34bf4de9a 100644 --- a/src/share/native/sun/security/ec/impl/ec2_163.c +++ b/src/share/native/sun/security/ec/impl/ec2_163.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for binary polynomial field curves. * @@ -38,23 +35,7 @@ * Stephen Fung , and * Douglas Stebila , Sun Microsystems Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ec2.h" #include "mp_gf2m.h" diff --git a/src/share/native/sun/security/ec/impl/ec2_193.c b/src/share/native/sun/security/ec/impl/ec2_193.c index 7bb7a947ac977436fedf81b3e49e67c33155bce5..bbff2e50f80d515ccc87de8ba9b577e97a7fa67d 100644 --- a/src/share/native/sun/security/ec/impl/ec2_193.c +++ b/src/share/native/sun/security/ec/impl/ec2_193.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for binary polynomial field curves. * @@ -38,23 +35,7 @@ * Stephen Fung , and * Douglas Stebila , Sun Microsystems Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ec2.h" #include "mp_gf2m.h" diff --git a/src/share/native/sun/security/ec/impl/ec2_233.c b/src/share/native/sun/security/ec/impl/ec2_233.c index d8fa9b36ed89388cf349c23ee0adfa65384e23ab..6ba2706ceda76c277cc4a3989344c7b99a7464b3 100644 --- a/src/share/native/sun/security/ec/impl/ec2_233.c +++ b/src/share/native/sun/security/ec/impl/ec2_233.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for binary polynomial field curves. * @@ -38,23 +35,7 @@ * Stephen Fung , and * Douglas Stebila , Sun Microsystems Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ec2.h" #include "mp_gf2m.h" diff --git a/src/share/native/sun/security/ec/impl/ec2_aff.c b/src/share/native/sun/security/ec/impl/ec2_aff.c index aff4da37d63551ed7af9b6851cd0801878f50568..5a546c0544e4eb54d366450b023f383ff8175546 100644 --- a/src/share/native/sun/security/ec/impl/ec2_aff.c +++ b/src/share/native/sun/security/ec/impl/ec2_aff.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for binary polynomial field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ec2.h" #include "mplogic.h" diff --git a/src/share/native/sun/security/ec/impl/ec2_mont.c b/src/share/native/sun/security/ec/impl/ec2_mont.c index d000a1ab6dfff3d09cfb013f38d0352ad27f5e40..b91e65ea083b96dd4c86e1e0a6002e3049c2af3e 100644 --- a/src/share/native/sun/security/ec/impl/ec2_mont.c +++ b/src/share/native/sun/security/ec/impl/ec2_mont.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for binary polynomial field curves. * @@ -38,23 +35,7 @@ * Stephen Fung , and * Douglas Stebila , Sun Microsystems Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ec2.h" #include "mplogic.h" diff --git a/src/share/native/sun/security/ec/impl/ec_naf.c b/src/share/native/sun/security/ec/impl/ec_naf.c index c9e4aa4abb957da5e70231b480aecfcd1a08802f..bb26a0264285459b908a615ebad526bf249b4304 100644 --- a/src/share/native/sun/security/ec/impl/ec_naf.c +++ b/src/share/native/sun/security/ec/impl/ec_naf.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Stephen Fung , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecl-priv.h" diff --git a/src/share/native/sun/security/ec/impl/ecc_impl.h b/src/share/native/sun/security/ec/impl/ecc_impl.h index 9e5b0f951c9f9e78f1844abaef0f8d356b38bac9..9fb88753529dfb36db3403641fcb9aceb53f9741 100644 --- a/src/share/native/sun/security/ec/impl/ecc_impl.h +++ b/src/share/native/sun/security/ec/impl/ecc_impl.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Netscape security libraries. * @@ -37,23 +34,7 @@ * Dr Vipul Gupta and * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _ECC_IMPL_H #define _ECC_IMPL_H diff --git a/src/share/native/sun/security/ec/impl/ecdecode.c b/src/share/native/sun/security/ec/impl/ecdecode.c index 639035c46526154f7c2167295e393f2f08132ad7..cd72a0270e7f5515de6484fb11ba46d32598ba37 100644 --- a/src/share/native/sun/security/ec/impl/ecdecode.c +++ b/src/share/native/sun/security/ec/impl/ecdecode.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Elliptic Curve Cryptography library. * @@ -37,23 +34,7 @@ * Dr Vipul Gupta and * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include diff --git a/src/share/native/sun/security/ec/impl/ecl-curve.h b/src/share/native/sun/security/ec/impl/ecl-curve.h index 7f8ad1a7f9bf8b8b6bbb648d1c3d2e0f5b6f3519..5ee89d676b148937e807c4e9661ea7290f080cef 100644 --- a/src/share/native/sun/security/ec/impl/ecl-curve.h +++ b/src/share/native/sun/security/ec/impl/ecl-curve.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _ECL_CURVE_H #define _ECL_CURVE_H diff --git a/src/share/native/sun/security/ec/impl/ecl-exp.h b/src/share/native/sun/security/ec/impl/ecl-exp.h index 434df45af67599dbdea0aefd0d32fc97520be4ec..a552b0c3f667ce4dc71b97ef42c008498134c95e 100644 --- a/src/share/native/sun/security/ec/impl/ecl-exp.h +++ b/src/share/native/sun/security/ec/impl/ecl-exp.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _ECL_EXP_H #define _ECL_EXP_H diff --git a/src/share/native/sun/security/ec/impl/ecl-priv.h b/src/share/native/sun/security/ec/impl/ecl-priv.h index c99b3e21bb7829b01cb884d996d4a1d0c694b32b..fa232ddfeccb4a722cf02d52be0a7ba999410c83 100644 --- a/src/share/native/sun/security/ec/impl/ecl-priv.h +++ b/src/share/native/sun/security/ec/impl/ecl-priv.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -37,23 +34,7 @@ * Stephen Fung and * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _ECL_PRIV_H #define _ECL_PRIV_H diff --git a/src/share/native/sun/security/ec/impl/ecl.c b/src/share/native/sun/security/ec/impl/ecl.c index a379d28e0d918bf1e3d43b0f7b1419a5172f3a33..49f407a28b417c3e90247176d38fdcf4b070333b 100644 --- a/src/share/native/sun/security/ec/impl/ecl.c +++ b/src/share/native/sun/security/ec/impl/ecl.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "mpi.h" #include "mplogic.h" diff --git a/src/share/native/sun/security/ec/impl/ecl.h b/src/share/native/sun/security/ec/impl/ecl.h index 80c3265985808abf8d0766a34c06f231b64c50d0..3a83a9e1f3b84d49725706542ae6f9f8020f1a3f 100644 --- a/src/share/native/sun/security/ec/impl/ecl.h +++ b/src/share/native/sun/security/ec/impl/ecl.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _ECL_H #define _ECL_H diff --git a/src/share/native/sun/security/ec/impl/ecl_curve.c b/src/share/native/sun/security/ec/impl/ecl_curve.c index c315625f771f4897ec3b4cb3f13cda4f2c7bfbd8..fe883242988ff2bedea1733bc2830892db7b3837 100644 --- a/src/share/native/sun/security/ec/impl/ecl_curve.c +++ b/src/share/native/sun/security/ec/impl/ecl_curve.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecl.h" #include "ecl-curve.h" diff --git a/src/share/native/sun/security/ec/impl/ecl_gf.c b/src/share/native/sun/security/ec/impl/ecl_gf.c index bd4c10c7218b342d40750a75e54397542bbbe91c..e8a49fd5299c7eb3e8b766c9c51f0cc14b039c6e 100644 --- a/src/share/native/sun/security/ec/impl/ecl_gf.c +++ b/src/share/native/sun/security/ec/impl/ecl_gf.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -37,23 +34,7 @@ * Stephen Fung and * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "mpi.h" #include "mp_gf2m.h" diff --git a/src/share/native/sun/security/ec/impl/ecl_mult.c b/src/share/native/sun/security/ec/impl/ecl_mult.c index 55ad75f293beba9e8f42786113e902f6524b80ad..176be78e07977bedef6f5fe1cda9ca1e2ca02d33 100644 --- a/src/share/native/sun/security/ec/impl/ecl_mult.c +++ b/src/share/native/sun/security/ec/impl/ecl_mult.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "mpi.h" #include "mplogic.h" diff --git a/src/share/native/sun/security/ec/impl/ecp.h b/src/share/native/sun/security/ec/impl/ecp.h index 989c4359b2c3699cf34bbe927a315c67f166ffe3..c2aad8e83c5733b279cd0ff41143fdc707f9b3b9 100644 --- a/src/share/native/sun/security/ec/impl/ecp.h +++ b/src/share/native/sun/security/ec/impl/ecp.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _ECP_H #define _ECP_H diff --git a/src/share/native/sun/security/ec/impl/ecp_192.c b/src/share/native/sun/security/ec/impl/ecp_192.c index c58474dd60b1002c03cafaa84f8a06d2018b68e4..69b0d8571c0f047b32903038288a212fb86f93ae 100644 --- a/src/share/native/sun/security/ec/impl/ecp_192.c +++ b/src/share/native/sun/security/ec/impl/ecp_192.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "mpi.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_224.c b/src/share/native/sun/security/ec/impl/ecp_224.c index 573a9f43b593157d315a139b4278b384b3950058..b2901e062667fd120186574ee0ce18f59745b58f 100644 --- a/src/share/native/sun/security/ec/impl/ecp_224.c +++ b/src/share/native/sun/security/ec/impl/ecp_224.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "mpi.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_256.c b/src/share/native/sun/security/ec/impl/ecp_256.c index 2ce46e5b93516e2dc3bc811909437258221aa72b..a5a5fa37e5872e35431ef9a6edde707cce11dedc 100644 --- a/src/share/native/sun/security/ec/impl/ecp_256.c +++ b/src/share/native/sun/security/ec/impl/ecp_256.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "mpi.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_384.c b/src/share/native/sun/security/ec/impl/ecp_384.c index 74f8e342c00be9870d5d770b117341d15c1b53ad..e40a8f100176076d11243e229c44b6b5691848ea 100644 --- a/src/share/native/sun/security/ec/impl/ecp_384.c +++ b/src/share/native/sun/security/ec/impl/ecp_384.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "mpi.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_521.c b/src/share/native/sun/security/ec/impl/ecp_521.c index 62c0bc41d58a64bb0b83c7c408251cc65dde08bd..11172dda7a9c64f330bb76cbae84dd71d573dfac 100644 --- a/src/share/native/sun/security/ec/impl/ecp_521.c +++ b/src/share/native/sun/security/ec/impl/ecp_521.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "mpi.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_aff.c b/src/share/native/sun/security/ec/impl/ecp_aff.c index 4f9b0d1daeb9fe95b8285c957495f0a01f20264a..f150ca16f145403bc6654da16943a06739800b3d 100644 --- a/src/share/native/sun/security/ec/impl/ecp_aff.c +++ b/src/share/native/sun/security/ec/impl/ecp_aff.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -41,23 +38,7 @@ * Nils Larsch , and * Lenka Fibikova , the OpenSSL Project * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "mplogic.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_jac.c b/src/share/native/sun/security/ec/impl/ecp_jac.c index 779b82f75cbeb4a90aa2d9be3b4f37602ec1de8b..12410bea625639f3b40a9bb7ac799237ba2b667f 100644 --- a/src/share/native/sun/security/ec/impl/ecp_jac.c +++ b/src/share/native/sun/security/ec/impl/ecp_jac.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -41,23 +38,7 @@ * Nils Larsch , and * Lenka Fibikova , the OpenSSL Project * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "mplogic.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_jm.c b/src/share/native/sun/security/ec/impl/ecp_jm.c index 2f1c42aa001b1fd81ba7ba26827a21caee23b299..cdee87a59d9235ef360797288dd7e582f538de90 100644 --- a/src/share/native/sun/security/ec/impl/ecp_jm.c +++ b/src/share/native/sun/security/ec/impl/ecp_jm.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library for prime field curves. * @@ -36,23 +33,7 @@ * Contributor(s): * Stephen Fung , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "ecp.h" #include "ecl-priv.h" diff --git a/src/share/native/sun/security/ec/impl/ecp_mont.c b/src/share/native/sun/security/ec/impl/ecp_mont.c index 9a9ce1e4cb23c662d3a24ae862009195695513fe..6b5d6a62deff232948762751f5216659711a3997 100644 --- a/src/share/native/sun/security/ec/impl/ecp_mont.c +++ b/src/share/native/sun/security/ec/impl/ecp_mont.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the elliptic curve math library. * @@ -36,23 +33,7 @@ * Contributor(s): * Douglas Stebila , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ /* Uses Montgomery reduction for field arithmetic. See mpi/mpmontg.c for * code implementation. */ diff --git a/src/share/native/sun/security/ec/impl/logtab.h b/src/share/native/sun/security/ec/impl/logtab.h index a6314ff76e12ee183e0d22e8dfb179283cae12c3..9f709ccb7e211bd852e8e337870c9edb398df055 100644 --- a/src/share/native/sun/security/ec/impl/logtab.h +++ b/src/share/native/sun/security/ec/impl/logtab.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Netscape security libraries. * @@ -36,23 +33,7 @@ * Contributor(s): * Dr Vipul Gupta , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _LOGTAB_H #define _LOGTAB_H diff --git a/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h b/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h index d4f81cee0458195dd3044e315f40053f6facf9cf..caa56e45f9a43a15b6547afe907dff647a4e4f1c 100644 --- a/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h +++ b/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Multi-precision Binary Polynomial Arithmetic Library. * @@ -37,23 +34,7 @@ * Sheueling Chang Shantz and * Douglas Stebila of Sun Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _MP_GF2M_PRIV_H_ #define _MP_GF2M_PRIV_H_ diff --git a/src/share/native/sun/security/ec/impl/mp_gf2m.c b/src/share/native/sun/security/ec/impl/mp_gf2m.c index 06e557af12721980244892d2b48fc22f861ef1e9..31911c04d9c5c6823161553b6ba4f12de2d10d39 100644 --- a/src/share/native/sun/security/ec/impl/mp_gf2m.c +++ b/src/share/native/sun/security/ec/impl/mp_gf2m.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Multi-precision Binary Polynomial Arithmetic Library. * @@ -37,23 +34,7 @@ * Sheueling Chang Shantz and * Douglas Stebila of Sun Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include "mp_gf2m.h" #include "mp_gf2m-priv.h" diff --git a/src/share/native/sun/security/ec/impl/mp_gf2m.h b/src/share/native/sun/security/ec/impl/mp_gf2m.h index 90c3bffdf0bddfde5769d831d463302e68b782d2..c95d30ffc744669ec264350c625808cf5f8c132d 100644 --- a/src/share/native/sun/security/ec/impl/mp_gf2m.h +++ b/src/share/native/sun/security/ec/impl/mp_gf2m.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Multi-precision Binary Polynomial Arithmetic Library. * @@ -37,23 +34,7 @@ * Sheueling Chang Shantz and * Douglas Stebila of Sun Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _MP_GF2M_H_ #define _MP_GF2M_H_ diff --git a/src/share/native/sun/security/ec/impl/mpi-config.h b/src/share/native/sun/security/ec/impl/mpi-config.h index 1e4216c3baa1e805302130edc07e8226cc893179..a349f96ad8854483287a0a4e9999e5c50762c0b6 100644 --- a/src/share/native/sun/security/ec/impl/mpi-config.h +++ b/src/share/native/sun/security/ec/impl/mpi-config.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the MPI Arbitrary Precision Integer Arithmetic library. * @@ -36,23 +33,7 @@ * Contributor(s): * Netscape Communications Corporation * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _MPI_CONFIG_H #define _MPI_CONFIG_H diff --git a/src/share/native/sun/security/ec/impl/mpi-priv.h b/src/share/native/sun/security/ec/impl/mpi-priv.h index 2cec62c254a4c3bba5257803cc05c698c4bc40c5..76bac90693d5f3e09b4e8ff98afbf806c8cb25e5 100644 --- a/src/share/native/sun/security/ec/impl/mpi-priv.h +++ b/src/share/native/sun/security/ec/impl/mpi-priv.h @@ -1,36 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Arbitrary precision integer arithmetic library + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * NOTE WELL: the content of this header file is NOT part of the "public" - * API for the MPI library, and may change at any time. - * Application programs that use libmpi should NOT include this header file. - * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the MPI Arbitrary Precision Integer Arithmetic library. * @@ -42,22 +33,13 @@ * Contributor(s): * Netscape Communications Corporation * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. + +/* Arbitrary precision integer arithmetic library + * + * NOTE WELL: the content of this header file is NOT part of the "public" + * API for the MPI library, and may change at any time. + * Application programs that use libmpi should NOT include this header file. */ #ifndef _MPI_PRIV_H diff --git a/src/share/native/sun/security/ec/impl/mpi.c b/src/share/native/sun/security/ec/impl/mpi.c index c33bc19160ae91733ebd65390da95eefccd08581..3149fa217b35f3e1f32e1975669af6e8661e7ea4 100644 --- a/src/share/native/sun/security/ec/impl/mpi.c +++ b/src/share/native/sun/security/ec/impl/mpi.c @@ -1,33 +1,27 @@ -/* ********************************************************************* - * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: - * +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Arbitrary precision integer arithmetic library + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the MPI Arbitrary Precision Integer Arithmetic library. * @@ -40,25 +34,9 @@ * Netscape Communications Corporation * Douglas Stebila of Sun Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ -/* $Id: mpi.c,v 1.45 2006/09/29 20:12:21 alexei.volkov.bugs%sun.com Exp $ */ +/* Arbitrary precision integer arithmetic library */ #include "mpi-priv.h" #if defined(OSF1) diff --git a/src/share/native/sun/security/ec/impl/mpi.h b/src/share/native/sun/security/ec/impl/mpi.h index 87ba085619228b50c8b5be06209c0ab3a8c202fb..4a8eb2c5c03204ca32861865ab665ebf1e307313 100644 --- a/src/share/native/sun/security/ec/impl/mpi.h +++ b/src/share/native/sun/security/ec/impl/mpi.h @@ -1,33 +1,27 @@ -/* ********************************************************************* - * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: - * +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Arbitrary precision integer arithmetic library + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the MPI Arbitrary Precision Integer Arithmetic library. * @@ -39,23 +33,9 @@ * Contributor(s): * Netscape Communications Corporation * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ + +/* Arbitrary precision integer arithmetic library */ #ifndef _MPI_H #define _MPI_H diff --git a/src/share/native/sun/security/ec/impl/mplogic.c b/src/share/native/sun/security/ec/impl/mplogic.c index 30b5b42c27de9f40ca028ab698f3d948660f9de3..ba4408633c32c6fd7550a7b4179d20f7f8a1fdfc 100644 --- a/src/share/native/sun/security/ec/impl/mplogic.c +++ b/src/share/native/sun/security/ec/impl/mplogic.c @@ -1,33 +1,27 @@ -/* ********************************************************************* - * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: - * +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Bitwise logical operations on MPI values + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the MPI Arbitrary Precision Integer Arithmetic library. * @@ -38,25 +32,9 @@ * * Contributor(s): * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ -/* $Id: mplogic.c,v 1.15 2004/04/27 23:04:36 gerv%gerv.net Exp $ */ +/* Bitwise logical operations on MPI values */ #include "mpi-priv.h" #include "mplogic.h" diff --git a/src/share/native/sun/security/ec/impl/mplogic.h b/src/share/native/sun/security/ec/impl/mplogic.h index abc94c0c1a9d7bc0a4c1943c9897125e6e1249b2..fda4f32d6498af03fdc72f3237bc65169838764d 100644 --- a/src/share/native/sun/security/ec/impl/mplogic.h +++ b/src/share/native/sun/security/ec/impl/mplogic.h @@ -1,33 +1,27 @@ -/* ********************************************************************* - * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: - * +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Bitwise logical operations on MPI values + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the MPI Arbitrary Precision Integer Arithmetic library. * @@ -38,23 +32,9 @@ * * Contributor(s): * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ + +/* Bitwise logical operations on MPI values */ #ifndef _MPLOGIC_H #define _MPLOGIC_H diff --git a/src/share/native/sun/security/ec/impl/mpmontg.c b/src/share/native/sun/security/ec/impl/mpmontg.c index 04dfe9b62d7e5edbfbe8f1ffbfc165c633487e64..4c848a39276d07cd63aaa5a7fe06af41e6da1374 100644 --- a/src/share/native/sun/security/ec/impl/mpmontg.c +++ b/src/share/native/sun/security/ec/impl/mpmontg.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Netscape security libraries. * @@ -38,25 +35,7 @@ * Stephen Fung , and * Douglas Stebila of Sun Laboratories. * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ - -/* $Id: mpmontg.c,v 1.20 2006/08/29 02:41:38 nelson%bolyard.com Exp $ */ /* This file implements moduluar exponentiation using Montgomery's * method for modular reduction. This file implements the method diff --git a/src/share/native/sun/security/ec/impl/mpprime.h b/src/share/native/sun/security/ec/impl/mpprime.h index a741d418d63b50e7e0400946f1ad2739b980cd79..d4cea9486180cab1a2a88ed34df59eef82d309b6 100644 --- a/src/share/native/sun/security/ec/impl/mpprime.h +++ b/src/share/native/sun/security/ec/impl/mpprime.h @@ -1,34 +1,27 @@ -/* ********************************************************************* - * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: - * +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Utilities for finding and working with prime and pseudo-prime - * integers + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the MPI Arbitrary Precision Integer Arithmetic library. * @@ -39,23 +32,9 @@ * * Contributor(s): * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ + +/* Utilities for finding and working with prime and pseudo-prime integers */ #ifndef _MP_PRIME_H #define _MP_PRIME_H diff --git a/src/share/native/sun/security/ec/impl/oid.c b/src/share/native/sun/security/ec/impl/oid.c index 252491b33313026b9538b5637f0940e238e5a7a7..86820258ec2739293054376dd831066e599abed4 100644 --- a/src/share/native/sun/security/ec/impl/oid.c +++ b/src/share/native/sun/security/ec/impl/oid.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Netscape security libraries. * @@ -36,23 +33,7 @@ * Contributor(s): * Dr Vipul Gupta , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #include diff --git a/src/share/native/sun/security/ec/impl/secitem.c b/src/share/native/sun/security/ec/impl/secitem.c index 3db3027afa28c1905edba2b48dbe9094cea69798..f296ce4231012a059406e2e20cf0119d02606f42 100644 --- a/src/share/native/sun/security/ec/impl/secitem.c +++ b/src/share/native/sun/security/ec/impl/secitem.c @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Netscape security libraries. * @@ -35,23 +32,7 @@ * * Contributor(s): * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ /* * Support routines for SECItem data structure. diff --git a/src/share/native/sun/security/ec/impl/secoidt.h b/src/share/native/sun/security/ec/impl/secoidt.h index 5ad9a67415afebef805a7b3e8c7b6d21f7caeacf..58dde3bbe3c610e836e8dfe4fba6b343228b9f3a 100644 --- a/src/share/native/sun/security/ec/impl/secoidt.h +++ b/src/share/native/sun/security/ec/impl/secoidt.h @@ -1,30 +1,27 @@ -/* ********************************************************************* +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * Sun elects to have this file available under and governed by the - * Mozilla Public License Version 1.1 ("MPL") (see - * http://www.mozilla.org/MPL/ for full license text). For the avoidance - * of doubt and subject to the following, Sun also elects to allow - * licensees to use this file under the MPL, the GNU General Public - * License version 2 only or the Lesser General Public License version - * 2.1 only. Any references to the "GNU General Public License version 2 - * or later" or "GPL" in the following shall be construed to mean the - * GNU General Public License version 2 only. Any references to the "GNU - * Lesser General Public License version 2.1 or later" or "LGPL" in the - * following shall be construed to mean the GNU Lesser General Public - * License version 2.1 only. However, the following notice accompanied - * the original version of this file: + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* ********************************************************************* * * The Original Code is the Netscape security libraries. * @@ -36,23 +33,7 @@ * Contributor(s): * Dr Vipul Gupta , Sun Microsystems Laboratories * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * *********************************************************************** */ -/* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. - * Use is subject to license terms. - */ #ifndef _SECOIDT_H_ #define _SECOIDT_H_ diff --git a/src/share/native/sun/security/pkcs11/j2secmod.c b/src/share/native/sun/security/pkcs11/j2secmod.c index 485df26595d57cfd0b562008264fe09cb44cb084..79ad8709e125b166879e1cba5c179d3a583976b2 100644 --- a/src/share/native/sun/security/pkcs11/j2secmod.c +++ b/src/share/native/sun/security/pkcs11/j2secmod.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, 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 @@ -74,7 +74,7 @@ JNIEXPORT jboolean JNICALL Java_sun_security_pkcs11_Secmod_nssInit } JNIEXPORT jobject JNICALL Java_sun_security_pkcs11_Secmod_nssGetModuleList - (JNIEnv *env, jclass thisClass, jlong jHandle) + (JNIEnv *env, jclass thisClass, jlong jHandle, jstring jLibDir) { FPTR_GetDBModuleList getModuleList = (FPTR_GetDBModuleList)findFunction(env, jHandle, "SECMOD_GetDefaultModuleList"); @@ -104,8 +104,8 @@ JNIEXPORT jobject JNICALL Java_sun_security_pkcs11_Secmod_nssGetModuleList jList = (*env)->NewObject(env, jListClass, jListConstructor); jModuleClass = (*env)->FindClass(env, "sun/security/pkcs11/Secmod$Module"); - jModuleConstructor = (*env)->GetMethodID - (env, jModuleClass, "", "(Ljava/lang/String;Ljava/lang/String;ZI)V"); + jModuleConstructor = (*env)->GetMethodID(env, jModuleClass, "", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)V"); while (list != NULL) { module = list->module; @@ -124,7 +124,8 @@ JNIEXPORT jobject JNICALL Java_sun_security_pkcs11_Secmod_nssGetModuleList } jFIPS = module->isFIPS; for (i = 0; i < module->slotCount; i++ ) { - jModule = (*env)->NewObject(env, jModuleClass, jModuleConstructor, jDllName, jCommonName, jFIPS, i); + jModule = (*env)->NewObject(env, jModuleClass, jModuleConstructor, + jLibDir, jDllName, jCommonName, jFIPS, i); (*env)->CallVoidMethod(env, jList, jAdd, jModule); } list = list->next; diff --git a/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java b/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java index 02be75b6ca5627b2952efe417e7e6ede6de6f651..41f5398a788cf3972d79f1d87c2aec1a98955751 100644 --- a/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java +++ b/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java @@ -29,8 +29,6 @@ import java.awt.FileDialog; import java.awt.peer.FileDialogPeer; import java.io.File; import java.io.FilenameFilter; -import javax.swing.SwingUtilities; -import javax.swing.SwingWorker; import sun.awt.AWTAccessor; /** @@ -107,9 +105,7 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer { if (b) { Thread t = new Thread() { public void run() { - GtkFileDialogPeer.this.run(fd.getTitle(), fd.getMode(), - fd.getDirectory(), fd.getFile(), fd.getFilenameFilter(), fd.isMultipleMode(), - fd.getX(), fd.getY()); + showNativeDialog(); fd.setVisible(false); } }; @@ -146,4 +142,30 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer { // We do not implement this method because we // have delegated to FileDialog#setFilenameFilter } + + private void showNativeDialog() { + String dirname = fd.getDirectory(); + // File path has a priority against directory path. + String filename = fd.getFile(); + if (filename != null) { + final File file = new File(filename); + if (fd.getMode() == FileDialog.LOAD + && dirname != null + && file.getParent() == null) { + // File path for gtk_file_chooser_set_filename. + filename = dirname + (dirname.endsWith(File.separator) ? "" : + File.separator) + filename; + } + if (fd.getMode() == FileDialog.SAVE && file.getParent() != null) { + // Filename for gtk_file_chooser_set_current_name. + filename = file.getName(); + // Directory path for gtk_file_chooser_set_current_folder. + dirname = file.getParent(); + } + } + GtkFileDialogPeer.this.run(fd.getTitle(), fd.getMode(), dirname, + filename, fd.getFilenameFilter(), + fd.isMultipleMode(), fd.getX(), fd.getY()); + } + } diff --git a/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java b/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java index 40b32d4258eabcf76a9a5512b84437c48ea122ff..a4aae246afe59646134a78db0f2c8d1ec4985e08 100644 --- a/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java +++ b/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java @@ -121,7 +121,7 @@ public class X11GraphicsEnvironment // only attempt to initialize Xrender if it was requested if (xRenderRequested) { - xRenderAvailable = initXRender(); + xRenderAvailable = initXRender(xRenderVerbose); if (xRenderVerbose && !xRenderAvailable) { System.out.println( "Could not enable XRender pipeline"); @@ -159,7 +159,7 @@ public class X11GraphicsEnvironment private static boolean xRenderVerbose; private static boolean xRenderAvailable; - private static native boolean initXRender(); + private static native boolean initXRender(boolean verbose); public static boolean isXRenderAvailable() { return xRenderAvailable; } diff --git a/src/solaris/native/common/jdk_util_md.h b/src/solaris/native/common/jdk_util_md.h new file mode 100644 index 0000000000000000000000000000000000000000..6361fe01eba4faa43c57cd6b55f3562fe51b5468 --- /dev/null +++ b/src/solaris/native/common/jdk_util_md.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2011 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +// Currently, there are no unix specific functions defined. diff --git a/src/solaris/native/sun/java2d/x11/XRBackendNative.c b/src/solaris/native/sun/java2d/x11/XRBackendNative.c index 969f5f589fef283c7825f85f336cfc20993fe9f2..a2b481574ce73067332426ea747b69ffc142667e 100644 --- a/src/solaris/native/sun/java2d/x11/XRBackendNative.c +++ b/src/solaris/native/sun/java2d/x11/XRBackendNative.c @@ -66,9 +66,10 @@ typedef struct _XRadialGradient { } XRadialGradient; #endif +#include + #ifdef __solaris__ /* Solaris 10 will not have these symbols at runtime */ -#include #include typedef Picture (*XRenderCreateLinearGradientFuncType) @@ -104,12 +105,20 @@ static TRANSFORM.matrix[2][2] = 1<<16; \ } +/* The xrender pipleine requires libXrender.so version 0.9.3 or later. */ +#define REQUIRED_XRENDER_VER1 0 +#define REQUIRED_XRENDER_VER2 9 +#define REQUIRED_XRENDER_VER3 3 -static jboolean IsXRenderAvailable() { +#define PKGINFO_LINE_LEN_MAX 256 +#define PKGINFO_LINE_CNT_MAX 50 + +static jboolean IsXRenderAvailable(jboolean verbose) { void *xrenderlib; int major_opcode, first_event, first_error; + jboolean available = JNI_TRUE; if (!XQueryExtension(awt_display, "RENDER", &major_opcode, &first_event, &first_error)) { @@ -120,23 +129,113 @@ static jboolean IsXRenderAvailable() { xrenderlib = dlopen("libXrender.so",RTLD_GLOBAL|RTLD_LAZY); if (xrenderlib != NULL) { - XRenderCreateLinearGradientFunc = - (XRenderCreateLinearGradientFuncType) - dlsym(xrenderlib, "XRenderCreateLinearGradient"); + XRenderCreateLinearGradientFunc = + (XRenderCreateLinearGradientFuncType) + dlsym(xrenderlib, "XRenderCreateLinearGradient"); + + XRenderCreateRadialGradientFunc = + (XRenderCreateRadialGradientFuncType) + dlsym(xrenderlib, "XRenderCreateRadialGradient"); - XRenderCreateRadialGradientFunc = - (XRenderCreateRadialGradientFuncType) - dlsym(xrenderlib, "XRenderCreateRadialGradient"); + if (XRenderCreateLinearGradientFunc == NULL || + XRenderCreateRadialGradientFunc == NULL) + { + available = JNI_FALSE; + } + dlclose(xrenderlib); + } else { + available = JNI_FALSE; + } +#else + Dl_info info; + jboolean versionInfoIsFound = JNI_FALSE; + + memset(&info, 0, sizeof(Dl_info)); + if (dladdr(&XRenderChangePicture, &info) && info.dli_fname != NULL) { + char pkgInfoPath[FILENAME_MAX]; + char *pkgFileName = "/pkgconfig/xrender.pc"; + size_t pkgFileNameLen = strlen(pkgFileName); + size_t pos, len = strlen(info.dli_fname); + + pos = len; + while (pos > 0 && info.dli_fname[pos] != '/') { + pos -= 1; + } - if (XRenderCreateLinearGradientFunc == NULL || - XRenderCreateRadialGradientFunc == NULL) + if (pos > 0 && pos < (FILENAME_MAX - pkgFileNameLen - 1)) { + struct stat stat_info; + + // compose absolute filename to package config + strncpy(pkgInfoPath, info.dli_fname, pos); + + strcpy(pkgInfoPath + pos, pkgFileName); + pkgInfoPath[pos + pkgFileNameLen] = '\0'; + + // check whether the config file exist and is a regular file + if ((stat(pkgInfoPath, &stat_info)== 0) && + S_ISREG(stat_info.st_mode)) { - dlclose(xrenderlib); - return JNI_FALSE; + FILE *fp = fopen(pkgInfoPath, "r"); + if (fp != NULL) { + char line[PKGINFO_LINE_LEN_MAX]; + int lineCount = PKGINFO_LINE_CNT_MAX; + char *versionPrefix = "Version: "; + size_t versionPrefixLen = strlen(versionPrefix); + + // look for version + while(fgets(line,sizeof(line),fp) != NULL && --lineCount > 0) { + size_t lineLen = strlen(line); + + if (lineLen > versionPrefixLen && + strncmp(versionPrefix, line, versionPrefixLen) == 0) + { + int v1 = 0, v2 = 0, v3 = 0; + int numNeeded = 3,numProcessed; + char* version = line + versionPrefixLen; + numProcessed = sscanf(version, "%d.%d.%d", &v1, &v2, &v3); + + if (numProcessed == numNeeded) { + // we successfuly read the library version + versionInfoIsFound = JNI_TRUE; + + if (REQUIRED_XRENDER_VER1 == v1 && + ((REQUIRED_XRENDER_VER2 > v2) || + ((REQUIRED_XRENDER_VER2 == v2) && (REQUIRED_XRENDER_VER3 > v3)))) + { + available = JNI_FALSE; + + if (verbose) { + printf("INFO: the version %d.%d.%d of libXrender.so is " + "not supported.\n\tSee release notes for more details.\n", + v1, v2, v3); + fflush(stdout); + } + } else { + if (verbose) { + printf("INFO: The version of libXrender.so " + "is detected as %d.%d%d\n", v1, v2, v3); + fflush(stdout); + } + } + } + break; + } + } + fclose(fp); + } } + } + } + if (verbose && !versionInfoIsFound) { + printf("WARNING: The version of libXrender.so cannot be detected.\n," + "The pipe line will be enabled, but note that versions less than 0.9.3\n" + "may cause hangs and crashes\n" + "\tSee the release notes for more details.\n"); + fflush(stdout); } #endif - return JNI_TRUE; + + return available; } /* * Class: sun_awt_X11GraphicsEnvironment @@ -145,7 +244,7 @@ static jboolean IsXRenderAvailable() { */ JNIEXPORT jboolean JNICALL Java_sun_awt_X11GraphicsEnvironment_initXRender - (JNIEnv *env, jclass x11ge) +(JNIEnv *env, jclass x11ge, jboolean verbose) { #ifndef HEADLESS static jboolean xrenderAvailable = JNI_FALSE; @@ -153,7 +252,7 @@ Java_sun_awt_X11GraphicsEnvironment_initXRender if (firstTime) { AWT_LOCK(); - xrenderAvailable = IsXRenderAvailable(); + xrenderAvailable = IsXRenderAvailable(verbose); AWT_UNLOCK(); firstTime = JNI_FALSE; } diff --git a/src/windows/classes/sun/security/krb5/internal/tools/Klist.java b/src/windows/classes/sun/security/krb5/internal/tools/Klist.java index 6cbc8a3fa61f5506ab0ede6c9503307742f0c23b..ddfe95cd2ff4131ae072e91c4f54e0871e752269 100644 --- a/src/windows/classes/sun/security/krb5/internal/tools/Klist.java +++ b/src/windows/classes/sun/security/krb5/internal/tools/Klist.java @@ -95,14 +95,17 @@ public class Klist { } break; case 'k': - try { - KeyTab ktab = KeyTab.getInstance(klist.name); - klist.target = ktab; - klist.name = ktab.tabName(); - } catch (Exception e) { - klist.displayMessage("KeyTab"); + KeyTab ktab = KeyTab.getInstance(klist.name); + if (ktab.isMissing()) { + System.out.println("KeyTab " + klist.name + " not found."); + System.exit(-1); + } else if (!ktab.isValid()) { + System.out.println("KeyTab " + klist.name + + " format not supported."); System.exit(-1); } + klist.target = ktab; + klist.name = ktab.tabName(); klist.displayTab(); break; default: diff --git a/src/windows/classes/sun/tools/attach/WindowsAttachProvider.java b/src/windows/classes/sun/tools/attach/WindowsAttachProvider.java index b915ab89534958626134e12348510b8c2b9f895a..cda6a73bc29fb813c4f0244cdb74f75daa8cfbaf 100644 --- a/src/windows/classes/sun/tools/attach/WindowsAttachProvider.java +++ b/src/windows/classes/sun/tools/attach/WindowsAttachProvider.java @@ -126,16 +126,6 @@ public class WindowsAttachProvider extends HotSpotAttachProvider { * of the process list. */ private List listJavaProcesses() { - // ensure that process status helper is loaded (psapi.dll) - if (!isProcessStatusHelperInitialized) { - synchronized (WindowsAttachProvider.class) { - if (!isProcessStatusHelperInitialized) { - initializeProcessStatusHelper(); - isProcessStatusHelperInitialized = true; - } - } - } - ArrayList list = new ArrayList(); @@ -172,12 +162,6 @@ public class WindowsAttachProvider extends HotSpotAttachProvider { return list; } - // indicates if psapi.dll has been initialized - private static volatile boolean isProcessStatusHelperInitialized; - - // loads psapi - private static native void initializeProcessStatusHelper(); - // enumerates processes using psapi's EnumProcesses private static native int enumProcesses(int[] processes, int max); diff --git a/src/windows/native/common/jdk_util_md.c b/src/windows/native/common/jdk_util_md.c index 05c2193df125ddab100742593d6a2ab2efa4ccaa..65d20f55b3b1bd3b8618f8bd3991673983afef44 100644 --- a/src/windows/native/common/jdk_util_md.c +++ b/src/windows/native/common/jdk_util_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2011, 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 @@ -38,3 +38,25 @@ int JDK_InitJvmHandle() { void* JDK_FindJvmEntry(const char* name) { return (void*) GetProcAddress(jvm_handle, name); } + +JNIEXPORT HMODULE JDK_LoadSystemLibrary(const char* name) { + HMODULE handle = NULL; + char path[MAX_PATH]; + int ret; + + if (GetSystemDirectory(path, sizeof(path)) != 0) { + strcat(path, "\\"); + strcat(path, name); + handle = LoadLibrary(path); + } + + if (handle == NULL) { + if (GetWindowsDirectory(path, sizeof(path)) != 0) { + strcat(path, "\\"); + strcat(path, name); + handle = LoadLibrary(path); + } + } + return handle; +} + diff --git a/src/windows/native/common/jdk_util_md.h b/src/windows/native/common/jdk_util_md.h new file mode 100644 index 0000000000000000000000000000000000000000..0bb9149354f9bf9a396a5537837a06ce3b5a8947 --- /dev/null +++ b/src/windows/native/common/jdk_util_md.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2011 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +#ifndef JDK_UTIL_MD_H +#define JDK_UTIL_MD_H + +#include "jni.h" + +#ifdef __cplusplus +extern "C" { +#endif + +JNIEXPORT HMODULE JDK_LoadSystemLibrary(const char* name); + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* JDK_UTIL_MD_H */ diff --git a/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp b/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp index 3f0284cb073f747dd1548d3bcefa49a60fc9a766..750653ceb781169b73f76f6c0603bcc11bc49942 100644 --- a/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp +++ b/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp @@ -117,7 +117,7 @@ HRESULT D3DPipelineManager::InitD3D(void) { typedef IDirect3D9 * WINAPI FnDirect3DCreate9(UINT SDKVersion); - hLibD3D9 = ::LoadLibrary(TEXT("d3d9.dll")); + hLibD3D9 = JDK_LoadSystemLibrary("d3d9.dll"); if (hLibD3D9 == NULL) { J2dRlsTraceLn(J2D_TRACE_ERROR, "InitD3D: no d3d9.dll"); return E_FAIL; diff --git a/src/windows/native/sun/java2d/opengl/OGLFuncs_md.h b/src/windows/native/sun/java2d/opengl/OGLFuncs_md.h index df300e93150db49ce106b94b9a14a0e9c85f7c8b..cfeb81bf9ed59d0bd62ea6627c2383efbe9b16da 100644 --- a/src/windows/native/sun/java2d/opengl/OGLFuncs_md.h +++ b/src/windows/native/sun/java2d/opengl/OGLFuncs_md.h @@ -29,6 +29,7 @@ #include #include "J2D_GL/wglext.h" #include "OGLFuncMacros.h" +#include /** * Core WGL functions @@ -60,7 +61,7 @@ typedef const char *(GLAPIENTRY *wglGetExtensionsStringARBType)(HDC hdc); #define OGL_LIB_IS_UNINITIALIZED() \ (OGL_LIB_HANDLE == 0) #define OGL_OPEN_LIB() \ - OGL_LIB_HANDLE = LoadLibrary(L"opengl32.dll") + OGL_LIB_HANDLE = JDK_LoadSystemLibrary("opengl32.dll") #define OGL_CLOSE_LIB() \ FreeLibrary(OGL_LIB_HANDLE) #define OGL_GET_PROC_ADDRESS(f) \ diff --git a/src/windows/native/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.c b/src/windows/native/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.c index 6babafb2041f29a5dcdd7be725b1df61e0cf6f2c..81484da7feef97b69aa7663752768cff47db26a5 100644 --- a/src/windows/native/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.c +++ b/src/windows/native/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.c @@ -44,7 +44,7 @@ #define SO_UPDATE_CONNECT_CONTEXT 0x7010 #endif -typedef BOOL (*ConnectEx_t) +typedef BOOL (PASCAL *ConnectEx_t) ( SOCKET s, const struct sockaddr* name, diff --git a/src/windows/native/sun/tools/attach/WindowsAttachProvider.c b/src/windows/native/sun/tools/attach/WindowsAttachProvider.c index 8ddccd7ce21123d5af098e2b4fed7563e2fb6141..bbd6f400a24e2bf4465570bcd06c7bc833a8d345 100644 --- a/src/windows/native/sun/tools/attach/WindowsAttachProvider.c +++ b/src/windows/native/sun/tools/attach/WindowsAttachProvider.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "jni.h" #include "jni_util.h" @@ -96,41 +97,6 @@ Java_sun_tools_attach_WindowsAttachProvider_volumeFlags(JNIEnv *env, jclass cls, } -/* - * Process status helper library functions - */ -static BOOL (WINAPI *_EnumProcesses) (DWORD *, DWORD, DWORD *); -static BOOL (WINAPI *_EnumProcessModules)(HANDLE, HMODULE *, DWORD, LPDWORD); -static DWORD (WINAPI *_GetModuleBaseName) (HANDLE, HMODULE, LPTSTR, DWORD); - - -/* - * Class: sun_tools_attach_WindowsAttachProvider - * Method: initializeProcessStatusHelper - * Signature: ()V - */ -JNIEXPORT void JNICALL -Java_sun_tools_attach_WindowsAttachProvider_initializeProcessStatusHelper(JNIEnv *env, jclass cls) -{ - HINSTANCE psapi = LoadLibrary("PSAPI.DLL") ; - if (psapi != NULL) { - _EnumProcesses = (BOOL(WINAPI *)(DWORD *, DWORD, DWORD *)) - GetProcAddress(psapi, "EnumProcesses") ; - _EnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) - GetProcAddress(psapi, "EnumProcessModules"); - _GetModuleBaseName = (DWORD(WINAPI *)(HANDLE, HMODULE, LPTSTR, DWORD)) - GetProcAddress(psapi, "GetModuleBaseNameA"); - } - - if ((_EnumProcesses == NULL) || - (_EnumProcessModules == NULL) || - (_GetModuleBaseName == NULL)) - { - JNU_ThrowInternalError(env, "Unable to initialize process status helper library"); - } -} - - /* * Class: sun_tools_attach_WindowsAttachProvider * Method: enumProcesses @@ -147,7 +113,7 @@ Java_sun_tools_attach_WindowsAttachProvider_enumProcesses(JNIEnv *env, jclass cl size = max * sizeof(DWORD); ptr = (DWORD*)malloc(size); if (ptr != NULL) { - BOOL res = (*_EnumProcesses)(ptr, size, &bytesReturned); + BOOL res = EnumProcesses(ptr, size, &bytesReturned); if (res != 0) { result = (jint)(bytesReturned / sizeof(DWORD)); (*env)->SetIntArrayRegion(env, arr, 0, (jsize)result, (jint*)ptr); @@ -192,13 +158,13 @@ Java_sun_tools_attach_WindowsAttachProvider_isLibraryLoadedByProcess(JNIEnv *env size = 1024 * sizeof(HMODULE); ptr = (HMODULE*)malloc(size); if (ptr != NULL) { - BOOL res = (*_EnumProcessModules)(hProcess, ptr, size, &bytesReturned); + BOOL res = EnumProcessModules(hProcess, ptr, size, &bytesReturned); if (res != 0) { int count = bytesReturned / sizeof(HMODULE); int i = 0; while (i < count) { char base[256]; - BOOL res = (*_GetModuleBaseName)(hProcess, ptr[i], base, sizeof(base)); + BOOL res = GetModuleBaseName(hProcess, ptr[i], base, sizeof(base)); if (res != 0) { if (strcmp(base, lib) == 0) { result = JNI_TRUE; diff --git a/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c b/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c index 6086ddf30f0b7befcb6e377b7e0b77ee7173137c..a956730d8cad95b89a71b19cf878dfc8ccf0cdf2 100644 --- a/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c +++ b/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c @@ -32,13 +32,13 @@ /* kernel32 */ -typedef HINSTANCE (WINAPI* LoadLibraryFunc) (LPCTSTR); +typedef HINSTANCE (WINAPI* GetModuleHandleFunc) (LPCTSTR); typedef FARPROC (WINAPI* GetProcAddressFunc)(HMODULE, LPCSTR); /* only on Windows 64-bit or 32-bit application running under WOW64 */ typedef BOOL (WINAPI *IsWow64ProcessFunc) (HANDLE, PBOOL); -static LoadLibraryFunc _LoadLibrary; +static GetModuleHandleFunc _GetModuleHandle; static GetProcAddressFunc _GetProcAddress; static IsWow64ProcessFunc _IsWow64Process; @@ -70,7 +70,7 @@ static void jstring_to_cstring(JNIEnv* env, jstring jstr, char* cstr, int len); #define MAX_PIPE_NAME_LENGTH 256 typedef struct { - LoadLibraryFunc _LoadLibrary; + GetModuleHandleFunc _GetModuleHandle; GetProcAddressFunc _GetProcAddress; char jvmLib[MAX_LIBNAME_LENGTH]; /* "jvm.dll" */ char func1[MAX_FUNC_LENGTH]; @@ -96,7 +96,7 @@ static DWORD WINAPI thread_func(DataBlock *pData) HINSTANCE h; EnqueueOperationFunc addr; - h = pData->_LoadLibrary(pData->jvmLib); + h = pData->_GetModuleHandle(pData->jvmLib); if (h == NULL) { return ERR_OPEN_JVM_FAIL; } @@ -131,15 +131,10 @@ static void thread_end (void) { JNIEXPORT void JNICALL Java_sun_tools_attach_WindowsVirtualMachine_init (JNIEnv *env, jclass cls) { - HINSTANCE h = LoadLibrary("kernel32"); - if (h != NULL) { - _LoadLibrary = (LoadLibraryFunc) GetProcAddress(h, "LoadLibraryA"); - _GetProcAddress = (GetProcAddressFunc)GetProcAddress(h, "GetProcAddress"); - _IsWow64Process = (IsWow64ProcessFunc)GetProcAddress(h, "IsWow64Process"); - } - if (_LoadLibrary == NULL || _GetProcAddress == NULL) { - JNU_ThrowInternalError(env, "Unable to get address of LoadLibraryA or GetProcAddress"); - } + // All following APIs exist on Windows XP with SP2/Windows Server 2008 + _GetModuleHandle = (GetModuleHandleFunc)GetModuleHandle; + _GetProcAddress = (GetProcAddressFunc)GetProcAddress; + _IsWow64Process = (IsWow64ProcessFunc)IsWow64Process; } @@ -375,7 +370,7 @@ JNIEXPORT void JNICALL Java_sun_tools_attach_WindowsVirtualMachine_enqueue /* * Setup data to copy to target process */ - data._LoadLibrary = _LoadLibrary; + data._GetModuleHandle = _GetModuleHandle; data._GetProcAddress = _GetProcAddress; strcpy(data.jvmLib, "jvm"); diff --git a/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c b/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c index f7ae46ecd8f23ab7bbaef9aadb033b454e9fcf23..dd4d5d03fc868aab90ccea176e87cd90eda29a8b 100644 --- a/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c +++ b/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c @@ -35,7 +35,7 @@ JvmSymbols* lookupJvmSymbols() { JvmSymbols* syms = (JvmSymbols*)malloc(sizeof(JvmSymbols)); if (syms != NULL) { - HINSTANCE jvm = LoadLibrary("jvm.dll"); + HINSTANCE jvm = GetModuleHandle("jvm.dll"); if (jvm == NULL) { free(syms); return NULL; diff --git a/src/windows/native/sun/windows/DllUtil.cpp b/src/windows/native/sun/windows/DllUtil.cpp index 907f05dc5a97cf6f405a3b302e2de1648865a6b5..7c6d00af0bf427611d03fa9a6379480854e51f50 100644 --- a/src/windows/native/sun/windows/DllUtil.cpp +++ b/src/windows/native/sun/windows/DllUtil.cpp @@ -25,6 +25,7 @@ #include "DllUtil.h" +#include // Disable warning about using this in the initializer list. #pragma warning( disable : 4355) @@ -40,7 +41,7 @@ DllUtil::~DllUtil() HMODULE DllUtil::GetModule() { if (!module) { - module = ::LoadLibrary(name); + module = JDK_LoadSystemLibrary(name); } return module; } @@ -60,7 +61,7 @@ DwmAPI & DwmAPI::GetInstance() } DwmAPI::DwmAPI() : - DllUtil(_T("DWMAPI.DLL")), + DllUtil("DWMAPI.DLL"), DwmIsCompositionEnabledFunction((DllUtil*)this, "DwmIsCompositionEnabled"), DwmGetWindowAttributeFunction((DllUtil*)this, "DwmGetWindowAttribute") { diff --git a/src/windows/native/sun/windows/DllUtil.h b/src/windows/native/sun/windows/DllUtil.h index e2892fc01f4ce7dd80acaa6ef5fcc159e840e969..17ebae0de18b42383ab5654a7d1aa3e1621a958b 100644 --- a/src/windows/native/sun/windows/DllUtil.h +++ b/src/windows/native/sun/windows/DllUtil.h @@ -43,7 +43,7 @@ class DllUtil { FARPROC GetProcAddress(LPCSTR name); protected: - DllUtil(const TCHAR * name) : name(name), module(NULL) {} + DllUtil(const char * name) : name(name), module(NULL) {} virtual ~DllUtil(); HMODULE GetModule(); @@ -68,7 +68,7 @@ class DllUtil { }; private: - const TCHAR * const name; + const char * const name; HMODULE module; }; diff --git a/src/windows/native/sun/windows/ShellFolder2.cpp b/src/windows/native/sun/windows/ShellFolder2.cpp index 80c445d60458f050eab2668ae9b909dd040c010a..7a18213d8792a84ac821bc7036fa2858d85263ae 100644 --- a/src/windows/native/sun/windows/ShellFolder2.cpp +++ b/src/windows/native/sun/windows/ShellFolder2.cpp @@ -120,15 +120,15 @@ static BOOL initShellProcs() return TRUE; } // Load libraries - libShell32 = LoadLibrary(TEXT("shell32.dll")); + libShell32 = JDK_LoadSystemLibrary("shell32.dll"); if (libShell32 == NULL) { return FALSE; } - libUser32 = LoadLibrary(TEXT("user32.dll")); + libUser32 = JDK_LoadSystemLibrary("user32.dll"); if (libUser32 == NULL) { return FALSE; } - libComCtl32 = LoadLibrary(TEXT("comctl32.dll")); + libComCtl32 = JDK_LoadSystemLibrary("comctl32.dll"); if (libComCtl32 == NULL) { return FALSE; } @@ -1021,7 +1021,8 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_getIconResource (JNIEnv* env, jclass cls, jstring libName, jint iconID, jint cxDesired, jint cyDesired, jboolean useVGAColors) { - HINSTANCE libHandle = LoadLibrary(JNU_GetStringPlatformChars(env, libName, NULL)); + const char *pLibName = env->GetStringUTFChars(libName, NULL); + HINSTANCE libHandle = (HINSTANCE)JDK_LoadSystemLibrary(pLibName); if (libHandle != NULL) { UINT fuLoad = (useVGAColors && !IS_WINXP) ? LR_VGACOLOR : 0; return ptr_to_jlong(LoadImage(libHandle, MAKEINTRESOURCE(iconID), diff --git a/src/windows/native/sun/windows/ThemeReader.cpp b/src/windows/native/sun/windows/ThemeReader.cpp index ff683dcbf657e5094b7557ecaa0ac2397bf5f34b..be5ae611074eb9b4216d64aff83400f8e4d5150b 100644 --- a/src/windows/native/sun/windows/ThemeReader.cpp +++ b/src/windows/native/sun/windows/ThemeReader.cpp @@ -150,7 +150,7 @@ static PFNGETTHEMETRANSITIONDURATION GetThemeTransitionDuration = NULL; BOOL InitThemes() { static HMODULE hModThemes = NULL; - hModThemes = LoadLibrary(TEXT("UXTHEME.DLL")); + hModThemes = JDK_LoadSystemLibrary("UXTHEME.DLL"); DTRACE_PRINTLN1("InitThemes hModThemes = %x\n", hModThemes); if(hModThemes) { DTRACE_PRINTLN("Loaded UxTheme.dll\n"); diff --git a/src/windows/native/sun/windows/awt_Component.cpp b/src/windows/native/sun/windows/awt_Component.cpp index d4fe9e8766ff2d49361532eeca94ec71dfa6b356..3b72baed5ee2814e04e45b53b455cb616676cc2f 100644 --- a/src/windows/native/sun/windows/awt_Component.cpp +++ b/src/windows/native/sun/windows/awt_Component.cpp @@ -3715,7 +3715,10 @@ void AwtComponent::OpenCandidateWindow(int x, int y) SetCandidateWindow(iCandType, x-rc.left, y-rc.top); } if (m_bitsCandType != 0) { - ::DefWindowProc(GetHWnd(), WM_IME_NOTIFY, IMN_OPENCANDIDATE, m_bitsCandType); + HWND proxy = GetProxyFocusOwner(); + // REMIND: is there any chance GetProxyFocusOwner() returns NULL here? + ::DefWindowProc((proxy != NULL) ? proxy : GetHWnd(), + WM_IME_NOTIFY, IMN_OPENCANDIDATE, m_bitsCandType); } } diff --git a/src/windows/native/sun/windows/awt_FileDialog.cpp b/src/windows/native/sun/windows/awt_FileDialog.cpp index 8e2c4996ece296be3cf8ec0958d5920ddc348057..a29a1ba94e6fa233ccd0712b33f9e6af27280fb2 100644 --- a/src/windows/native/sun/windows/awt_FileDialog.cpp +++ b/src/windows/native/sun/windows/awt_FileDialog.cpp @@ -284,7 +284,7 @@ AwtFileDialog::Show(void *p) file = (jstring)env->GetObjectField(target, AwtFileDialog::fileID); if (file != NULL) { LPCTSTR tmp = JNU_GetStringPlatformChars(env, file, NULL); - _tcscpy(fileBuffer, tmp); + _tcsncpy(fileBuffer, tmp, bufferLimit - 2); // the fileBuffer is double null terminated string JNU_ReleaseStringPlatformChars(env, file, tmp); } else { fileBuffer[0] = _T('\0'); diff --git a/src/windows/native/sun/windows/awt_Mlib.cpp b/src/windows/native/sun/windows/awt_Mlib.cpp index 03eda215a0e1cefe54722e79a2928a577ecbdce0..022ebd0419aa7ee065ddecaf37f1532d5e187a66 100644 --- a/src/windows/native/sun/windows/awt_Mlib.cpp +++ b/src/windows/native/sun/windows/awt_Mlib.cpp @@ -43,12 +43,13 @@ extern "C" mlibSysFnS_t tempSysFns; mlib_status ret = MLIB_SUCCESS; - /* Try to load library. Routine should find the library successfully - * because this library is already loaded to the process space by - * the System.loadLibrary() call. Here we just need to get handle to - * initialize the pointers to required mlib routines. + /* Try to receive handle for the library. Routine should find + * the library successfully because this library is already + * loaded to the process space by the System.loadLibrary() call. + * Here we just need to get handle to initialize the pointers to + * required mlib routines. */ - hDLL = ::LoadLibrary(TEXT("mlib_image.dll")); + hDLL = ::GetModuleHandle(TEXT("mlib_image.dll")); if (hDLL == NULL) { return MLIB_FAILURE; @@ -94,9 +95,6 @@ extern "C" i++; } - if (ret != MLIB_SUCCESS) { - ::FreeLibrary(hDLL); - } return ret; } diff --git a/src/windows/native/sun/windows/awt_Object.cpp b/src/windows/native/sun/windows/awt_Object.cpp index 54ec69a9a1960bb259493b357973991acdce7b82..f448f37474a383bafd9905c28126e507e31475f8 100644 --- a/src/windows/native/sun/windows/awt_Object.cpp +++ b/src/windows/native/sun/windows/awt_Object.cpp @@ -69,9 +69,12 @@ void AwtObject::_Dispose(jobject self) CriticalSection::Lock l(AwtToolkit::GetInstance().GetSyncCS()); + JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); + jobject selfGlobalRef = env->NewGlobalRef(self); + // value 0 of lParam means that we should not attempt to enter the // SyncCall critical section, as it was entered someshere earlier - AwtToolkit::GetInstance().SendMessage(WM_AWT_DISPOSE, (WPARAM)self, (LPARAM)0); + AwtToolkit::GetInstance().SendMessage(WM_AWT_DISPOSE, (WPARAM)selfGlobalRef, (LPARAM)0); CATCH_BAD_ALLOC; } diff --git a/src/windows/native/sun/windows/awt_TextArea.cpp b/src/windows/native/sun/windows/awt_TextArea.cpp index 350efdd91b17d78c1e62b87baad5eebf8990deef..16d36ad4480a2f29285531564df4e5111d6c4294 100644 --- a/src/windows/native/sun/windows/awt_TextArea.cpp +++ b/src/windows/native/sun/windows/awt_TextArea.cpp @@ -77,7 +77,7 @@ void AwtTextArea::Dispose() LPCTSTR AwtTextArea::GetClassName() { static BOOL richedLibraryLoaded = FALSE; if (!richedLibraryLoaded) { - ::LoadLibrary(TEXT("RICHED20.DLL")); + JDK_LoadSystemLibrary("RICHED20.DLL"); richedLibraryLoaded = TRUE; } return RICHEDIT_CLASS; diff --git a/src/windows/native/sun/windows/awt_Toolkit.cpp b/src/windows/native/sun/windows/awt_Toolkit.cpp index d010d6b130c9714c5670533ea0ffa9f2bd857415..0329e950f6289d1d7ca316a83c635fed497f5d09 100644 --- a/src/windows/native/sun/windows/awt_Toolkit.cpp +++ b/src/windows/native/sun/windows/awt_Toolkit.cpp @@ -741,7 +741,9 @@ LRESULT CALLBACK AwtToolkit::WndProc(HWND hWnd, UINT message, } if (canDispose) { if(wParam != NULL) { - AwtObject *o = (AwtObject *) JNI_GET_PDATA((jobject)wParam); + jobject self = (jobject)wParam; + AwtObject *o = (AwtObject *) JNI_GET_PDATA(self); + env->DeleteGlobalRef(self); if(o != NULL && theAwtObjectList.Remove(o)) { o->Dispose(); } diff --git a/src/windows/native/sun/windows/awt_TrayIcon.cpp b/src/windows/native/sun/windows/awt_TrayIcon.cpp index c2682b3b11364d675ffb1c02884a4d1733667dc8..6cd2ce49954974d304204238d33ec73797d8635d 100644 --- a/src/windows/native/sun/windows/awt_TrayIcon.cpp +++ b/src/windows/native/sun/windows/awt_TrayIcon.cpp @@ -185,7 +185,7 @@ void AwtTrayIcon::InitNID(UINT uID) int shellVersion = 5; // WIN_2000 // MSDN: DllGetVersion should not be implicitly called, but rather // loaded using GetProcAddress - HMODULE hShell = LoadLibrary(TEXT("Shell32.dll")); + HMODULE hShell = JDK_LoadSystemLibrary("Shell32.dll"); if (hShell != NULL) { DLLGETVERSIONPROC proc = (DLLGETVERSIONPROC)GetProcAddress(hShell, "DllGetVersion"); if (proc != NULL) { diff --git a/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp b/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp index 87519b4649d0535f084442e548a04c6db710fd0f..ae268de14828715c7eafed5829572386524f0eff 100644 --- a/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp +++ b/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp @@ -673,6 +673,12 @@ LPMONITORINFO AwtWin32GraphicsDevice::GetMonitorInfo(int deviceIndex) */ void AwtWin32GraphicsDevice::ResetAllMonitorInfo() { + //IE in some circumstances generates WM_SETTINGCHANGE message on appearance + //and thus triggers this method + //but we may not have the devices list initialized yet. + if (!Devices::GetInstance()){ + return; + } Devices::InstanceAccess devices; int devicesNum = devices->GetNumDevices(); for (int deviceIndex = 0; deviceIndex < devicesNum; deviceIndex++) { diff --git a/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp b/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp index 937007a5fd3519ec3385e619d5d16310f526c529..bc0d6a939fa397e74a481260c907f01b99721c78 100644 --- a/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp +++ b/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp @@ -63,7 +63,7 @@ SetProcessDPIAwareProperty() bAlreadySet = TRUE; - HMODULE hLibUser32Dll = ::LoadLibrary(TEXT("user32.dll")); + HMODULE hLibUser32Dll = JDK_LoadSystemLibrary("user32.dll"); if (hLibUser32Dll != NULL) { SetProcessDPIAwareFunc *lpSetProcessDPIAware = diff --git a/src/windows/native/sun/windows/stdhdrs.h b/src/windows/native/sun/windows/stdhdrs.h index 68420470436177788cda57db0e8cf0483f7871ce..21aaaeb2b1824c066ed4f237aadbf8c5b11b3084 100644 --- a/src/windows/native/sun/windows/stdhdrs.h +++ b/src/windows/native/sun/windows/stdhdrs.h @@ -47,6 +47,7 @@ extern "C" { // standard Java headers #include #include +#include } // extern "C" diff --git a/src/windows/npt/npt_md.h b/src/windows/npt/npt_md.h index 394a8dc3b5ebdb757396675ba0ee7258014650ed..4cf2176db1c1b90ec76c94429e4a2220dfee2f65 100644 --- a/src/windows/npt/npt_md.h +++ b/src/windows/npt/npt_md.h @@ -47,7 +47,7 @@ _handle = NULL; \ *(pnpt) = NULL; \ buf[0] = 0; \ - jvm = LoadLibrary("jvm.dll"); \ + jvm = GetModuleHandle("jvm.dll"); \ if ( jvm == NULL ) NPT_ERROR("Cannot find jvm.dll"); \ GetModuleFileName(jvm, buf, FILENAME_MAX); \ lastSlash = strrchr(buf, '\\'); \ diff --git a/test/Makefile b/test/Makefile index daa8ee9231347ab12378458b51d4244eff6418e9..cf1f4d9030e375268c6291a1c819ea7e7900b1f3 100644 --- a/test/Makefile +++ b/test/Makefile @@ -510,13 +510,17 @@ jdk_nio2: $(call TestDirs, java/nio/Buffer java/nio/ByteOrder \ # Stable samevm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_nio3 -jdk_nio3: $(call TestDirs, com/sun/nio sun/nio) +jdk_nio3: $(call TestDirs, sun/nio) $(call RunSamevmBatch) # All nio tests jdk_nio: jdk_nio1 jdk_nio2 jdk_nio3 @$(SummaryInfo) +# Stable samevm testruns (minus items from PROBLEM_LIST) +jdk_sctp: $(call TestDirs, com/sun/nio/sctp) + $(call RunSamevmBatch) + # Stable othervm testruns (minus items from PROBLEM_LIST) # Using samevm has serious problems with these tests JDK_ALL_TARGETS += jdk_rmi @@ -532,7 +536,7 @@ jdk_security1: $(call TestDirs, java/security) # Using samevm has serious problems with these tests JDK_ALL_TARGETS += jdk_security2 jdk_security2: $(call TestDirs, javax/crypto com/sun/crypto) - $(call RunOthervmBatch) + $(call RunSamevmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) # Using samevm has serious problems with these tests diff --git a/test/ProblemList.txt b/test/ProblemList.txt index 3d883e8f7d836a54f71dbfa0cbee2086b626267e..c672c7fbc2003bb09c86ecc579fd21b403eccc8a 100644 --- a/test/ProblemList.txt +++ b/test/ProblemList.txt @@ -198,18 +198,6 @@ java/beans/XMLEncoder/6329581/Test6329581.java generic-all # requires junit java/lang/invoke/InvokeDynamicPrintArgs.java generic-all -# Times out on solaris 10 sparc -java/lang/ClassLoader/Assert.java generic-all - -# Solaris sparc, samevm, java.lang.Exception: Read from closed pipe hangs -java/lang/Runtime/exec/SleepyCat.java generic-all - -# Times out on solaris sparc -server -java/lang/ThreadLocal/MemoryLeak.java solaris-all - -# Windows X64, RuntimeException: MyThread expected to have RUNNABLE but got WAITING -java/lang/Thread/ThreadStateTest.java generic-all - ############################################################################ # jdk_management @@ -296,7 +284,6 @@ javax/management/monitor/AttributeArbitraryDataTypeTest.java generic-all # jdk_misc # Need to be marked othervm, or changed to be samevm safe -com/sun/jndi/ldap/ReadTimeoutTest.java generic-all com/sun/jndi/rmi/registry/RegistryContext/UnbindIdempotent.java generic-all # Need to be marked othervm, or changed to be samevm safe @@ -380,30 +367,6 @@ java/io/File/MaxPathLength.java windows-all # 6963118 java/nio/channels/Selector/Wakeup.java windows-all -# 6959891 -com/sun/nio/sctp/SctpChannel/SocketOptionTests.java - -# Fails with -ea -esa, Assertion error, but only on Solaris 10 machines? -com/sun/nio/sctp/SctpChannel/Send.java generic-all -com/sun/nio/sctp/SctpChannel/Shutdown.java generic-all - -# Fails on OpenSolaris, IllegalStateException: Cannot add or remove addresses -# from a channel that is bound to the wildcard address -com/sun/nio/sctp/SctpChannel/Bind.java generic-all - -# Failed on OpenSolaris, java.lang.AssertionError: Unknown event type -com/sun/nio/sctp/SctpChannel/Receive.java generic-all - -# Solaris 11 gave assert error and "connection refused", samevm issues? -com/sun/nio/sctp/SctpServerChannel/NonBlockingAccept.java generic-all - -# Fails with othervm on solaris 11 i586 -com/sun/nio/sctp/SctpChannel/CommUp.java generic-all -com/sun/nio/sctp/SctpChannel/Connect.java generic-all -com/sun/nio/sctp/SctpMultiChannel/Branch.java generic-all -com/sun/nio/sctp/SctpMultiChannel/Send.java generic-all -com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java generic-all - ############################################################################ # jdk_rmi @@ -503,10 +466,6 @@ sun/security/pkcs11/ec/TestECDSA.java solaris-i586 sun/security/pkcs11/ec/TestECGenSpec.java solaris-i586 sun/security/pkcs11/ec/TestKeyFactory.java solaris-i586 -# Unknown problem, could be a jtreg -samevm issue? -# Error while cleaning up threads after test -java/security/Security/SynchronizedAccess.java generic-all - # Failing on Solaris X64 (-d64 -server) with: # GSSException: Failure unspecified at GSS-API level # (Mechanism level: Specified version of key is not available (44)) @@ -592,37 +551,9 @@ sun/security/tools/jarsigner/oldsig.sh generic-all # Various failures on Linux Fedora 9 X64, othervm mode sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java generic-all -# Linux i586 -server, buffer too short to hold shared secret? -com/sun/crypto/provider/KeyAgreement/DHKeyAgreement2.java generic-all - # Solaris sparcv9: Failed to parse input emptysubject.jks: No such file or directory sun/security/tools/keytool/emptysubject.sh generic-all -# Timeout on solaris-sparcv9 or exception thrown -com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java solaris-all - -# Leaving file open: SerialVersion.current, windows samevm -java/security/BasicPermission/SerialVersion.java generic-all - -# Solaris 11 i586, these all fail with samevm, need to be othervm??? -java/security/BasicPermission/NullOrEmptyName.java generic-all - -# Suspect missing close() on file PermClass.current, windows samevm cascade -java/security/BasicPermission/PermClass.java generic-all - -# Solaris 11 i586, these all fail with samevm, need to be othervm??? -java/security/KeyPairGenerator/Failover.java generic-all -java/security/Provider/DefaultPKCS11.java generic-all -java/security/SecureClassLoader/DefineClassByteBuffer.java generic-all -java/security/SecureRandom/GetAlgorithm.java generic-all -java/security/Security/removing/RemoveProviders.java generic-all -java/security/Signature/ByteBuffers.java generic-all -java/security/Signature/NONEwithRSA.java generic-all -java/security/Signature/SignWithOutputBuffer.java generic-all -java/security/Signature/TestInitSignWithMyOwnRandom.java generic-all -java/security/UnresolvedPermission/AccessorMethods.java generic-all -java/security/UnresolvedPermission/Equals.java generic-all - # Fails on OpenSolaris, missing classes, slow on Solaris sparc sun/security/ec/TestEC.java generic-all @@ -643,9 +574,6 @@ sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java generic-all sun/security/rsa/TestKeyPairGeneratorLength.java solaris-all sun/security/rsa/TestSignatures.java solaris-all -# Timeout on solaris-sparc and i586 and x64, -client and -server -sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/InterruptedIO.java solaris-all - # Do not seem to run on windows machines? dll missing? sun/security/tools/jarsigner/emptymanifest.sh windows-all diff --git a/test/com/sun/crypto/provider/Cipher/DES/Sealtest.java b/test/com/sun/crypto/provider/Cipher/DES/Sealtest.java index d7fe1b8739c6a95cb4d7ee07defd1367f646dc11..5c949c8b019725e3887072b4e11415ae65188b0d 100644 --- a/test/com/sun/crypto/provider/Cipher/DES/Sealtest.java +++ b/test/com/sun/crypto/provider/Cipher/DES/Sealtest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2011, 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 @@ -23,7 +23,7 @@ /* * @test - * @bug 0000000 + * @bug 0000000 7055362 * @summary Sealtest * @author Jan Luehe */ @@ -54,14 +54,16 @@ public class Sealtest { SealedObject sealed = new SealedObject(kp.getPrivate(), c); // serialize - FileOutputStream fos = new FileOutputStream("sealed"); - ObjectOutputStream oos = new ObjectOutputStream(fos); - oos.writeObject(sealed); + try (FileOutputStream fos = new FileOutputStream("sealed"); + ObjectOutputStream oos = new ObjectOutputStream(fos)) { + oos.writeObject(sealed); + } // deserialize - FileInputStream fis = new FileInputStream("sealed"); - ObjectInputStream ois = new ObjectInputStream(fis); - sealed = (SealedObject)ois.readObject(); + try (FileInputStream fis = new FileInputStream("sealed"); + ObjectInputStream ois = new ObjectInputStream(fis)) { + sealed = (SealedObject)ois.readObject(); + } System.out.println(sealed.getAlgorithm()); diff --git a/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java b/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java index 53ad3a664307264fed72efc6400546d7500be06e..6d43ce1a715d99b29e009bd314e0c11e497e21c2 100644 --- a/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java +++ b/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP_KAT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,7 @@ /* * @test - * @bug 4894151 + * @bug 4894151 7055362 * @summary known answer test for OAEP encryption * @author Andreas Sterbenz */ @@ -62,60 +62,62 @@ public class TestOAEP_KAT { System.out.println("Testing provider " + provider.getName() + "..."); Cipher c = Cipher.getInstance("RSA/ECB/OAEPwithSHA1andMGF1Padding", provider); KeyFactory kf = KeyFactory.getInstance("RSA", kfProvider); - InputStream in = new FileInputStream(new File(BASE, "oaep-vect.txt")); - BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF8")); - while (true) { - String line = reader.readLine(); - if (line == null) { - break; - } - line = line.trim(); - if (line.length() == 0) { - continue; - } - if (line.equals("# RSA modulus n:")) { - n = parseNumber(reader); - } else if (line.equals("# RSA public exponent e:")) { - e = parseNumber(reader); - } else if (line.equals("# RSA private exponent d:")) { - d = parseNumber(reader); - } else if (line.equals("# Prime p:")) { - p = parseNumber(reader); - } else if (line.equals("# Prime q:")) { - q = parseNumber(reader); - } else if (line.equals("# p's CRT exponent dP:")) { - pe = parseNumber(reader); - } else if (line.equals("# q's CRT exponent dQ:")) { - qe = parseNumber(reader); - } else if (line.equals("# CRT coefficient qInv:")) { - coeff = parseNumber(reader); - } else if (line.equals("# Message to be encrypted:")) { - plainText = parseBytes(reader); - } else if (line.equals("# Seed:")) { - seed = parseBytes(reader); - } else if (line.equals("# Encryption:")) { - cipherText = parseBytes(reader); - // do encryption test first - KeySpec pubSpec = new RSAPublicKeySpec(n, e); - PublicKey pubKey = kf.generatePublic(pubSpec); - c.init(Cipher.ENCRYPT_MODE, pubKey, new MyRandom(seed)); - cipherText2 = c.doFinal(plainText); - if (Arrays.equals(cipherText2, cipherText) == false) { - throw new Exception("Encryption mismatch"); + try (InputStream in = new FileInputStream(new File(BASE, "oaep-vect.txt")); + BufferedReader reader = + new BufferedReader(new InputStreamReader(in, "UTF8"))) { + while (true) { + String line = reader.readLine(); + if (line == null) { + break; + } + line = line.trim(); + if (line.length() == 0) { + continue; } - // followed by decryption test - KeySpec privSpec = new RSAPrivateCrtKeySpec(n, e, d, p, q, pe, qe, coeff); - PrivateKey privKey = kf.generatePrivate(privSpec); - c.init(Cipher.DECRYPT_MODE, privKey); - byte[] dec = c.doFinal(cipherText); - if (Arrays.equals(plainText, dec) == false) { - throw new Exception("Decryption mismatch"); + if (line.equals("# RSA modulus n:")) { + n = parseNumber(reader); + } else if (line.equals("# RSA public exponent e:")) { + e = parseNumber(reader); + } else if (line.equals("# RSA private exponent d:")) { + d = parseNumber(reader); + } else if (line.equals("# Prime p:")) { + p = parseNumber(reader); + } else if (line.equals("# Prime q:")) { + q = parseNumber(reader); + } else if (line.equals("# p's CRT exponent dP:")) { + pe = parseNumber(reader); + } else if (line.equals("# q's CRT exponent dQ:")) { + qe = parseNumber(reader); + } else if (line.equals("# CRT coefficient qInv:")) { + coeff = parseNumber(reader); + } else if (line.equals("# Message to be encrypted:")) { + plainText = parseBytes(reader); + } else if (line.equals("# Seed:")) { + seed = parseBytes(reader); + } else if (line.equals("# Encryption:")) { + cipherText = parseBytes(reader); + // do encryption test first + KeySpec pubSpec = new RSAPublicKeySpec(n, e); + PublicKey pubKey = kf.generatePublic(pubSpec); + c.init(Cipher.ENCRYPT_MODE, pubKey, new MyRandom(seed)); + cipherText2 = c.doFinal(plainText); + if (Arrays.equals(cipherText2, cipherText) == false) { + throw new Exception("Encryption mismatch"); + } + // followed by decryption test + KeySpec privSpec = new RSAPrivateCrtKeySpec(n, e, d, p, q, pe, qe, coeff); + PrivateKey privKey = kf.generatePrivate(privSpec); + c.init(Cipher.DECRYPT_MODE, privKey); + byte[] dec = c.doFinal(cipherText); + if (Arrays.equals(plainText, dec) == false) { + throw new Exception("Decryption mismatch"); + } + } else if (line.startsWith("# ------------------------------")) { + // ignore, do not print + } else { + // unknown line (comment), print + System.out.println(": " + line); } - } else if (line.startsWith("# ------------------------------")) { - // ignore, do not print - } else { - // unknown line (comment), print - System.out.println(": " + line); } } long stop = System.currentTimeMillis(); diff --git a/test/com/sun/jndi/ldap/ReadTimeoutTest.java b/test/com/sun/jndi/ldap/ReadTimeoutTest.java index b5349da69c2f87b8c2fb80ad48fc71d0c20687e2..20e29173380332bfb2bcb3d91a52ff6e10ca15b0 100644 --- a/test/com/sun/jndi/ldap/ReadTimeoutTest.java +++ b/test/com/sun/jndi/ldap/ReadTimeoutTest.java @@ -23,7 +23,7 @@ /** * @test - * @bug 6176036 + * @bug 6176036 7056489 * @summary Read-timeout specification for LDAP operations */ @@ -37,40 +37,37 @@ import java.util.Hashtable; public class ReadTimeoutTest { public static void main(String[] args) throws Exception { - boolean passed = false; - // Set up the environment for creating the initial context - Hashtable env = new Hashtable(11); - env.put(Context.INITIAL_CONTEXT_FACTORY, - "com.sun.jndi.ldap.LdapCtxFactory"); - env.put("com.sun.jndi.ldap.read.timeout", "1000"); - env.put(Context.PROVIDER_URL, "ldap://localhost:2001"); - - Server s = new Server(); - - try { + // create the server + try (Server server = Server.create()) { + // Set up the environment for creating the initial context + Hashtable env = new Hashtable<>(11); + env.put(Context.INITIAL_CONTEXT_FACTORY, + "com.sun.jndi.ldap.LdapCtxFactory"); + env.put("com.sun.jndi.ldap.read.timeout", "1000"); + env.put(Context.PROVIDER_URL, "ldap://localhost:" + server.port()); - // start the server - s.start(); // Create initial context DirContext ctx = new InitialDirContext(env); - System.out.println("LDAP Client: Connected to the Server"); - - SearchControls scl = new SearchControls(); - scl.setSearchScope(SearchControls.SUBTREE_SCOPE); - System.out.println("Performing Search"); - NamingEnumeration answer = - ctx.search("ou=People,o=JNDITutorial", "(objectClass=*)", scl); - - // Close the context when we're done - ctx.close(); + try { + System.out.println("LDAP Client: Connected to the Server"); + + SearchControls scl = new SearchControls(); + scl.setSearchScope(SearchControls.SUBTREE_SCOPE); + System.out.println("Performing Search"); + NamingEnumeration answer = + ctx.search("ou=People,o=JNDITutorial", "(objectClass=*)", scl); + } finally { + // Close the context when we're done + ctx.close(); + } } catch (NamingException e) { passed = true; e.printStackTrace(); } - s.interrupt(); + if (!passed) { throw new Exception("Read timeout test failed," + " read timeout exception not thrown"); @@ -78,27 +75,39 @@ public class ReadTimeoutTest { System.out.println("The test PASSED"); } - static class Server extends Thread { + static class Server implements Runnable, Closeable { + private final ServerSocket ss; - static int serverPort = 2001; + private Server(ServerSocket ss) { + this.ss = ss; + } - Server() { + static Server create() throws IOException { + Server server = new Server(new ServerSocket(0)); + new Thread(server).start(); + return server; + } + + int port() { + return ss.getLocalPort(); } public void run() { - try { - ServerSocket serverSock = new ServerSocket(serverPort); - Socket socket = serverSock.accept(); + try (Socket s = ss.accept()) { System.out.println("Server: Connection accepted"); - - BufferedInputStream bin = new BufferedInputStream(socket. - getInputStream()); - while (true) { - bin.read(); - } + BufferedInputStream bis = new BufferedInputStream(s.getInputStream()); + byte[] buf = new byte[100]; + int n; + do { + n = bis.read(buf); + } while (n > 0); } catch (IOException e) { // ignore } + } + + public void close() throws IOException { + ss.close(); + } } } -} diff --git a/test/com/sun/net/httpserver/bugs/B6373555.java b/test/com/sun/net/httpserver/bugs/B6373555.java index f0f29d9446884ba3f643ffcbe87011e0724df1f8..9bfcd26d3a2a98434e9d67f06884c09115c987b2 100644 --- a/test/com/sun/net/httpserver/bugs/B6373555.java +++ b/test/com/sun/net/httpserver/bugs/B6373555.java @@ -43,14 +43,12 @@ public class B6373555 { private static int port; private static volatile boolean error = false; - private static Object lock; static HttpServer httpServer; static ExecutorService pool, execs; static int NUM = 1000; public static void main(String[] args) throws Exception { try { - lock = new Object(); if (args.length > 0) { NUM = Integer.parseInt (args[0]); } @@ -117,12 +115,6 @@ public class B6373555 { System.out.println("Doesn't match"); error = true; } - synchronized(lock) { - ++received; - if ((received % 1000) == 0) { - System.out.println("Received="+received); - } - } } catch(Exception e) { e.printStackTrace(); @@ -150,18 +142,12 @@ public class B6373555 { private static HttpServer createHttpServer(ExecutorService execs) throws Exception { InetSocketAddress inetAddress = new InetSocketAddress(0); - HttpServer testServer = HttpServer.create(inetAddress, 5); + HttpServer testServer = HttpServer.create(inetAddress, 15); testServer.setExecutor(execs); HttpContext context = testServer.createContext("/test"); context.setHandler(new HttpHandler() { public void handle(HttpExchange msg) { try { - synchronized(lock) { - ++s_received; - if ((s_received % 1000) == 0) { - System.out.println("Received="+s_received); - } - } String method = msg.getRequestMethod(); if (method.equals("POST")) { InputStream is = msg.getRequestBody(); @@ -172,12 +158,6 @@ public class B6373555 { System.out.println("****** METHOD not handled ***** "+method); System.out.println("Received="+s_received); } - synchronized(lock) { - ++sent; - if ((sent % 1000) == 0) { - System.out.println("sent="+sent); - } - } } catch(Exception e) { e.printStackTrace(); diff --git a/test/java/awt/image/BufferedImage/TinyScale.java b/test/java/awt/image/BufferedImage/TinyScale.java new file mode 100644 index 0000000000000000000000000000000000000000..83a5dbcccaef1edbd81a4fc30a386c38bc9dc299 --- /dev/null +++ b/test/java/awt/image/BufferedImage/TinyScale.java @@ -0,0 +1,68 @@ +/* + * @test %W% %E% + * @bug 7016495 + * @summary Test tiny scales of BufferedImage + */ + +import java.awt.*; +import java.awt.geom.*; +import java.awt.image.*; + +public class TinyScale { + static double tinyscales[] = { + 1E-0, + 1E-1, + 1E-2, + 1E-3, + 1E-4, + 1E-5, + 1E-6, + 1E-7, + 1E-8, + 1E-9, + 1E-10, + 1E-11, + 1E-12, + 1E-13, + 1E-14, + 1E-15, + 1E-16, + 1E-17, + 1E-18, + 1E-19, + 1E-20, + 1E-21, + 1E-22, + 1E-23, + 1E-24, + 1E-25, + 1E-26, + 1E-27, + 1E-28, + 1E-29, + }; + + static void test(BufferedImage rendImg, BufferedImage drawImg, double s) { + Graphics2D g = drawImg.createGraphics(); + g.transform(new AffineTransform(s, 0.0, -1.0, 1.0, 0.0, 0.0)); + g.drawImage(rendImg, + -rendImg.getWidth() / 2, + -rendImg.getHeight() / 2, + null); + g.drawImage(rendImg, 0, 0, null); + g.dispose(); + } + + public static void main(String[] args) { + BufferedImage rendImg = + new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR); + BufferedImage drawImg = + new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); + for (double s: tinyscales) { + test(rendImg, drawImg, s); + for (int i = 0; args.length > 0 && i < 10; i++) { + test(rendImg, drawImg, Math.random()*s); + } + } + } +} diff --git a/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh b/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh index 61cff74e1232fa988cb0aa09b7ab3cbcdf1c3a09..acdf9bb3442c680ea00242a4ec3ccd4a42a1451d 100644 --- a/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh +++ b/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh @@ -25,7 +25,7 @@ # @summary (cl) ClassLoader.loadClass locks all instances in chain # when delegating # -# @run shell/timeout=10 TestOneWayDelegate.sh +# @run shell TestOneWayDelegate.sh # if running by hand on windows, change TESTSRC and TESTCLASSES to "." if [ "${TESTSRC}" = "" ] ; then diff --git a/test/java/lang/Thread/ThreadStateTest.java b/test/java/lang/Thread/ThreadStateTest.java index 007735a49ea4786b4ab3ee482e6e9aa83a3a45cc..c4fa18850b2a240b434e0a4119c9eb06f2eea97f 100644 --- a/test/java/lang/Thread/ThreadStateTest.java +++ b/test/java/lang/Thread/ThreadStateTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2011, 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 @@ -34,21 +34,16 @@ */ import java.util.concurrent.locks.LockSupport; -import java.util.concurrent.Semaphore; +import java.util.concurrent.Phaser; public class ThreadStateTest { + // maximum number of retries when checking for thread state. + static final int MAX_RETRY = 500; + private static boolean testFailed = false; - static class Lock { - private String name; - Lock(String name) { - this.name = name; - } - public String toString() { - return name; - } - } - private static Lock globalLock = new Lock("my lock"); + // used to achieve waiting states + static final Object globalLock = new Object(); public static void main(String[] argv) { // Call Thread.getState to force all initialization done @@ -102,13 +97,27 @@ public class ThreadStateTest { System.out.println("Unexpected exception."); testFailed = true; } + if (testFailed) throw new RuntimeException("TEST FAILED."); System.out.println("Test passed."); } private static void checkThreadState(Thread t, Thread.State expected) { - Thread.State state = t.getState(); + // wait for the thread to transition to the expected state. + // There is a small window between the thread checking the state + // and the thread actual entering that state. + Thread.State state; + int retryCount=0; + while ((state = t.getState()) != expected && retryCount < MAX_RETRY) { + if (state != Thread.State.RUNNABLE) { + throw new RuntimeException("Thread not in expected state yet," + + " but it should at least be RUNNABLE"); + } + goSleep(10); + retryCount++; + } + System.out.println("Checking thread state " + state); if (state == null) { throw new RuntimeException(t.getName() + " expected to have " + @@ -121,13 +130,6 @@ public class ThreadStateTest { } } - private static String getLockName(Object lock) { - if (lock == null) return null; - - return lock.getClass().getName() + '@' + - Integer.toHexString(System.identityHashCode(lock)); - } - private static void goSleep(long ms) { try { Thread.sleep(ms); @@ -139,7 +141,9 @@ public class ThreadStateTest { } static class MyThread extends Thread { - private ThreadExecutionSynchronizer thrsync = new ThreadExecutionSynchronizer(); + // Phaser to sync between the main thread putting + // this thread into various states + private Phaser phaser = new Phaser(2); MyThread(String name) { super(name); @@ -153,12 +157,14 @@ public class ThreadStateTest { private final int TIMED_PARKED = 5; private final int SLEEPING = 6; private final int TERMINATE = 7; - private int state = RUNNABLE; + + private volatile int state = RUNNABLE; private boolean done = false; public void run() { // Signal main thread to continue. - thrsync.signal(); + phaser.arriveAndAwaitAdvance(); + while (!done) { switch (state) { case RUNNABLE: { @@ -172,7 +178,7 @@ public class ThreadStateTest { } case BLOCKED: { // signal main thread. - thrsync.signal(); + phaser.arrive(); System.out.println(" myThread is going to block."); synchronized (globalLock) { // finish blocking @@ -183,7 +189,7 @@ public class ThreadStateTest { case WAITING: { synchronized (globalLock) { // signal main thread. - thrsync.signal(); + phaser.arrive(); System.out.println(" myThread is going to wait."); try { globalLock.wait(); @@ -196,7 +202,7 @@ public class ThreadStateTest { case TIMED_WAITING: { synchronized (globalLock) { // signal main thread. - thrsync.signal(); + phaser.arrive(); System.out.println(" myThread is going to timed wait."); try { globalLock.wait(10000); @@ -208,7 +214,7 @@ public class ThreadStateTest { } case PARKED: { // signal main thread. - thrsync.signal(); + phaser.arrive(); System.out.println(" myThread is going to park."); LockSupport.park(); // give a chance for the main thread to block @@ -217,7 +223,7 @@ public class ThreadStateTest { } case TIMED_PARKED: { // signal main thread. - thrsync.signal(); + phaser.arrive(); System.out.println(" myThread is going to timed park."); long deadline = System.currentTimeMillis() + 10000*1000; LockSupport.parkUntil(deadline); @@ -228,20 +234,19 @@ public class ThreadStateTest { } case SLEEPING: { // signal main thread. - thrsync.signal(); + phaser.arrive(); System.out.println(" myThread is going to sleep."); try { Thread.sleep(1000000); } catch (InterruptedException e) { // finish sleeping - interrupted(); } break; } case TERMINATE: { done = true; // signal main thread. - thrsync.signal(); + phaser.arrive(); break; } default: @@ -249,69 +254,66 @@ public class ThreadStateTest { } } } + public void waitUntilStarted() { // wait for MyThread. - thrsync.waitForSignal(); - goSleep(10); + phaser.arriveAndAwaitAdvance(); } public void goBlocked() { System.out.println("Waiting myThread to go blocked."); setState(BLOCKED); - // wait for MyThread to get blocked - thrsync.waitForSignal(); - goSleep(20); + // wait for MyThread to get to a point just before being blocked + phaser.arriveAndAwaitAdvance(); } public void goWaiting() { System.out.println("Waiting myThread to go waiting."); setState(WAITING); - // wait for MyThread to wait on object. - thrsync.waitForSignal(); - goSleep(20); + // wait for MyThread to get to just before wait on object. + phaser.arriveAndAwaitAdvance(); } + public void goTimedWaiting() { System.out.println("Waiting myThread to go timed waiting."); setState(TIMED_WAITING); - // wait for MyThread timed wait call. - thrsync.waitForSignal(); - goSleep(20); + // wait for MyThread to get to just before timed wait call. + phaser.arriveAndAwaitAdvance(); } + public void goParked() { System.out.println("Waiting myThread to go parked."); setState(PARKED); - // wait for MyThread state change to PARKED. - thrsync.waitForSignal(); - goSleep(20); + // wait for MyThread to get to just before parked. + phaser.arriveAndAwaitAdvance(); } + public void goTimedParked() { System.out.println("Waiting myThread to go timed parked."); setState(TIMED_PARKED); - // wait for MyThread. - thrsync.waitForSignal(); - goSleep(20); + // wait for MyThread to get to just before timed park. + phaser.arriveAndAwaitAdvance(); } public void goSleeping() { System.out.println("Waiting myThread to go sleeping."); setState(SLEEPING); - // wait for MyThread. - thrsync.waitForSignal(); - goSleep(20); + // wait for MyThread to get to just before sleeping + phaser.arriveAndAwaitAdvance(); } + public void terminate() { System.out.println("Waiting myThread to terminate."); setState(TERMINATE); - // wait for MyThread. - thrsync.waitForSignal(); - goSleep(20); + // wait for MyThread to get to just before terminate + phaser.arriveAndAwaitAdvance(); } private void setState(int newState) { switch (state) { case BLOCKED: while (state == BLOCKED) { - goSleep(20); + goSleep(10); } state = newState; break; @@ -337,50 +339,4 @@ public class ThreadStateTest { } } } - - - - static class ThreadExecutionSynchronizer { - - private boolean waiting; - private Semaphore semaphore; - - public ThreadExecutionSynchronizer() { - semaphore = new Semaphore(1); - waiting = false; - } - - // Synchronizes two threads execution points. - // Basically any thread could get scheduled to run and - // it is not possible to know which thread reaches expected - // execution point. So whichever thread reaches a execution - // point first wait for the second thread. When the second thread - // reaches the expected execution point will wake up - // the thread which is waiting here. - void stopOrGo() { - semaphore.acquireUninterruptibly(); // Thread can get blocked. - if (!waiting) { - waiting = true; - // Wait for second thread to enter this method. - while(!semaphore.hasQueuedThreads()) { - try { - Thread.sleep(20); - } catch (InterruptedException xx) {} - } - semaphore.release(); - } else { - waiting = false; - semaphore.release(); - } - } - - // Wrapper function just for code readability. - void waitForSignal() { - stopOrGo(); - } - - void signal() { - stopOrGo(); - } - } } diff --git a/test/java/lang/annotation/TestIncompleteAnnotationExceptionNPE.java b/test/java/lang/annotation/TestIncompleteAnnotationExceptionNPE.java new file mode 100644 index 0000000000000000000000000000000000000000..9e9e7a7a60a74a3efc3fd049c57179c673ac7185 --- /dev/null +++ b/test/java/lang/annotation/TestIncompleteAnnotationExceptionNPE.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7021922 + * @summary Test null handling of IncompleteAnnotationException constructor + * @author Joseph D. Darcy + */ + +import java.lang.annotation.*; + +public class TestIncompleteAnnotationExceptionNPE { + public static void main(String... args) { + int errors = 0; + Class annotationType = Annotation.class; + String elementName = "name"; + + try { + Object o = new IncompleteAnnotationException(null, null); + errors++; + } catch(NullPointerException npe) { + ; // Expected + } + + try { + Object o = new IncompleteAnnotationException(annotationType, null); + errors++; + } catch(NullPointerException npe) { + ; // Expected + } + + try { + Object o = new IncompleteAnnotationException(null, elementName); + errors++; + } catch(NullPointerException npe) { + ; // Expected + } + + if (errors != 0) + throw new RuntimeException("Encountered " + errors + + " error(s) during construction."); + } +} diff --git a/test/java/lang/invoke/PermuteArgsTest.java b/test/java/lang/invoke/PermuteArgsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e02137e256043f926f1dcce6dff29ca7ad3a373e --- /dev/null +++ b/test/java/lang/invoke/PermuteArgsTest.java @@ -0,0 +1,372 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @summary unit tests for method handles which permute their arguments + * @run junit/othervm -ea -esa -DPermuteArgsTest.MAX_ARITY=8 test.java.lang.invoke.PermuteArgsTest + */ +/* Examples of manual runs: + * java -DPermuteArgsTest.{DRY_RUN=true,MAX_ARITY=253} test.java.lang.invoke.PermuteArgsTest + * java -DPermuteArgsTest.{VERBOSE=true,MAX_ARITY=5} test.java.lang.invoke.PermuteArgsTest + * java test.java.lang.invoke.PermuteArgsTest list3I[2,0,1] listJLJ[2,0,1] + */ + +package test.java.lang.invoke; + +import org.junit.*; + +import java.util.*; +import java.lang.reflect.*; + +import java.lang.invoke.*; +import static java.lang.invoke.MethodHandles.*; +import static java.lang.invoke.MethodType.*; + +public class PermuteArgsTest { + private static final Class CLASS = PermuteArgsTest.class; + private static final int MAX_ARITY = Integer.getInteger(CLASS.getSimpleName()+".MAX_ARITY", 8); + private static final boolean DRY_RUN = Boolean.getBoolean(CLASS.getSimpleName()+".DRY_RUN"); + private static final boolean VERBOSE = Boolean.getBoolean(CLASS.getSimpleName()+".VERBOSE") || DRY_RUN; + + static Object list2I(int x, int y) { + return Arrays.asList(x, y); + } + static Object list3I(int x, int y, int z) { + return Arrays.asList(x, y, z); + } + static Object list4I(int w, int x, int y, int z) { + return Arrays.asList(w, x, y, z); + } + static Object list2J(long x, long y) { + return Arrays.asList(x, y); + } + static Object list3J(long x, long y, long z) { + return Arrays.asList(x, y, z); + } + static Object list4J(long w, long x, long y, long z) { + return Arrays.asList(w, x, y, z); + } + static Object list2I2J(int w, int x, long y, long z) { + return Arrays.asList(w, x, y, z); + } + static Object list2J2I(long w, long x, int y, int z) { + return Arrays.asList(w, x, y, z); + } + static Object listLJJ(Object x, long y, long z) { + return Arrays.asList(x, y, z); + } + static Object listJLJ(long x, Object y, long z) { + return Arrays.asList(x, y, z); + } + static Object listJJL(long x, long y, Object z) { + return Arrays.asList(x, y, z); + } + static Object listJLL(long x, Object y, Object z) { + return Arrays.asList(x, y, z); + } + static Object listLJL(Object x, long y, Object z) { + return Arrays.asList(x, y, z); + } + static Object listLLJ(Object x, Object y, long z) { + return Arrays.asList(x, y, z); + } + static Object listJLLJ(long w, Object x, Object y, long z) { + return Arrays.asList(w, x, y, z); + } + static Object listLJJL(Object w, long x, long y, Object z) { + return Arrays.asList(w, x, y, z); + } + static Object listI_etc(int... va) { + ArrayList res = new ArrayList(); + for (int x : va) res.add(x); + return res; + } + static Object listIJL_etc(int x, long y, Object z, Object... va) { + ArrayList res = new ArrayList(); + res.addAll(Arrays.asList(x, y, z)); + res.addAll(Arrays.asList(va)); + return res; + } + + public static void main(String argv[]) throws Throwable { + if (argv.length > 0) { + for (String arg : argv) { + // arg ::= name[n,...] + int k = arg.indexOf('['); + String mhName = arg.substring(0, k).trim(); + String permString = arg.substring(k); + testOnePermutation(mhName, permString); + } + return; + } + new PermuteArgsTest().test(); + } + static int testCases; + @Test + public void test() throws Throwable { + testCases = 0; + Lookup lookup = lookup(); + for (Method m : lookup.lookupClass().getDeclaredMethods()) { + if (m.getName().startsWith("list") && + Modifier.isStatic(m.getModifiers())) { + test(m.getName(), lookup.unreflect(m)); + } + } + System.out.println("ran a total of "+testCases+" test cases"); + } + + static int jump(int i, int min, int max) { + if (i >= min && i <= max-1) { + // jump faster + int len = max-min; + if (i < min + len/2) + i = min + len/2; + else + i = max-1; + } + return i; + } + + static void test(String name, MethodHandle mh) throws Throwable { + if (VERBOSE) + System.out.println("mh = "+name+" : "+mh+" { " + +Arrays.toString(junkArgs(mh.type().parameterArray()))); + int testCases0 = testCases; + if (!mh.isVarargsCollector()) { + // normal case + testPermutations(mh); + } else { + // varargs case; add params up to MAX_ARITY + MethodType mt = mh.type(); + int posArgs = mt.parameterCount() - 1; + int arity0 = Math.max(3, posArgs); + for (int arity = arity0; arity <= MAX_ARITY; arity++) { + MethodHandle mh1; + try { + mh1 = adjustArity(mh, arity); + } catch (IllegalArgumentException ex) { + System.out.println("*** mh = "+name+" : "+mh+"; arity = "+arity+" => "+ex); + ex.printStackTrace(); + break; // cannot get this arity for this type + } + test("("+arity+")"+name, mh1); + arity = jump(arity, arity0*2, MAX_ARITY); + } + } + if (VERBOSE) + System.out.println("ran "+(testCases - testCases0)+" test cases for "+name+" }"); + } + + static MethodHandle adjustArity(MethodHandle mh, int arity) { + MethodType mt = mh.type(); + int posArgs = mt.parameterCount() - 1; + Class reptype = mt.parameterType(posArgs).getComponentType(); + MethodType mt1 = mt.dropParameterTypes(posArgs, posArgs+1); + while (mt1.parameterCount() < arity) { + Class pt = reptype; + if (pt == Object.class && posArgs > 0) + // repeat types cyclically if possible: + pt = mt1.parameterType(mt1.parameterCount() - posArgs); + mt1 = mt1.appendParameterTypes(pt); + } + return mh.asType(mt1); + } + static MethodHandle findTestMH(String name, int[] perm) throws ReflectiveOperationException { + int arity = perm.length; + Lookup lookup = lookup(); + for (Method m : lookup.lookupClass().getDeclaredMethods()) { + if (m.getName().equals(name) && + Modifier.isStatic(m.getModifiers())) { + MethodHandle mh = lookup.unreflect(m); + int mhArity = mh.type().parameterCount(); + if (mh.isVarargsCollector()) { + if (mhArity-1 <= arity) + return adjustArity(mh, arity); + } else if (mhArity == arity) { + return mh; + } + } + } + throw new RuntimeException("no such method for arity "+arity+": "+name); + } + + static void testPermutations(MethodHandle mh) throws Throwable { + HashSet done = new HashSet(); + MethodType mt = mh.type(); + int[] perm = nullPerm(mt.parameterCount()); + final int MARGIN = (perm.length <= 10 ? 2 : 0); + int testCases0 = testCases; + for (int j = 0; j <= 1; j++) { + int maxStart = perm.length-1; + if (j != 0) maxStart /= 2; + for (int start = 0; start <= maxStart; start++) { + int maxOmit = (maxStart - start) / 2; + if (start != 0) maxOmit = 2; + if (j != 0) maxOmit = 1; + for (int omit = 0; omit <= maxOmit; omit++) { + int end = perm.length - omit; + if (end - start >= 2) { + //System.out.println("testPermutations"+Arrays.asList(start, end)+(j == 0 ? "" : " (reverse)")); + testPermutations(mh, perm, start, end, done); + } + omit = jump(omit, (start == 0 && j == 0 ? MARGIN : 0), maxOmit); + } + start = jump(start, (j == 0 ? MARGIN : 0), maxStart); + } + // do everything in reverse: + reverse(perm, 0, perm.length); + } + switch (perm.length) { + case 2: assert(testCases - testCases0 == 2); break; + case 3: assert(testCases - testCases0 == 6); break; + case 4: assert(testCases - testCases0 == 24); break; + case 5: assert(testCases - testCases0 == 120); break; + case 6: assert(testCases - testCases0 > 720/3); break; + } + } + + static void testPermutations(MethodHandle mh, int[] perm, int start, int end, Set done) throws Throwable { + if (end - start <= 1) return; + for (int j = 0; j <= 1; j++) { + testRotations(mh, perm, start, end, done); + if (end - start <= 2) return; + reverse(perm, start, end); + } + if (end - start <= 3) return; + int excess4 = (end - start) - 4; + // composed rotations: + int start2 = start + 1 + excess4/3; + int end2 = end - excess4/3; + end2 = start2 + Math.min(start == 0 ? 4 : 3, end2 - start2); + int skips = (perm.length+3)/5; + for (int i = start; i < end; i++) { + rotate(perm, start, end); + if (skips > 1 && ((i-start) + (i-start)/7) % skips != 0) continue; + for (int j = 0; j <= 1; j++) { + testPermutations(mh, perm, start2, end2, done); + reverse(perm, start, end); + } + } + } + + static void testRotations(MethodHandle mh, int[] perm, int start, int end, Set done) throws Throwable { + Object[] args = junkArgs(mh.type().parameterArray()); + for (int i = start; i < end; i++) { + if (done.add(Arrays.toString(perm))) + testOnePermutation(mh, perm, args); + rotate(perm, start, end); + } + } + + static void testOnePermutation(MethodHandle mh, int[] perm, Object[] args) throws Throwable { + MethodType mt = mh.type(); + MethodType pmt = methodType(mt.returnType(), unpermuteArgs(perm, mt.parameterArray(), Class[].class)); + if (VERBOSE) + System.out.println(Arrays.toString(perm)); + testCases += 1; + if (DRY_RUN) + return; + Object res = permuteArguments(mh, pmt, perm).invokeWithArguments(unpermuteArgs(perm, args)); + String str = String.valueOf(res); + if (!Arrays.toString(args).equals(str)) { + System.out.println(Arrays.toString(perm)+" "+str+" *** WRONG ***"); + } + } + + // For reproducing failures: + static void testOnePermutation(String mhName, String permString) throws Throwable { + String s = permString; + s = s.replace('[', ' ').replace(']', ' ').replace(',', ' '); // easier to trim spaces + s = s.trim(); + int[] perm = new int[s.length()]; + int arity = 0; + while (!s.isEmpty()) { + int k = s.indexOf(' '); + if (k < 0) k = s.length(); + perm[arity++] = Integer.parseInt(s.substring(0, k)); + s = s.substring(k).trim(); + } + perm = Arrays.copyOf(perm, arity); + testOnePermutation(mhName, perm); + } + static void testOnePermutation(String mhName, int[] perm) throws Throwable { + MethodHandle mh = findTestMH(mhName, perm); + System.out.println("mh = "+mhName+" : "+mh+" { " + +Arrays.toString(junkArgs(mh.type().parameterArray()))); + Object[] args = junkArgs(mh.type().parameterArray()); + testOnePermutation(mh, perm, args); + System.out.println("}"); + } + + static Object[] junkArgs(Class[] ptypes) { + Object[] args = new Object[ptypes.length]; + for (int i = 0; i < ptypes.length; i++) { + Class pt = ptypes[i]; + Object arg; + if (pt == Void.class) arg = null; + else if (pt == int.class) arg = (int) i + 101; + else if (pt == long.class) arg = (long) i + 10_000_000_001L; + else arg = "#" + (i + 1); + args[i] = arg; + } + return args; + } + + static int[] nullPerm(int len) { + int[] perm = new int[len]; + for (int i = 0; i < len; i++) + perm[i] = i; + return perm; + } + static void rotate(int[] perm) { + rotate(perm, 0, perm.length); + } + static void rotate(int[] perm, int start, int end) { + int x = perm[end-1]; + for (int j = start; j < end; j++) { + int y = perm[j]; perm[j] = x; x = y; + } + } + static void reverse(int[] perm) { + reverse(perm, 0, perm.length); + } + static void reverse(int[] perm, int start, int end) { + int mid = start + (end - start)/2; + for (int j = start; j < mid; j++) { + int k = (end-1) - j; + int x = perm[j]; perm[j] = perm[k]; perm[k] = x; + } + } + // Permute the args according to the inverse of perm. + static Object[] unpermuteArgs(int[] perm, Object[] args) { + return unpermuteArgs(perm, args, Object[].class); + } + static T[] unpermuteArgs(int[] perm, T[] args, Class Tclass) { + T[] res = Arrays.copyOf(new Object[0], perm.length, Tclass); + for (int i = 0; i < perm.length; i++) + res[perm[i]] = args[i]; + return res; + } +} diff --git a/test/java/lang/management/ManagementFactory/MBeanServerMXBeanUnsupportedTest.java b/test/java/lang/management/ManagementFactory/MBeanServerMXBeanUnsupportedTest.java index 21a80005e28fffef6d2af032d90f51f5bd74de99..6178d47c14546df58fafc90b437baa75017237c4 100644 --- a/test/java/lang/management/ManagementFactory/MBeanServerMXBeanUnsupportedTest.java +++ b/test/java/lang/management/ManagementFactory/MBeanServerMXBeanUnsupportedTest.java @@ -29,7 +29,7 @@ * @author Luis-Miguel Alventosa * @run clean MBeanServerMXBeanUnsupportedTest * @run build MBeanServerMXBeanUnsupportedTest - * @run main MBeanServerMXBeanUnsupportedTest + * @run main/othervm MBeanServerMXBeanUnsupportedTest */ import java.lang.management.ManagementFactory; diff --git a/test/java/net/URLClassLoader/B7050028.java b/test/java/net/URLClassLoader/B7050028.java new file mode 100644 index 0000000000000000000000000000000000000000..e8f275fedb46ad10869ff0b0a9fed4609e721301 --- /dev/null +++ b/test/java/net/URLClassLoader/B7050028.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.util.zip.CRC32; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * @test + * @bug 7050028 + * @summary ISE "zip file closed" from JarURLConnection.getInputStream on JDK 7 when !useCaches + * @run main/othervm B7050028 + */ + +public class B7050028 { + public static void main(String[] args) throws Exception { + URLConnection conn = B7050028.class.getResource("B7050028.class").openConnection(); + int len = conn.getContentLength(); + byte[] data = new byte[len]; + InputStream is = conn.getInputStream(); + is.read(data); + is.close(); + conn.setDefaultUseCaches(false); + File jar = File.createTempFile("B7050028", ".jar"); + jar.deleteOnExit(); + OutputStream os = new FileOutputStream(jar); + ZipOutputStream zos = new ZipOutputStream(os); + ZipEntry ze = new ZipEntry("B7050028.class"); + ze.setMethod(ZipEntry.STORED); + ze.setSize(len); + CRC32 crc = new CRC32(); + crc.update(data); + ze.setCrc(crc.getValue()); + zos.putNextEntry(ze); + zos.write(data, 0, len); + zos.closeEntry(); + zos.finish(); + zos.close(); + os.close(); + System.out.println(new URLClassLoader(new URL[] {new URL("jar:" + jar.toURI() + "!/")}, ClassLoader.getSystemClassLoader().getParent()).loadClass(B7050028.class.getName())); + } + private B7050028() {} +} diff --git a/test/java/nio/channels/AsynchronousSocketChannel/Basic.java b/test/java/nio/channels/AsynchronousSocketChannel/Basic.java index 7002dcd38146539a4b629a28d21fc617ca52113c..32b6c83773332d026d48a8a2e2bd4b9dd75ed9f6 100644 --- a/test/java/nio/channels/AsynchronousSocketChannel/Basic.java +++ b/test/java/nio/channels/AsynchronousSocketChannel/Basic.java @@ -24,7 +24,7 @@ /* @test * @bug 4607272 6842687 6878369 6944810 7023403 * @summary Unit test for AsynchronousSocketChannel - * @run main/timeout=600 Basic + * @run main Basic -skipSlowConnectTest */ import java.nio.ByteBuffer; @@ -34,12 +34,25 @@ import java.net.*; import java.util.Random; import java.util.concurrent.*; import java.util.concurrent.atomic.*; +import java.io.Closeable; import java.io.IOException; public class Basic { static final Random rand = new Random(); + static boolean skipSlowConnectTest = false; + public static void main(String[] args) throws Exception { + for (String arg: args) { + switch (arg) { + case "-skipSlowConnectTest" : + skipSlowConnectTest = true; + break; + default: + throw new RuntimeException("Unrecognized argument: " + arg); + } + } + testBind(); testSocketOptions(); testConnect(); @@ -54,7 +67,7 @@ public class Basic { testShutdown(); } - static class Server { + static class Server implements Closeable { private final ServerSocketChannel ssc; private final InetSocketAddress address; @@ -74,10 +87,8 @@ public class Basic { return ssc.accept(); } - void close() { - try { - ssc.close(); - } catch (IOException ignore) { } + public void close() throws IOException { + ssc.close(); } } @@ -85,28 +96,28 @@ public class Basic { static void testBind() throws Exception { System.out.println("-- bind --"); - AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - if (ch.getLocalAddress() != null) - throw new RuntimeException("Local address should be 'null'"); - ch.bind(new InetSocketAddress(0)); - - // check local address after binding - InetSocketAddress local = (InetSocketAddress)ch.getLocalAddress(); - if (local.getPort() == 0) - throw new RuntimeException("Unexpected port"); - if (!local.getAddress().isAnyLocalAddress()) - throw new RuntimeException("Not bound to a wildcard address"); - - // try to re-bind - try { + try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { + if (ch.getLocalAddress() != null) + throw new RuntimeException("Local address should be 'null'"); ch.bind(new InetSocketAddress(0)); - throw new RuntimeException("AlreadyBoundException expected"); - } catch (AlreadyBoundException x) { + + // check local address after binding + InetSocketAddress local = (InetSocketAddress)ch.getLocalAddress(); + if (local.getPort() == 0) + throw new RuntimeException("Unexpected port"); + if (!local.getAddress().isAnyLocalAddress()) + throw new RuntimeException("Not bound to a wildcard address"); + + // try to re-bind + try { + ch.bind(new InetSocketAddress(0)); + throw new RuntimeException("AlreadyBoundException expected"); + } catch (AlreadyBoundException x) { + } } - ch.close(); // check ClosedChannelException - ch = AsynchronousSocketChannel.open(); + AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); ch.close(); try { ch.bind(new InetSocketAddress(0)); @@ -118,109 +129,124 @@ public class Basic { static void testSocketOptions() throws Exception { System.out.println("-- socket options --"); - AsynchronousSocketChannel ch = AsynchronousSocketChannel.open() - .setOption(SO_RCVBUF, 128*1024) - .setOption(SO_SNDBUF, 128*1024) - .setOption(SO_REUSEADDR, true); - - // check SO_SNDBUF/SO_RCVBUF limits - int before, after; - before = ch.getOption(SO_SNDBUF); - after = ch.setOption(SO_SNDBUF, Integer.MAX_VALUE).getOption(SO_SNDBUF); - if (after < before) - throw new RuntimeException("setOption caused SO_SNDBUF to decrease"); - before = ch.getOption(SO_RCVBUF); - after = ch.setOption(SO_RCVBUF, Integer.MAX_VALUE).getOption(SO_RCVBUF); - if (after < before) - throw new RuntimeException("setOption caused SO_RCVBUF to decrease"); - - ch.bind(new InetSocketAddress(0)); - - // default values - if ((Boolean)ch.getOption(SO_KEEPALIVE)) - throw new RuntimeException("Default of SO_KEEPALIVE should be 'false'"); - if ((Boolean)ch.getOption(TCP_NODELAY)) - throw new RuntimeException("Default of TCP_NODELAY should be 'false'"); - - // set and check - if (!(Boolean)ch.setOption(SO_KEEPALIVE, true).getOption(SO_KEEPALIVE)) - throw new RuntimeException("SO_KEEPALIVE did not change"); - if (!(Boolean)ch.setOption(TCP_NODELAY, true).getOption(TCP_NODELAY)) - throw new RuntimeException("SO_KEEPALIVE did not change"); - - // read others (can't check as actual value is implementation dependent) - ch.getOption(SO_RCVBUF); - ch.getOption(SO_SNDBUF); + try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { + ch.setOption(SO_RCVBUF, 128*1024) + .setOption(SO_SNDBUF, 128*1024) + .setOption(SO_REUSEADDR, true); + + // check SO_SNDBUF/SO_RCVBUF limits + int before, after; + before = ch.getOption(SO_SNDBUF); + after = ch.setOption(SO_SNDBUF, Integer.MAX_VALUE).getOption(SO_SNDBUF); + if (after < before) + throw new RuntimeException("setOption caused SO_SNDBUF to decrease"); + before = ch.getOption(SO_RCVBUF); + after = ch.setOption(SO_RCVBUF, Integer.MAX_VALUE).getOption(SO_RCVBUF); + if (after < before) + throw new RuntimeException("setOption caused SO_RCVBUF to decrease"); - ch.close(); + ch.bind(new InetSocketAddress(0)); + + // default values + if (ch.getOption(SO_KEEPALIVE)) + throw new RuntimeException("Default of SO_KEEPALIVE should be 'false'"); + if (ch.getOption(TCP_NODELAY)) + throw new RuntimeException("Default of TCP_NODELAY should be 'false'"); + + // set and check + if (!ch.setOption(SO_KEEPALIVE, true).getOption(SO_KEEPALIVE)) + throw new RuntimeException("SO_KEEPALIVE did not change"); + if (!ch.setOption(TCP_NODELAY, true).getOption(TCP_NODELAY)) + throw new RuntimeException("SO_KEEPALIVE did not change"); + + // read others (can't check as actual value is implementation dependent) + ch.getOption(SO_RCVBUF); + ch.getOption(SO_SNDBUF); + } } static void testConnect() throws Exception { System.out.println("-- connect --"); - Server server = new Server(); - AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - - // check local address - if (ch.getLocalAddress() == null) - throw new RuntimeException("Not bound to local address"); - - // check remote address - InetSocketAddress remote = (InetSocketAddress)ch.getRemoteAddress(); - if (remote.getPort() != server.address().getPort()) - throw new RuntimeException("Connected to unexpected port"); - if (!remote.getAddress().equals(server.address().getAddress())) - throw new RuntimeException("Connected to unexpected address"); + SocketAddress address; + + try (Server server = new Server()) { + address = server.address(); + + // connect to server and check local/remote addresses + try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { + ch.connect(address).get(); + // check local address + if (ch.getLocalAddress() == null) + throw new RuntimeException("Not bound to local address"); + + // check remote address + InetSocketAddress remote = (InetSocketAddress)ch.getRemoteAddress(); + if (remote.getPort() != server.address().getPort()) + throw new RuntimeException("Connected to unexpected port"); + if (!remote.getAddress().equals(server.address().getAddress())) + throw new RuntimeException("Connected to unexpected address"); + + // try to connect again + try { + ch.connect(server.address()).get(); + throw new RuntimeException("AlreadyConnectedException expected"); + } catch (AlreadyConnectedException x) { + } - // try to connect again - try { - ch.connect(server.address()).get(); - throw new RuntimeException("AlreadyConnectedException expected"); - } catch (AlreadyConnectedException x) { - } - ch.close(); + // clean-up + server.accept().close(); + } - // check that connect fails with ClosedChannelException) - ch = AsynchronousSocketChannel.open(); - ch.close(); - try { - ch.connect(server.address()).get(); - throw new RuntimeException("ExecutionException expected"); - } catch (ExecutionException x) { - if (!(x.getCause() instanceof ClosedChannelException)) - throw new RuntimeException("Cause of ClosedChannelException expected"); - } - final AtomicReference connectException = - new AtomicReference(); - ch.connect(server.address(), (Void)null, new CompletionHandler() { - public void completed(Void result, Void att) { + // check that connect fails with ClosedChannelException + AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.close(); + try { + ch.connect(server.address()).get(); + throw new RuntimeException("ExecutionException expected"); + } catch (ExecutionException x) { + if (!(x.getCause() instanceof ClosedChannelException)) + throw new RuntimeException("Cause of ClosedChannelException expected"); } - public void failed(Throwable exc, Void att) { - connectException.set(exc); + final AtomicReference connectException = new AtomicReference<>(); + ch.connect(server.address(), (Void)null, new CompletionHandler() { + public void completed(Void result, Void att) { + } + public void failed(Throwable exc, Void att) { + connectException.set(exc); + } + }); + while (connectException.get() == null) { + Thread.sleep(100); } - }); - while (connectException.get() == null) { - Thread.sleep(100); + if (!(connectException.get() instanceof ClosedChannelException)) + throw new RuntimeException("ClosedChannelException expected"); } - if (!(connectException.get() instanceof ClosedChannelException)) - throw new RuntimeException("ClosedChannelException expected"); - - System.out.println("-- connect to non-existent host --"); // test that failure to connect closes the channel - ch = AsynchronousSocketChannel.open(); - try { - ch.connect(genSocketAddress()).get(); - } catch (ExecutionException x) { - // failed to establish connection - if (ch.isOpen()) - throw new RuntimeException("Channel should be closed"); - } finally { - ch.close(); + try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { + try { + ch.connect(address).get(); + } catch (ExecutionException x) { + // failed to establish connection + if (ch.isOpen()) + throw new RuntimeException("Channel should be closed"); + } } - server.close(); + // repeat test by connecting to a (probably) non-existent host. This + // improves the chance that the connect will not fail immediately. + if (!skipSlowConnectTest) { + try (AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) { + try { + ch.connect(genSocketAddress()).get(); + } catch (ExecutionException x) { + // failed to establish connection + if (ch.isOpen()) + throw new RuntimeException("Channel should be closed"); + } + } + } } static void testCloseWhenPending() throws Exception { @@ -249,466 +275,460 @@ public class Basic { System.out.println("-- asynchronous close when reading --"); - Server server = new Server(); - ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); + try (Server server = new Server()) { + ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); - ByteBuffer dst = ByteBuffer.allocateDirect(100); - Future result = ch.read(dst); + ByteBuffer dst = ByteBuffer.allocateDirect(100); + Future result = ch.read(dst); - // attempt a second read - should fail with ReadPendingException - ByteBuffer buf = ByteBuffer.allocateDirect(100); - try { - ch.read(buf); - throw new RuntimeException("ReadPendingException expected"); - } catch (ReadPendingException x) { - } + // attempt a second read - should fail with ReadPendingException + ByteBuffer buf = ByteBuffer.allocateDirect(100); + try { + ch.read(buf); + throw new RuntimeException("ReadPendingException expected"); + } catch (ReadPendingException x) { + } - // close channel (should cause initial read to complete) - ch.close(); + // close channel (should cause initial read to complete) + ch.close(); + server.accept().close(); - // check that AsynchronousCloseException is thrown - try { - result.get(); - throw new RuntimeException("Should not read"); - } catch (ExecutionException x) { - if (!(x.getCause() instanceof AsynchronousCloseException)) - throw new RuntimeException(x); - } + // check that AsynchronousCloseException is thrown + try { + result.get(); + throw new RuntimeException("Should not read"); + } catch (ExecutionException x) { + if (!(x.getCause() instanceof AsynchronousCloseException)) + throw new RuntimeException(x); + } - System.out.println("-- asynchronous close when writing --"); + System.out.println("-- asynchronous close when writing --"); - ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); + ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); - final AtomicReference writeException = - new AtomicReference(); + final AtomicReference writeException = + new AtomicReference(); - // write bytes to fill socket buffer - ch.write(genBuffer(), ch, new CompletionHandler() { - public void completed(Integer result, AsynchronousSocketChannel ch) { - ch.write(genBuffer(), ch, this); - } - public void failed(Throwable x, AsynchronousSocketChannel ch) { - writeException.set(x); - } - }); + // write bytes to fill socket buffer + ch.write(genBuffer(), ch, new CompletionHandler() { + public void completed(Integer result, AsynchronousSocketChannel ch) { + ch.write(genBuffer(), ch, this); + } + public void failed(Throwable x, AsynchronousSocketChannel ch) { + writeException.set(x); + } + }); - // give time for socket buffer to fill up. - Thread.sleep(5*1000); + // give time for socket buffer to fill up. + Thread.sleep(5*1000); - // attempt a concurrent write - should fail with WritePendingException - try { - ch.write(genBuffer()); - throw new RuntimeException("WritePendingException expected"); - } catch (WritePendingException x) { - } + // attempt a concurrent write - should fail with WritePendingException + try { + ch.write(genBuffer()); + throw new RuntimeException("WritePendingException expected"); + } catch (WritePendingException x) { + } - // close channel - should cause initial write to complete - ch.close(); + // close channel - should cause initial write to complete + ch.close(); + server.accept().close(); - // wait for exception - while (writeException.get() == null) { - Thread.sleep(100); + // wait for exception + while (writeException.get() == null) { + Thread.sleep(100); + } + if (!(writeException.get() instanceof AsynchronousCloseException)) + throw new RuntimeException("AsynchronousCloseException expected"); } - if (!(writeException.get() instanceof AsynchronousCloseException)) - throw new RuntimeException("AsynchronousCloseException expected"); - - server.close(); } static void testCancel() throws Exception { System.out.println("-- cancel --"); - Server server = new Server(); - - for (int i=0; i<2; i++) { - boolean mayInterruptIfRunning = (i == 0) ? false : true; - - // establish loopback connection - AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - SocketChannel peer = server.accept(); - - // start read operation - ByteBuffer buf = ByteBuffer.allocate(1); - Future res = ch.read(buf); - - // cancel operation - boolean cancelled = res.cancel(mayInterruptIfRunning); + try (Server server = new Server()) { + for (int i=0; i<2; i++) { + boolean mayInterruptIfRunning = (i == 0) ? false : true; + + // establish loopback connection + AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); + SocketChannel peer = server.accept(); + + // start read operation + ByteBuffer buf = ByteBuffer.allocate(1); + Future res = ch.read(buf); + + // cancel operation + boolean cancelled = res.cancel(mayInterruptIfRunning); + + // check post-conditions + if (!res.isDone()) + throw new RuntimeException("isDone should return true"); + if (res.isCancelled() != cancelled) + throw new RuntimeException("isCancelled not consistent"); + try { + res.get(); + throw new RuntimeException("CancellationException expected"); + } catch (CancellationException x) { + } + try { + res.get(1, TimeUnit.SECONDS); + throw new RuntimeException("CancellationException expected"); + } catch (CancellationException x) { + } - // check post-conditions - if (!res.isDone()) - throw new RuntimeException("isDone should return true"); - if (res.isCancelled() != cancelled) - throw new RuntimeException("isCancelled not consistent"); - try { - res.get(); - throw new RuntimeException("CancellationException expected"); - } catch (CancellationException x) { - } - try { - res.get(1, TimeUnit.SECONDS); - throw new RuntimeException("CancellationException expected"); - } catch (CancellationException x) { - } + // check that the cancel doesn't impact writing to the channel + if (!mayInterruptIfRunning) { + buf = ByteBuffer.wrap("a".getBytes()); + ch.write(buf).get(); + } - // check that the cancel doesn't impact writing to the channel - if (!mayInterruptIfRunning) { - buf = ByteBuffer.wrap("a".getBytes()); - ch.write(buf).get(); + ch.close(); + peer.close(); } - - ch.close(); - peer.close(); } - - server.close(); } static void testRead1() throws Exception { System.out.println("-- read (1) --"); - Server server = new Server(); - final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - - // read with 0 bytes remaining should complete immediately - ByteBuffer buf = ByteBuffer.allocate(1); - buf.put((byte)0); - int n = ch.read(buf).get(); - if (n != 0) - throw new RuntimeException("0 expected"); - - // write bytes and close connection - SocketChannel sc = server.accept(); - ByteBuffer src = genBuffer(); - sc.setOption(StandardSocketOptions.SO_SNDBUF, src.remaining()); - while (src.hasRemaining()) - sc.write(src); - sc.close(); - - // reads should complete immediately - final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); - final CountDownLatch latch = new CountDownLatch(1); - ch.read(dst, (Void)null, new CompletionHandler() { - public void completed(Integer result, Void att) { - int n = result; - if (n > 0) { - ch.read(dst, (Void)null, this); - } else { - latch.countDown(); - } - } - public void failed(Throwable exc, Void att) { + try (Server server = new Server()) { + final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); + + // read with 0 bytes remaining should complete immediately + ByteBuffer buf = ByteBuffer.allocate(1); + buf.put((byte)0); + int n = ch.read(buf).get(); + if (n != 0) + throw new RuntimeException("0 expected"); + + // write bytes and close connection + ByteBuffer src = genBuffer(); + try (SocketChannel sc = server.accept()) { + sc.setOption(SO_SNDBUF, src.remaining()); + while (src.hasRemaining()) + sc.write(src); } - }); - latch.await(); + // reads should complete immediately + final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); + final CountDownLatch latch = new CountDownLatch(1); + ch.read(dst, (Void)null, new CompletionHandler() { + public void completed(Integer result, Void att) { + int n = result; + if (n > 0) { + ch.read(dst, (Void)null, this); + } else { + latch.countDown(); + } + } + public void failed(Throwable exc, Void att) { + } + }); - // check buffers - src.flip(); - dst.flip(); - if (!src.equals(dst)) { - throw new RuntimeException("Contents differ"); - } + latch.await(); - // close channel - ch.close(); + // check buffers + src.flip(); + dst.flip(); + if (!src.equals(dst)) { + throw new RuntimeException("Contents differ"); + } - // check read fails with ClosedChannelException - try { - ch.read(dst).get(); - throw new RuntimeException("ExecutionException expected"); - } catch (ExecutionException x) { - if (!(x.getCause() instanceof ClosedChannelException)) - throw new RuntimeException("Cause of ClosedChannelException expected"); - } + // close channel + ch.close(); - server.close(); + // check read fails with ClosedChannelException + try { + ch.read(dst).get(); + throw new RuntimeException("ExecutionException expected"); + } catch (ExecutionException x) { + if (!(x.getCause() instanceof ClosedChannelException)) + throw new RuntimeException("Cause of ClosedChannelException expected"); + } + } } static void testRead2() throws Exception { System.out.println("-- read (2) --"); - Server server = new Server(); - - final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - SocketChannel sc = server.accept(); - - ByteBuffer src = genBuffer(); - - // read until the buffer is full - final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity()); - final CountDownLatch latch = new CountDownLatch(1); - ch.read(dst, (Void)null, new CompletionHandler() { - public void completed(Integer result, Void att) { - if (dst.hasRemaining()) { - ch.read(dst, (Void)null, this); - } else { - latch.countDown(); + try (Server server = new Server()) { + final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); + SocketChannel sc = server.accept(); + + ByteBuffer src = genBuffer(); + + // read until the buffer is full + final ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity()); + final CountDownLatch latch = new CountDownLatch(1); + ch.read(dst, (Void)null, new CompletionHandler() { + public void completed(Integer result, Void att) { + if (dst.hasRemaining()) { + ch.read(dst, (Void)null, this); + } else { + latch.countDown(); + } } + public void failed(Throwable exc, Void att) { + } + }); + + // trickle the writing + do { + int rem = src.remaining(); + int size = (rem <= 100) ? rem : 50 + rand.nextInt(rem - 100); + ByteBuffer buf = ByteBuffer.allocate(size); + for (int i=0; i() { - public void completed(Long result, Void att) { - long n = result; - if (n <= 0) - throw new RuntimeException("No bytes read"); - l1.countDown(); - } - public void failed(Throwable exc, Void att) { - } - }); + // scattering read that completes ascynhronously + final CountDownLatch l1 = new CountDownLatch(1); + ch.read(dsts, 0, dsts.length, 0L, TimeUnit.SECONDS, (Void)null, + new CompletionHandler() { + public void completed(Long result, Void att) { + long n = result; + if (n <= 0) + throw new RuntimeException("No bytes read"); + l1.countDown(); + } + public void failed(Throwable exc, Void att) { + } + }); - // write some bytes - sc.write(genBuffer()); + // write some bytes + sc.write(genBuffer()); - // read should now complete - l1.await(); + // read should now complete + l1.await(); - // write more bytes - sc.write(genBuffer()); + // write more bytes + sc.write(genBuffer()); - // read should complete immediately - for (int i=0; i() { - public void completed(Long result, Void att) { - long n = result; - if (n <= 0) - throw new RuntimeException("No bytes read"); - l2.countDown(); - } - public void failed(Throwable exc, Void att) { - } - }); - l2.await(); + final CountDownLatch l2 = new CountDownLatch(1); + ch.read(dsts, 0, dsts.length, 0L, TimeUnit.SECONDS, (Void)null, + new CompletionHandler() { + public void completed(Long result, Void att) { + long n = result; + if (n <= 0) + throw new RuntimeException("No bytes read"); + l2.countDown(); + } + public void failed(Throwable exc, Void att) { + } + }); + l2.await(); - ch.close(); - sc.close(); - server.close(); + ch.close(); + sc.close(); + } } static void testWrite1() throws Exception { System.out.println("-- write (1) --"); - Server server = new Server(); - final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - SocketChannel sc = server.accept(); - - // write with 0 bytes remaining should complete immediately - ByteBuffer buf = ByteBuffer.allocate(1); - buf.put((byte)0); - int n = ch.write(buf).get(); - if (n != 0) - throw new RuntimeException("0 expected"); - - // write all bytes and close connection when done - final ByteBuffer src = genBuffer(); - ch.write(src, (Void)null, new CompletionHandler() { - public void completed(Integer result, Void att) { - if (src.hasRemaining()) { - ch.write(src, (Void)null, this); - } else { - try { - ch.close(); - } catch (IOException ignore) { } + try (Server server = new Server()) { + final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); + SocketChannel sc = server.accept(); + + // write with 0 bytes remaining should complete immediately + ByteBuffer buf = ByteBuffer.allocate(1); + buf.put((byte)0); + int n = ch.write(buf).get(); + if (n != 0) + throw new RuntimeException("0 expected"); + + // write all bytes and close connection when done + final ByteBuffer src = genBuffer(); + ch.write(src, (Void)null, new CompletionHandler() { + public void completed(Integer result, Void att) { + if (src.hasRemaining()) { + ch.write(src, (Void)null, this); + } else { + try { + ch.close(); + } catch (IOException ignore) { } + } } + public void failed(Throwable exc, Void att) { + } + }); + + // read to EOF or buffer full + ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); + do { + n = sc.read(dst); + } while (n > 0); + sc.close(); + + // check buffers + src.flip(); + dst.flip(); + if (!src.equals(dst)) { + throw new RuntimeException("Contents differ"); } - public void failed(Throwable exc, Void att) { - } - }); - - // read to EOF or buffer full - ByteBuffer dst = ByteBuffer.allocateDirect(src.capacity() + 100); - do { - n = sc.read(dst); - } while (n > 0); - sc.close(); - - // check buffers - src.flip(); - dst.flip(); - if (!src.equals(dst)) { - throw new RuntimeException("Contents differ"); - } - // check write fails with ClosedChannelException - try { - ch.read(dst).get(); - throw new RuntimeException("ExecutionException expected"); - } catch (ExecutionException x) { - if (!(x.getCause() instanceof ClosedChannelException)) - throw new RuntimeException("Cause of ClosedChannelException expected"); + // check write fails with ClosedChannelException + try { + ch.read(dst).get(); + throw new RuntimeException("ExecutionException expected"); + } catch (ExecutionException x) { + if (!(x.getCause() instanceof ClosedChannelException)) + throw new RuntimeException("Cause of ClosedChannelException expected"); + } } - - server.close(); } // exercise gathering write static void testWrite2() throws Exception { System.out.println("-- write (2) --"); - Server server = new Server(); - final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - SocketChannel sc = server.accept(); - - // number of bytes written - final AtomicLong bytesWritten = new AtomicLong(0); - - // write buffers (should complete immediately) - ByteBuffer[] srcs = genBuffers(1); - final CountDownLatch l1 = new CountDownLatch(1); - ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, - new CompletionHandler() { - public void completed(Long result, Void att) { - long n = result; - if (n <= 0) - throw new RuntimeException("No bytes read"); - bytesWritten.addAndGet(n); - l1.countDown(); - } - public void failed(Throwable exc, Void att) { - } - }); - l1.await(); - - // set to true to signal that no more buffers should be written - final AtomicBoolean continueWriting = new AtomicBoolean(true); - - // write until socket buffer is full so as to create the conditions - // for when a write does not complete immediately - srcs = genBuffers(1); - ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, - new CompletionHandler() { - public void completed(Long result, Void att) { - long n = result; - if (n <= 0) - throw new RuntimeException("No bytes written"); - bytesWritten.addAndGet(n); - if (continueWriting.get()) { - ByteBuffer[] srcs = genBuffers(8); - ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, - (Void)null, this); + try (Server server = new Server()) { + final AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); + SocketChannel sc = server.accept(); + + // number of bytes written + final AtomicLong bytesWritten = new AtomicLong(0); + + // write buffers (should complete immediately) + ByteBuffer[] srcs = genBuffers(1); + final CountDownLatch l1 = new CountDownLatch(1); + ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, + new CompletionHandler() { + public void completed(Long result, Void att) { + long n = result; + if (n <= 0) + throw new RuntimeException("No bytes read"); + bytesWritten.addAndGet(n); + l1.countDown(); } - } - public void failed(Throwable exc, Void att) { - } - }); + public void failed(Throwable exc, Void att) { + } + }); + l1.await(); + + // set to true to signal that no more buffers should be written + final AtomicBoolean continueWriting = new AtomicBoolean(true); + + // write until socket buffer is full so as to create the conditions + // for when a write does not complete immediately + srcs = genBuffers(1); + ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, (Void)null, + new CompletionHandler() { + public void completed(Long result, Void att) { + long n = result; + if (n <= 0) + throw new RuntimeException("No bytes written"); + bytesWritten.addAndGet(n); + if (continueWriting.get()) { + ByteBuffer[] srcs = genBuffers(8); + ch.write(srcs, 0, srcs.length, 0L, TimeUnit.SECONDS, + (Void)null, this); + } + } + public void failed(Throwable exc, Void att) { + } + }); - // give time for socket buffer to fill up. - Thread.sleep(5*1000); + // give time for socket buffer to fill up. + Thread.sleep(5*1000); - // signal handler to stop further writing - continueWriting.set(false); + // signal handler to stop further writing + continueWriting.set(false); - // read until done - ByteBuffer buf = ByteBuffer.allocateDirect(4096); - long total = 0L; - do { - int n = sc.read(buf); - if (n <= 0) - throw new RuntimeException("No bytes read"); - buf.rewind(); - total += n; - } while (total < bytesWritten.get()); + // read until done + ByteBuffer buf = ByteBuffer.allocateDirect(4096); + long total = 0L; + do { + int n = sc.read(buf); + if (n <= 0) + throw new RuntimeException("No bytes read"); + buf.rewind(); + total += n; + } while (total < bytesWritten.get()); - ch.close(); - sc.close(); - server.close(); + ch.close(); + sc.close(); + } } static void testShutdown() throws Exception { System.out.println("-- shutdown--"); - Server server = new Server(); - AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - SocketChannel sc = server.accept(); - - ByteBuffer buf = ByteBuffer.allocateDirect(1000); - int n; - - // check read - ch.shutdownInput(); - n = ch.read(buf).get(); - if (n != -1) - throw new RuntimeException("-1 expected"); - // check full with full buffer - buf.put(new byte[100]); - n = ch.read(buf).get(); - if (n != -1) - throw new RuntimeException("-1 expected"); - - // check write - ch.shutdownOutput(); - try { - ch.write(buf).get(); - throw new RuntimeException("ClosedChannelException expected"); - } catch (ExecutionException x) { - if (!(x.getCause() instanceof ClosedChannelException)) - throw new RuntimeException("ClosedChannelException expected"); + try (Server server = new Server(); + AsynchronousSocketChannel ch = AsynchronousSocketChannel.open()) + { + ch.connect(server.address()).get(); + try (SocketChannel peer = server.accept()) { + ByteBuffer buf = ByteBuffer.allocateDirect(1000); + int n; + + // check read + ch.shutdownInput(); + n = ch.read(buf).get(); + if (n != -1) + throw new RuntimeException("-1 expected"); + // check full with full buffer + buf.put(new byte[100]); + n = ch.read(buf).get(); + if (n != -1) + throw new RuntimeException("-1 expected"); + + // check write + ch.shutdownOutput(); + try { + ch.write(buf).get(); + throw new RuntimeException("ClosedChannelException expected"); + } catch (ExecutionException x) { + if (!(x.getCause() instanceof ClosedChannelException)) + throw new RuntimeException("ClosedChannelException expected"); + } + } } - - sc.close(); - ch.close(); - server.close(); } static void testTimeout() throws Exception { @@ -720,88 +740,88 @@ public class Basic { } static void testTimeout(final long timeout, final TimeUnit unit) throws Exception { - Server server = new Server(); - AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); - ch.connect(server.address()).get(); - - ByteBuffer dst = ByteBuffer.allocate(512); + try (Server server = new Server()) { + AsynchronousSocketChannel ch = AsynchronousSocketChannel.open(); + ch.connect(server.address()).get(); - final AtomicReference readException = new AtomicReference(); + ByteBuffer dst = ByteBuffer.allocate(512); - // this read should timeout if value is > 0 - ch.read(dst, timeout, unit, null, new CompletionHandler() { - public void completed(Integer result, Void att) { - readException.set(new RuntimeException("Should not complete")); - } - public void failed(Throwable exc, Void att) { - readException.set(exc); - } - }); - if (timeout > 0L) { - // wait for exception - while (readException.get() == null) { - Thread.sleep(100); - } - if (!(readException.get() instanceof InterruptedByTimeoutException)) - throw new RuntimeException("InterruptedByTimeoutException expected"); + final AtomicReference readException = new AtomicReference(); - // after a timeout then further reading should throw unspecified runtime exception - boolean exceptionThrown = false; - try { - ch.read(dst); - } catch (RuntimeException x) { - exceptionThrown = true; + // this read should timeout if value is > 0 + ch.read(dst, timeout, unit, null, new CompletionHandler() { + public void completed(Integer result, Void att) { + readException.set(new RuntimeException("Should not complete")); + } + public void failed(Throwable exc, Void att) { + readException.set(exc); + } + }); + if (timeout > 0L) { + // wait for exception + while (readException.get() == null) { + Thread.sleep(100); + } + if (!(readException.get() instanceof InterruptedByTimeoutException)) + throw new RuntimeException("InterruptedByTimeoutException expected"); + + // after a timeout then further reading should throw unspecified runtime exception + boolean exceptionThrown = false; + try { + ch.read(dst); + } catch (RuntimeException x) { + exceptionThrown = true; + } + if (!exceptionThrown) + throw new RuntimeException("RuntimeException expected after timeout."); + } else { + Thread.sleep(1000); + Throwable exc = readException.get(); + if (exc != null) + throw new RuntimeException(exc); } - if (!exceptionThrown) - throw new RuntimeException("RuntimeException expected after timeout."); - } else { - Thread.sleep(1000); - Throwable exc = readException.get(); - if (exc != null) - throw new RuntimeException(exc); - } - final AtomicReference writeException = new AtomicReference(); + final AtomicReference writeException = new AtomicReference(); - // write bytes to fill socket buffer - ch.write(genBuffer(), timeout, unit, ch, - new CompletionHandler() - { - public void completed(Integer result, AsynchronousSocketChannel ch) { - ch.write(genBuffer(), timeout, unit, ch, this); - } - public void failed(Throwable exc, AsynchronousSocketChannel ch) { - writeException.set(exc); - } - }); - if (timeout > 0) { - // wait for exception - while (writeException.get() == null) { - Thread.sleep(100); + // write bytes to fill socket buffer + ch.write(genBuffer(), timeout, unit, ch, + new CompletionHandler() + { + public void completed(Integer result, AsynchronousSocketChannel ch) { + ch.write(genBuffer(), timeout, unit, ch, this); + } + public void failed(Throwable exc, AsynchronousSocketChannel ch) { + writeException.set(exc); + } + }); + if (timeout > 0) { + // wait for exception + while (writeException.get() == null) { + Thread.sleep(100); + } + if (!(writeException.get() instanceof InterruptedByTimeoutException)) + throw new RuntimeException("InterruptedByTimeoutException expected"); + + // after a timeout then further writing should throw unspecified runtime exception + boolean exceptionThrown = false; + try { + ch.write(genBuffer()); + } catch (RuntimeException x) { + exceptionThrown = true; + } + if (!exceptionThrown) + throw new RuntimeException("RuntimeException expected after timeout."); + } else { + Thread.sleep(1000); + Throwable exc = writeException.get(); + if (exc != null) + throw new RuntimeException(exc); } - if (!(writeException.get() instanceof InterruptedByTimeoutException)) - throw new RuntimeException("InterruptedByTimeoutException expected"); - // after a timeout then further writing should throw unspecified runtime exception - boolean exceptionThrown = false; - try { - ch.write(genBuffer()); - } catch (RuntimeException x) { - exceptionThrown = true; - } - if (!exceptionThrown) - throw new RuntimeException("RuntimeException expected after timeout."); - } else { - Thread.sleep(1000); - Throwable exc = writeException.get(); - if (exc != null) - throw new RuntimeException(exc); + // clean-up + server.accept().close(); + ch.close(); } - - // clean-up - server.accept().close(); - ch.close(); - server.close(); } // returns ByteBuffer with random bytes diff --git a/test/java/security/BasicPermission/PermClass.java b/test/java/security/BasicPermission/PermClass.java index bfbf99900c0511725e556f205b5060cf66870a2c..71bd33b4ee828779a43aab6c71241f6d3f18ea6b 100644 --- a/test/java/security/BasicPermission/PermClass.java +++ b/test/java/security/BasicPermission/PermClass.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -23,7 +23,7 @@ /* * @test - * @bug 4511601 + * @bug 4511601 7054918 * @summary BasicPermissionCollection does not set permClass * during deserialization */ @@ -55,59 +55,66 @@ public class PermClass { // read in a 1.2.1 BasicPermissionCollection File sFile = new File(dir, "PermClass.1.2.1"); - ObjectInputStream ois = new ObjectInputStream - (new FileInputStream(sFile)); - PermissionCollection pc = (PermissionCollection)ois.readObject(); - System.out.println("1.2.1 collection = " + pc); - - if (pc.implies(mp)) { - System.out.println("JDK 1.2.1 test passed"); - } else { - throw new Exception("JDK 1.2.1 test failed"); + try (FileInputStream fis = new FileInputStream(sFile); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("1.2.1 collection = " + pc); + + if (pc.implies(mp)) { + System.out.println("JDK 1.2.1 test passed"); + } else { + throw new Exception("JDK 1.2.1 test failed"); + } } // read in a 1.3.1 BasicPermissionCollection sFile = new File(dir, "PermClass.1.3.1"); - ois = new ObjectInputStream(new FileInputStream(sFile)); - pc = (PermissionCollection)ois.readObject(); - System.out.println("1.3.1 collection = " + pc); - - if (pc.implies(mp)) { - System.out.println("JDK 1.3.1 test passed"); - } else { - throw new Exception("JDK 1.3.1 test failed"); + try (FileInputStream fis = new FileInputStream(sFile); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("1.3.1 collection = " + pc); + + if (pc.implies(mp)) { + System.out.println("JDK 1.3.1 test passed"); + } else { + throw new Exception("JDK 1.3.1 test failed"); + } } // read in a 1.4 BasicPermissionCollection sFile = new File(dir, "PermClass.1.4"); - ois = new ObjectInputStream(new FileInputStream(sFile)); - pc = (PermissionCollection)ois.readObject(); - System.out.println("1.4 collection = " + pc); - - if (pc.implies(mp)) { - System.out.println("JDK 1.4 test 1 passed"); - } else { - throw new Exception("JDK 1.4 test 1 failed"); + try (FileInputStream fis = new FileInputStream(sFile); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("1.4 collection = " + pc); + + if (pc.implies(mp)) { + System.out.println("JDK 1.4 test 1 passed"); + } else { + throw new Exception("JDK 1.4 test 1 failed"); + } } // write out current BasicPermissionCollection PermissionCollection bpc = mp.newPermissionCollection(); bpc.add(mp); sFile = new File(dir, "PermClass.current"); - ObjectOutputStream oos = new ObjectOutputStream - (new FileOutputStream("PermClass.current")); - oos.writeObject(bpc); - oos.close(); + try (FileOutputStream fos = new FileOutputStream("PermClass.current"); + ObjectOutputStream oos = new ObjectOutputStream(fos)) { + oos.writeObject(bpc); + } // read in current BasicPermissionCollection - ois = new ObjectInputStream(new FileInputStream("PermClass.current")); - pc = (PermissionCollection)ois.readObject(); - System.out.println("current collection = " + pc); - - if (pc.implies(mp)) { - System.out.println("JDK 1.4 test 2 passed"); - } else { - throw new Exception("JDK 1.4 test 2 failed"); + try (FileInputStream fis = new FileInputStream("PermClass.current"); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("current collection = " + pc); + + if (pc.implies(mp)) { + System.out.println("JDK 1.4 test 2 passed"); + } else { + throw new Exception("JDK 1.4 test 2 failed"); + } } } } diff --git a/test/java/security/BasicPermission/SerialVersion.java b/test/java/security/BasicPermission/SerialVersion.java index 4ef0757497417b5bbf36a7fa813e5fa6e8878ad2..8c134c8688deead3ea18ec7a27c93bd95c5e49d6 100644 --- a/test/java/security/BasicPermission/SerialVersion.java +++ b/test/java/security/BasicPermission/SerialVersion.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, 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 @@ -23,7 +23,7 @@ /* * @test - * @bug 4502729 + * @bug 4502729 7054918 * @summary BasicPermissionCollection serial version UID incorrect */ @@ -36,40 +36,44 @@ public class SerialVersion { String dir = System.getProperty("test.src"); File sFile = new File (dir,"SerialVersion.1.2.1"); // read in a 1.2.1 BasicPermissionCollection - ObjectInputStream ois = new ObjectInputStream - (new FileInputStream(sFile)); - PermissionCollection pc = (PermissionCollection)ois.readObject(); - System.out.println("1.2.1 collection = " + pc); + try (FileInputStream fis = new FileInputStream(sFile); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("1.2.1 collection = " + pc); + } // read in a 1.3.1 BasicPermissionCollection sFile = new File (dir,"SerialVersion.1.3.1"); - ois = new ObjectInputStream - (new FileInputStream(sFile)); - pc = (PermissionCollection)ois.readObject(); - System.out.println("1.3.1 collection = " + pc); + try (FileInputStream fis = new FileInputStream(sFile); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("1.3.1 collection = " + pc); + } // read in a 1.4 BasicPermissionCollection sFile = new File (dir,"SerialVersion.1.4"); - ois = new ObjectInputStream - (new FileInputStream(sFile)); - pc = (PermissionCollection)ois.readObject(); - System.out.println("1.4 collection = " + pc); + try (FileInputStream fis = new FileInputStream(sFile); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("1.4 collection = " + pc); + } // write out current BasicPermissionCollection MyPermission mp = new MyPermission("SerialVersionTest"); PermissionCollection bpc = mp.newPermissionCollection(); sFile = new File (dir,"SerialVersion.current"); - ObjectOutputStream oos = new ObjectOutputStream - (new FileOutputStream("SerialVersion.current")); - oos.writeObject(bpc); - oos.close(); + try (FileOutputStream fos = new FileOutputStream("SerialVersion.current"); + ObjectOutputStream oos = new ObjectOutputStream(fos)) { + oos.writeObject(bpc); + } // read in current BasicPermissionCollection - ois = new ObjectInputStream - (new FileInputStream("SerialVersion.current")); - pc = (PermissionCollection)ois.readObject(); - System.out.println("current collection = " + pc); + try (FileInputStream fis = new FileInputStream("SerialVersion.current"); + ObjectInputStream ois = new ObjectInputStream(fis)) { + PermissionCollection pc = (PermissionCollection)ois.readObject(); + System.out.println("current collection = " + pc); + } } } diff --git a/test/java/security/KeyFactory/Failover.java b/test/java/security/KeyFactory/Failover.java index 4f27e9602fe5bfb729e31f44fd3c0014286ccdf6..1bb9dff64f7046a40ab0f23672044345c51f2f7a 100644 --- a/test/java/security/KeyFactory/Failover.java +++ b/test/java/security/KeyFactory/Failover.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,8 @@ /** * @test - * @bug 4894125 + * @bug 4894125 7054918 + * @library ../testlibrary * @summary test that failover for KeyFactory works * @author Andreas Sterbenz */ @@ -37,6 +38,15 @@ import java.security.spec.*; public class Failover { public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { Security.insertProviderAt(new ProviderFail(), 1); Security.addProvider(new ProviderPass()); System.out.println(Arrays.asList(Security.getProviders())); diff --git a/test/java/security/KeyPairGenerator/Failover.java b/test/java/security/KeyPairGenerator/Failover.java index adb32ae71e7827588189503966cba5448262ced5..7366a7dd3f1417252608cc14fb39a596ac67570f 100644 --- a/test/java/security/KeyPairGenerator/Failover.java +++ b/test/java/security/KeyPairGenerator/Failover.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,8 @@ /** * @test - * @bug 4894125 + * @bug 4894125 7054918 + * @library ../testlibrary * @summary test that failover for KeyPairGenerator works * @author Andreas Sterbenz */ @@ -37,6 +38,15 @@ import java.security.spec.*; public class Failover { public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { Security.insertProviderAt(new ProviderFail(), 1); Security.addProvider(new ProviderPass()); System.out.println(Arrays.asList(Security.getProviders())); diff --git a/test/java/security/Policy/GetPermissions/JarURL.java b/test/java/security/Policy/GetPermissions/JarURL.java new file mode 100644 index 0000000000000000000000000000000000000000..1d68225a6ec88df3be1d848609e90bb4239173e8 --- /dev/null +++ b/test/java/security/Policy/GetPermissions/JarURL.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7044443 7050329 + * @run main/othervm/policy=JarURL.policy JarURL + * @summary Permissions resolved incorrectly for jar protocol + */ + +import java.net.URL; +import java.io.File; +import java.security.AllPermission; +import java.security.CodeSource; +import java.security.PermissionCollection; +import java.security.Policy; +import java.security.cert.Certificate; + +public class JarURL { + + public static void main(String[] args) throws Exception { + String userDir = System.getProperty("user.dir"); + String jarURL = "jar:file:" + userDir + File.separator + "foo.jar!/"; + URL codeSourceURL = new URL(jarURL); + CodeSource cs = new CodeSource(codeSourceURL, new Certificate[0]); + PermissionCollection perms = Policy.getPolicy().getPermissions(cs); + if (!perms.implies(new AllPermission())) + throw new Exception("FAILED: " + codeSourceURL + + " not granted AllPermission"); + } +} diff --git a/test/java/security/Policy/GetPermissions/JarURL.policy b/test/java/security/Policy/GetPermissions/JarURL.policy new file mode 100644 index 0000000000000000000000000000000000000000..f568b91ea1aaf85d18b7dd973bd0170b5a18c0a2 --- /dev/null +++ b/test/java/security/Policy/GetPermissions/JarURL.policy @@ -0,0 +1,8 @@ +grant codeBase "file:${user.dir}/*" { + permission java.security.AllPermission; +}; + +grant { + permission java.util.PropertyPermission "user.dir", "read"; + permission java.security.SecurityPermission "getPolicy"; +}; diff --git a/test/java/security/Provider/ChangeProviders.java b/test/java/security/Provider/ChangeProviders.java index e373ede10bd491a5e62b60267d8c6673d9ee55b3..8bfec8b3418198577734ccc33d3a4c19ed666d23 100644 --- a/test/java/security/Provider/ChangeProviders.java +++ b/test/java/security/Provider/ChangeProviders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,8 @@ /* * @test - * @bug 4856968 + * @bug 4856968 7054918 + * @library ../testlibrary * @summary make sure add/insert/removeProvider() work correctly * @author Andreas Sterbenz */ @@ -43,6 +44,15 @@ public class ChangeProviders extends Provider { } public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { long start = System.currentTimeMillis(); Provider p = new ChangeProviders(); diff --git a/test/java/security/Provider/GetInstance.java b/test/java/security/Provider/GetInstance.java index 362ee49ef1d7703983bb3ba6fd63d51dda160323..7440b99bf394e956e57035462d25ccdfb1dd85e8 100644 --- a/test/java/security/Provider/GetInstance.java +++ b/test/java/security/Provider/GetInstance.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,8 @@ /* * @test - * @bug 4856968 + * @bug 4856968 7054918 + * @library ../testlibrary * @summary make sure getInstance() works correctly, including failover * and delayed provider selection for Signatures * @author Andreas Sterbenz @@ -43,6 +44,15 @@ public class GetInstance { } public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { long start = System.currentTimeMillis(); Provider foo = new FooProvider(); diff --git a/test/java/security/Provider/RemoveProvider.java b/test/java/security/Provider/RemoveProvider.java index 1628dada9a66a5d1a20816baa23953bb07d3c0fa..6b1bb0d323ec3591d0d0e13f165bd61e2cd1afd2 100644 --- a/test/java/security/Provider/RemoveProvider.java +++ b/test/java/security/Provider/RemoveProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2011, 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 @@ -23,7 +23,8 @@ /* * @test - * @bug 4190873 + * @bug 4190873 7054918 + * @library ../testlibrary * @summary Make sure provider instance can be removed from list of registered * providers, and "entrySet", "keySet", and "values" methods don't loop * indefinitely. @@ -34,6 +35,15 @@ import java.util.*; public class RemoveProvider { public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { // Add provider 1 Provider p1 = new MyProvider("name1",1,""); diff --git a/test/java/security/Provider/Turkish.java b/test/java/security/Provider/Turkish.java index 071c58f224bad81e1679bca321131d789659d5cd..21ac4136b56e11c274fd47a3f4b912f59518c194 100644 --- a/test/java/security/Provider/Turkish.java +++ b/test/java/security/Provider/Turkish.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, 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 @@ -23,9 +23,8 @@ /** * @test - * @bug 6220064 + * @bug 6220064 7054918 * @summary make sure everything works ok in the Turkish local (dotted/dotless i problem) - * @run main/othervm Turkish * @author Andreas Sterbenz */ @@ -41,54 +40,59 @@ public class Turkish { Provider p1 = new TProvider("T1"); System.out.println(p1.getServices()); // trigger service parsing - Locale.setDefault(new Locale("tr", "TR")); + Locale loc = Locale.getDefault(); + try { + Locale.setDefault(new Locale("tr", "TR")); - Provider p2 = new TProvider("T2"); - System.out.println(p2.getServices()); // trigger service parsing + Provider p2 = new TProvider("T2"); + System.out.println(p2.getServices()); // trigger service parsing - System.out.println(Signature.getInstance("MD5withRSA")); - System.out.println(Signature.getInstance("md5withrsa")); - System.out.println(Signature.getInstance("MD5WITHRSA")); - Service s1, s2; - s1 = p1.getService("Signature", "MD5withRSA"); - check(s1, null); - check(s1, p1.getService("Signature", "md5withrsa")); - check(s1, p1.getService("Signature", "MD5WITHRSA")); - check(s1, p1.getService("Signature", "MD5RSA")); - check(s1, p1.getService("Signature", "md5rsa")); - check(s1, p1.getService("Signature", "MD5rsa")); + System.out.println(Signature.getInstance("MD5withRSA")); + System.out.println(Signature.getInstance("md5withrsa")); + System.out.println(Signature.getInstance("MD5WITHRSA")); + Service s1, s2; + s1 = p1.getService("Signature", "MD5withRSA"); + check(s1, null); + check(s1, p1.getService("Signature", "md5withrsa")); + check(s1, p1.getService("Signature", "MD5WITHRSA")); + check(s1, p1.getService("Signature", "MD5RSA")); + check(s1, p1.getService("Signature", "md5rsa")); + check(s1, p1.getService("Signature", "MD5rsa")); - s1 = p1.getService("Signature", "SHAwithRSA"); - check(s1, null); - check(s1, p1.getService("Signature", "shawithrsa")); - check(s1, p1.getService("Signature", "SHAWITHRSA")); - check(s1, p1.getService("Signature", "SHARSA")); - check(s1, p1.getService("Signature", "sharsa")); - check(s1, p1.getService("Signature", "SHArsa")); - check(s1, p1.getService("Signature", "SHA1RSA")); - check(s1, p1.getService("Signature", "sha1rsa")); - check(s1, p1.getService("Signature", "SHA1rsa")); + s1 = p1.getService("Signature", "SHAwithRSA"); + check(s1, null); + check(s1, p1.getService("Signature", "shawithrsa")); + check(s1, p1.getService("Signature", "SHAWITHRSA")); + check(s1, p1.getService("Signature", "SHARSA")); + check(s1, p1.getService("Signature", "sharsa")); + check(s1, p1.getService("Signature", "SHArsa")); + check(s1, p1.getService("Signature", "SHA1RSA")); + check(s1, p1.getService("Signature", "sha1rsa")); + check(s1, p1.getService("Signature", "SHA1rsa")); - s1 = p2.getService("Signature", "MD5withRSA"); - check(s1, null); - check(s1, p2.getService("Signature", "md5withrsa")); - check(s1, p2.getService("Signature", "MD5WITHRSA")); - check(s1, p2.getService("Signature", "MD5RSA")); - check(s1, p2.getService("Signature", "md5rsa")); - check(s1, p2.getService("Signature", "MD5rsa")); + s1 = p2.getService("Signature", "MD5withRSA"); + check(s1, null); + check(s1, p2.getService("Signature", "md5withrsa")); + check(s1, p2.getService("Signature", "MD5WITHRSA")); + check(s1, p2.getService("Signature", "MD5RSA")); + check(s1, p2.getService("Signature", "md5rsa")); + check(s1, p2.getService("Signature", "MD5rsa")); - s1 = p2.getService("Signature", "SHAwithRSA"); - check(s1, null); - check(s1, p2.getService("Signature", "shawithrsa")); - check(s1, p2.getService("Signature", "SHAWITHRSA")); - check(s1, p2.getService("Signature", "SHARSA")); - check(s1, p2.getService("Signature", "sharsa")); - check(s1, p2.getService("Signature", "SHArsa")); - check(s1, p2.getService("Signature", "SHA1RSA")); - check(s1, p2.getService("Signature", "sha1rsa")); - check(s1, p2.getService("Signature", "SHA1rsa")); + s1 = p2.getService("Signature", "SHAwithRSA"); + check(s1, null); + check(s1, p2.getService("Signature", "shawithrsa")); + check(s1, p2.getService("Signature", "SHAWITHRSA")); + check(s1, p2.getService("Signature", "SHARSA")); + check(s1, p2.getService("Signature", "sharsa")); + check(s1, p2.getService("Signature", "SHArsa")); + check(s1, p2.getService("Signature", "SHA1RSA")); + check(s1, p2.getService("Signature", "sha1rsa")); + check(s1, p2.getService("Signature", "SHA1rsa")); - System.out.println("OK"); + System.out.println("OK"); + } finally { + Locale.setDefault(loc); + } } private static void check(Service s1, Service s2) throws Exception { diff --git a/test/java/security/SecureClassLoader/DefineClassByteBuffer.java b/test/java/security/SecureClassLoader/DefineClassByteBuffer.java index 62a9b520dfbaff42c0e33a993b672406a45d3f17..730318601540cd6e53710aa4e0b6051a5a3a7b48 100644 --- a/test/java/security/SecureClassLoader/DefineClassByteBuffer.java +++ b/test/java/security/SecureClassLoader/DefineClassByteBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,7 @@ /* * @test - * @bug 4894899 + * @bug 4894899 7054428 * @summary Test various cases of passing java.nio.ByteBuffers * to defineClass(). * @@ -46,6 +46,17 @@ public class DefineClassByteBuffer { } public static void main(String arg[]) throws Exception { + + // Rename the compiled TestClass.class file to something else, + // otherwise it would be loaded by the parent class loader and + // DummyClassLoader will never be used, especially in /othervm mode. + + File oldFile = new File(System.getProperty("test.classes", "."), + "TestClass.class"); + File newFile = new File(System.getProperty("test.classes", "."), + "CLAZZ"); + oldFile.renameTo(newFile); + ClassLoader[] cls = new ClassLoader[DummyClassLoader.MAX_TYPE]; for (int i = 0; i < cls.length; i++) { cls[i] = new DummyClassLoader(i); @@ -54,7 +65,11 @@ public class DefineClassByteBuffer { /* Create several instances of the class using different classloaders, which are using different types of ByteBuffer. */ for (int i = 0; i < cls.length; i++) { - test(cls[i]); + test(cls[i]); + } + + if (DummyClassLoader.count != cls.length) { + throw new Exception("DummyClassLoader not always used"); } } @@ -75,6 +90,8 @@ public class DefineClassByteBuffer { int loaderType; + static int count = 0; + DummyClassLoader(int loaderType) { this.loaderType = loaderType; } @@ -84,10 +101,11 @@ public class DefineClassByteBuffer { static ByteBuffer readClassFile(String name) { try { File f = new File(System.getProperty("test.classes", "."), - name); - FileInputStream fin = new FileInputStream(f); - FileChannel fc = fin.getChannel(); - return fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); + "CLAZZ"); + try (FileInputStream fin = new FileInputStream(f); + FileChannel fc = fin.getChannel()) { + return fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); + } } catch (FileNotFoundException e) { throw new RuntimeException("Can't open file: " + name, e); } catch (IOException e) { @@ -101,12 +119,16 @@ public class DefineClassByteBuffer { buffers. */ buffers[MAPPED_BUFFER] = readClassFile(CLASS_NAME + ".class"); byte[] array = new byte[buffers[MAPPED_BUFFER].limit()]; + buffers[MAPPED_BUFFER].get(array); + buffers[MAPPED_BUFFER].flip(); buffers[DIRECT_BUFFER] = ByteBuffer.allocateDirect(array.length); buffers[DIRECT_BUFFER].put(array); + buffers[DIRECT_BUFFER].flip(); buffers[ARRAY_BUFFER] = ByteBuffer.allocate(array.length); buffers[ARRAY_BUFFER].put(array); + buffers[ARRAY_BUFFER].flip(); buffers[WRAPPED_BUFFER] = ByteBuffer.wrap(array); @@ -121,6 +143,7 @@ public class DefineClassByteBuffer { public Class findClass(String name) { CodeSource cs = null; + count++; return defineClass(name, buffers[loaderType], cs); } } /* DummyClassLoader */ diff --git a/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh b/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh index e067300ba4fd54156afb0e9bebe6eba25a640f30..bf25695c4df2a9127a0dfa9b8216e8ebe71bec5e 100644 --- a/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh +++ b/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2011, 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 @@ -58,6 +58,10 @@ case "$OS" in PATHSEP=":" FILESEP="/" ;; + CYGWIN* ) + PATHSEP=";" + FILESEP="/" + ;; Windows* ) PATHSEP=";" FILESEP="\\" diff --git a/test/java/security/Security/NoInstalledProviders.java b/test/java/security/Security/NoInstalledProviders.java index f586df6e7bb52fb9c3230e57b4ef11a006111717..551f1896ecbe502666b853dc58d0ae9ce1b40111 100644 --- a/test/java/security/Security/NoInstalledProviders.java +++ b/test/java/security/Security/NoInstalledProviders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -23,15 +23,26 @@ /* * @test - * @bug 4273454 + * @bug 4273454 7054918 7052537 + * @library ../testlibrary * @summary Make sure getProviders(filter) doesn't throw NPE + * @run main/othervm NoInstalledProviders */ import java.security.*; public class NoInstalledProviders { - public static void main(String[] argv) { + public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { Provider[] provs = Security.getProviders(); // make sure there are no providers in the system diff --git a/test/java/security/Security/SynchronizedAccess.java b/test/java/security/Security/SynchronizedAccess.java index 8ab8dab416a075ed98eeac897bb77cdd336e8374..c615ae9e574c35bb597002aeb242425d59bfdc60 100644 --- a/test/java/security/Security/SynchronizedAccess.java +++ b/test/java/security/Security/SynchronizedAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, 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 @@ -23,7 +23,8 @@ /* * @test - * @bug 4162583 + * @bug 4162583 7054918 + * @library ../testlibrary * @summary Make sure Provider api implementations are synchronized properly */ @@ -31,7 +32,16 @@ import java.security.*; public class SynchronizedAccess { - public static void main(String[] args) { + public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { AccessorThread[] acc = new AccessorThread[200]; for (int i=0; i < acc.length; i++) acc[i] = new AccessorThread("thread"+i); diff --git a/test/java/security/Security/removing/RemoveProviders.java b/test/java/security/Security/removing/RemoveProviders.java index cd2bd130a9a4bff4cb74d244edbc58228f2d837f..0d9f6b207c595ab202c09e77447d27e2761b7c14 100644 --- a/test/java/security/Security/removing/RemoveProviders.java +++ b/test/java/security/Security/removing/RemoveProviders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,8 @@ /** * @test - * @bug 4963416 + * @bug 4963416 7054918 + * @library ../../testlibrary * @summary make sure removeProvider() always works correctly * @author Andreas Sterbenz */ @@ -35,6 +36,15 @@ import java.security.*; public class RemoveProviders { public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { Provider[] providers = Security.getProviders(); System.out.println("Providers: " + Arrays.asList(providers)); diff --git a/test/java/security/SignedObject/Correctness.java b/test/java/security/SignedObject/Correctness.java new file mode 100644 index 0000000000000000000000000000000000000000..26430cdbec72e6016da1fd226edf45f7fb65691e --- /dev/null +++ b/test/java/security/SignedObject/Correctness.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6618658 + * @summary Deserialization allows creation of mutable SignedObject + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.Signature; +import java.security.SignedObject; + + +public class Correctness { + + public static void main(String[] args) throws Exception { + + String SIGALG = "SHA1withRSA"; + KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); + KeyPair kp = kpg.generateKeyPair(); + + SignedObject so1 = new SignedObject("Hello", kp.getPrivate(), + Signature.getInstance(SIGALG)); + + ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(byteOut); + out.writeObject(so1); + out.close(); + + byte[] data = byteOut.toByteArray(); + + SignedObject so2 = (SignedObject)new ObjectInputStream( + new ByteArrayInputStream(data)).readObject(); + + if (!so2.getObject().equals("Hello")) { + throw new Exception("Content changed"); + } + if (!so2.getAlgorithm().equals(SIGALG)) { + throw new Exception("Signature algorithm unknown"); + } + if (!so2.verify(kp.getPublic(), Signature.getInstance(SIGALG))) { + throw new Exception("Not verified"); + } + } +} diff --git a/test/java/security/UnresolvedPermission/Equals.java b/test/java/security/UnresolvedPermission/Equals.java index 3a89e685d48b48af48c862b39c68a76871da7337..a88a77b49ac583be8e594b50df4980289c0367e8 100644 --- a/test/java/security/UnresolvedPermission/Equals.java +++ b/test/java/security/UnresolvedPermission/Equals.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2011, 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 @@ -24,6 +24,7 @@ /* * @test * @bug 4513737 + * @run main/othervm Equals * @summary UnresolvedPermission.equals() throws NullPointerException */ diff --git a/test/java/security/spec/EllipticCurveMatch.java b/test/java/security/spec/EllipticCurveMatch.java index 51908658e4bb744596af9fa4e529fda2dc2d708d..797f6d2e0f3da99f177f61dcd19b705e7b53b595 100644 --- a/test/java/security/spec/EllipticCurveMatch.java +++ b/test/java/security/spec/EllipticCurveMatch.java @@ -25,13 +25,12 @@ * @test * @bug 6738532 * @summary Check EllipticCurve.equals() does not compare seed value of curve. - * @run main/othervm EllipticCurveMatch * @author Mike StJohns */ import java.security.spec.*; import java.math.BigInteger; -import java.security.SecureRandom; +import java.util.Random; public class EllipticCurveMatch { static String primeP256 = @@ -45,7 +44,7 @@ public class EllipticCurveMatch { private static EllipticCurve addSeedToCurve(EllipticCurve curve) { - SecureRandom rand = new SecureRandom(); + Random rand = new Random(); byte[] seed = new byte[12]; rand.nextBytes(seed); diff --git a/test/java/security/testlibrary/ProvidersSnapshot.java b/test/java/security/testlibrary/ProvidersSnapshot.java new file mode 100644 index 0000000000000000000000000000000000000000..33c45329e3f488497666d8614d00d30e2ad2539d --- /dev/null +++ b/test/java/security/testlibrary/ProvidersSnapshot.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.security.Provider; +import java.security.Security; + +public class ProvidersSnapshot { + + private Provider[] oldProviders; + + private ProvidersSnapshot() { + oldProviders = Security.getProviders(); + } + + public static ProvidersSnapshot create() { + return new ProvidersSnapshot(); + } + + public void restore() { + Provider[] newProviders = Security.getProviders(); + for (Provider p: newProviders) { + Security.removeProvider(p.getName()); + } + for (Provider p: oldProviders) { + Security.addProvider(p); + } + } +} diff --git a/test/java/util/logging/LoggerResourceBundleRace.java b/test/java/util/logging/LoggerResourceBundleRace.java new file mode 100644 index 0000000000000000000000000000000000000000..c7976d7cced0d0d109d5d2148072f7d288848404 --- /dev/null +++ b/test/java/util/logging/LoggerResourceBundleRace.java @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7045594 + * @summary ResourceBundle setting race in Logger.getLogger(name, rbName) + * @author Daniel D. Daugherty + * @build RacingThreadsTest LoggerResourceBundleRace + * @run main LoggerResourceBundleRace + */ + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.ListResourceBundle; +import java.util.logging.Logger; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + + +public class LoggerResourceBundleRace extends RacingThreadsTest { + private final static int N_LOOPS = 500000; // # of race loops + private final static int N_SECS = 15; // # of secs to run test + // # of parallel threads; must match number of MyResources inner classes + private final static int N_THREADS = 3; + + private final static String LOGGER_PREFIX = "myLogger-"; + private final static String RESOURCE_PREFIX + = "LoggerResourceBundleRace$MyResources"; + // these counters are AtomicInteger since any worker thread can increment + private final static AtomicInteger iaeCnt = new AtomicInteger(); + private final static AtomicInteger worksCnt = new AtomicInteger(); + + Logger dummy; // dummy Logger + + LoggerResourceBundleRace(String name, int n_threads, int n_loops, + int n_secs) { + super(name, n_threads, n_loops, n_secs); + } + + + // Main test driver + // + public static void main(String[] args) { + LoggerResourceBundleRace test + = new LoggerResourceBundleRace("LoggerResourceBundleRace", + N_THREADS, N_LOOPS, N_SECS); + test.setVerbose( + Boolean.getBoolean("LoggerResourceBundleRace.verbose")); + + DriverThread driver = new DriverThread(test); + MyWorkerThread[] workers = new MyWorkerThread[N_THREADS]; + for (int i = 0; i < workers.length; i++) { + workers[i] = new MyWorkerThread(i, test); + } + test.runTest(driver, workers); + } + + public void oneTimeDriverInit(DriverThread dt) { + super.oneTimeDriverInit(dt); + dummy = null; + } + + public void perRaceDriverInit(DriverThread dt) { + super.perRaceDriverInit(dt); + + // - allocate a new dummy Logger without a ResourceBundle; + // this gives the racing threads less to do + // - reset the counters + dummy = Logger.getLogger(LOGGER_PREFIX + getLoopCnt()); + iaeCnt.set(0); + worksCnt.set(0); + } + + public void executeRace(WorkerThread wt) { + super.executeRace(wt); + + Logger myLogger = null; + try { + MyWorkerThread mwt = (MyWorkerThread) wt; // short hand + + // Here is the race: + // - the target Logger object has already been created by + // the DriverThread without a ResourceBundle name + // - in parallel, each WorkerThread calls Logger.getLogger() + // with a different ResourceBundle name + // - Logger.getLogger() should only successfully set the + // ResourceBundle name for one WorkerThread; all other + // WorkerThread calls to Logger.getLogger() should throw + // IllegalArgumentException + myLogger = Logger.getLogger(LOGGER_PREFIX + getLoopCnt(), + mwt.rbName); + if (myLogger.getResourceBundleName().equals(mwt.rbName)) { + // no exception and the ResourceBundle names match + worksCnt.incrementAndGet(); // ignore return + } else { + System.err.println(wt.getName() + + ": ERROR: expected ResourceBundleName '" + + mwt.rbName + "' does not match actual '" + + myLogger.getResourceBundleName() + "'"); + incAndGetFailCnt(); // ignore return + } + } catch (IllegalArgumentException iae) { + iaeCnt.incrementAndGet(); // ignore return + } catch (MissingResourceException mre) { + // This exception happens when N_THREADS above does not + // match the number of MyResources inner classes below. + // We exit since this is a coding error. + unexpectedException(wt, mre); + System.exit(2); + } + } + + public void checkRaceResults(DriverThread dt) { + super.checkRaceResults(dt); + + if (worksCnt.get() != 1) { + System.err.println(dt.getName() + ": ERROR: worksCnt should be 1" + + ": loopCnt=" + getLoopCnt() + ", worksCnt=" + worksCnt.get()); + incAndGetFailCnt(); // ignore return + } else if (iaeCnt.get() != N_THREADS - 1) { + System.err.println(dt.getName() + ": ERROR: iaeCnt should be " + + (N_THREADS - 1) + ": loopCnt=" + getLoopCnt() + + ", iaeCnt=" + iaeCnt.get()); + incAndGetFailCnt(); // ignore return + } + } + + public void oneTimeDriverEpilog(DriverThread dt) { + super.oneTimeDriverEpilog(dt); + + // Use the dummy Logger after the testing loop to make sure that + // dummy doesn't get optimized away in the testing loop. + dummy.info("This is a test message."); + } + + // N_THREADS above must match number of MyResources inner classes + // + public static class MyResources0 extends ListResourceBundle { + final static Object[][] contents = { + {"sample1", "translation #1 for sample1"}, + {"sample2", "translation #1 for sample2"}, + }; + + public Object[][] getContents() { + return contents; + } + } + + public static class MyResources1 extends ListResourceBundle { + final static Object[][] contents = { + {"sample1", "translation #2 for sample1"}, + {"sample2", "translation #2 for sample2"}, + }; + + public Object[][] getContents() { + return contents; + } + } + + public static class MyResources2 extends ListResourceBundle { + final static Object[][] contents = { + {"sample1", "translation #3 for sample1"}, + {"sample2", "translation #3 for sample2"}, + }; + + public Object[][] getContents() { + return contents; + } + } + + + // WorkerThread with a thread specific ResourceBundle name + // + public static class MyWorkerThread extends WorkerThread { + public final String rbName; // ResourceBundle name + + MyWorkerThread(int workerNum, RacingThreadsTest test) { + super(workerNum, test); + + rbName = RESOURCE_PREFIX + workerNum; + } + } +} diff --git a/test/java/util/logging/LoggingDeadlock3.java b/test/java/util/logging/LoggingDeadlock3.java index 0116c09e33f3e879234ab15155aea76fe748131f..1b94d0316d07e0b137eb1d5b4aae6e674f458dc3 100644 --- a/test/java/util/logging/LoggingDeadlock3.java +++ b/test/java/util/logging/LoggingDeadlock3.java @@ -27,7 +27,7 @@ * @summary Calling LogManager.addLogger() and Logger.getLogger() cause deadlock * @author Serguei Spitsyn * @build LoggingDeadlock3 - * @run main/timeout=15 LoggingDeadlock3 + * @run main/timeout=80 LoggingDeadlock3 */ import java.io.*; diff --git a/test/java/util/logging/RacingThreadsTest.java b/test/java/util/logging/RacingThreadsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..88dc8e5c9e3bbd1e1248a10c5ef6f3c1d8b31a8b --- /dev/null +++ b/test/java/util/logging/RacingThreadsTest.java @@ -0,0 +1,687 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.BrokenBarrierException; +import java.util.concurrent.CyclicBarrier; + + +/** + * RacingThreadsTest is a support class for creating a test + * where multiple threads are needed to exercise a code path. + * The RacingThreadsTest class is typically used as follows: + *
    + *
  • + * Extend RacingThreadsTest class in order to provide the test + * specific variables and/or code, e.g.,
    + * public class MyRacingThreadsTest extends RacingThreadsTest + *
  • + * Use + * "new MyRacingThreadsTest(name, n_threads, n_loops, n_secs)" + * to create your test with the specified name and the specified + * number of WorkerThreads that execute the test code in parallel + * up to n_loops iterations or n_secs seconds. + *
  • + * Use + * "new DriverThread(test)" + * to create the test DriverThread that manages all the + * WorkerThreads. The DriverThread class can be extended to + * provide test specific code and/or variables. However, that + * is typically done in your test's subclass. + *
  • + * Use + * "new WorkerThread(workerNum, test)" + * to create WorkerThread-workerNum that executes the test code. + * The WorkerThread class can be extended to provide test thread + * specific code and/or variables. + *
  • + * Use + * "RacingThreadsTest.runTest(driver, workers)" + * to run the test. If the test fails, then a RuntimeException + * is thrown. + *
+ * + * The RacingThreadsTest class provides many methods that can be + * overridden in order to provide test specific semantics at each + * identified test execution point. At a minimum, your test's + * subclass needs to override the + * "void executeRace(WorkerThread)" + * method in order to exercise your race condition and it needs to + * override the + * "void checkRaceResults(DriverThread)" + * method in order to check the results of the race. Your + * checkRaceResults() method should call the + * "int incAndGetFailCnt()" + * method when it detects a failure. It can also call the + * "void unexpectedException(Thread, Exception)" + * method if it detects an unexpected exception; this will cause + * an error message to be output and the failure count to be + * incremented. When the RacingThreadsTest.runTest() method is + * done running the races, if there is a non-zero failure count, + * then a RuntimeException will be thrown. + *

+ * The RacingThreadsTest class uses three internal barriers to + * coordinate actions between the DriverThread and the WorkerThreads. + * These barriers should not be managed or used by your test's + * subclass and are only mentioned here to provide clarity about + * interactions between the DriverThread and the WorkerThreads. + * The following transaction diagram shows when the different + * RacingThreadsTest methods are called relative to the different + * barriers: + * + *

+ * DriverThread           WorkerThread-0         WorkerThread-N-1
+ * ---------------------  ---------------------  ---------------------
+ * run(workers)
+ * oneTimeDriverInit()
+ * <start WorkerThreads>  run()                  run()
+ * <top of race loop>     :                      :
+ * perRaceDriverInit()    oneTimeWorkerInit()    oneTimeWorkerInit()
+ * :                      <top of race loop>     <top of race loop>
+ * :                      perRaceWorkerInit()    perRaceWorkerInit()
+ * startBarrier           startBarrier           startBarrier
+ * :                      executeRace()          executeRace()
+ * finishBarrier          finishBarrier          finishBarrier
+ * checkRaceResults()     :                      :
+ * resetBarrier           resetBarrier           resetBarrier
+ * perRaceDriverEpilog()  perRaceWorkerEpilog()  perRaceWorkerEpilog()
+ * <repeat race or done>  <repeat race or done>  <repeat race or done>
+ * :                      oneTimeWorkerEpilog()  oneTimeWorkerEpilog()
+ * <join WorkerThreads>   <WorkerThread ends>    <WorkerThread ends>
+ * oneTimeDriverEpilog()
+ * <DriverThread ends>
+ * 
+ * + * Just to be clear about the parallel parts of this infrastructure: + *
    + *
  • + * After the DriverThread starts the WorkerThreads, the DriverThread + * and the WorkerThreads are running in parallel until the startBarrier + * is reached. + *
  • + * After the WorkerThreads leave the startBarrier, they are running + * the code in executeRace() in parallel which is the whole point + * of this class. + *
  • + * The DriverThread heads straight to the finishBarrier and waits for + * the WorkerThreads to get there. + *
  • + * After the DriverThread leaves the finishBarrier, it checks the + * results of the race. + *
  • + * The WorkerThreads head straight to the resetBarrier and wait for + * the DriverThread to get there. + *
  • + * If this is not the last race, then after the DriverThread and + * WorkerThreads leave the resetBarrier, the DriverThread and the + * WorkerThreads are running in parallel until the startBarrier + * is reached. + *
  • + * If this is the last race, then after the DriverThread and + * WorkerThreads leave the resetBarrier, the DriverThread and the + * WorkerThreads are running in parallel as each WorkerThread ends. + *
  • + * The DriverThread waits for the WorkerThreads to end and + * then it ends + *
+ * + * Once the DriverThread has ended, the RacingThreadsTest.runTest() + * method checks the failure count. If there were no failures, then + * a "Test PASSed" message is printed. Otherwise, the failure count + * is printed, a "Test FAILed" message is printed and a RuntimeException + * is thrown. + */ +public class RacingThreadsTest { + /** + * name of the test + */ + public final String TEST_NAME; + /** + * maximum number of test iterations (race loops) + */ + public final int N_LOOPS; + /** + * the maximum number of seconds to execute the test loop + */ + public final int N_SECS; + /** + * number of WorkerThreads + */ + public final int N_THREADS; + + /** + * Creates a test with the specified name and the specified number + * of WorkerThreads that execute the test code in parallel up to + * n_loops iterations or n_secs seconds. The RacingThreadsTest + * class is extended in order to provide the test specific variables + * and/or code. + * @param name the name of the test + * @param n_threads the number of WorkerThreads + * @param n_loops the maximum number of test iterations + * @param n_secs the maximum number of seconds to execute the test loop + */ + RacingThreadsTest(String name, int n_threads, int n_loops, int n_secs) { + TEST_NAME = name; + N_THREADS = n_threads; + N_LOOPS = n_loops; + N_SECS = n_secs; + + finishBarrier = new CyclicBarrier(N_THREADS + 1); + resetBarrier = new CyclicBarrier(N_THREADS + 1); + startBarrier = new CyclicBarrier(N_THREADS + 1); + } + + + /** + * Entry point for exercising the RacingThreadsTest class. + */ + public static void main(String[] args) { + // a dummy test: + // - 2 threads + // - 3 loops + // - 2 seconds + // - standard DriverThread + // - standard WorkerThread + RacingThreadsTest test = new RacingThreadsTest("dummy", 2, 3, 2); + DriverThread driver = new DriverThread(test); + WorkerThread[] workers = new WorkerThread[2]; + for (int i = 0; i < workers.length; i++) { + workers[i] = new WorkerThread(i, test); + } + test.runTest(driver, workers); + } + + private static volatile boolean done = false; // test done flag + + // # of fails; AtomicInteger since any WorkerThread can increment + private static final AtomicInteger failCnt = new AtomicInteger(); + // # of loops; volatile is OK since only DriverThread increments + // but using AtomicInteger for consistency + private static final AtomicInteger loopCnt = new AtomicInteger(); + private static boolean verbose + = Boolean.getBoolean("RacingThreadsTest.verbose"); + + // barriers for starting, finishing and resetting the race + private final CyclicBarrier finishBarrier; + private final CyclicBarrier resetBarrier; + private final CyclicBarrier startBarrier; + + + /** + * Get current done flag value. + * @return the current done flag value + */ + public boolean getDone() { + return done; + } + + /** + * Set done flag to specified value. + * @param v the new done flag value + */ + public void setDone(boolean v) { + done = v; + } + + /** + * Get current failure counter value. + * @return the current failure count + */ + public int getFailCnt() { + return failCnt.get(); + } + + /** + * Increment and get current failure counter value. + * @return the current failure count after incrementing + */ + public int incAndGetFailCnt() { + return failCnt.incrementAndGet(); + } + + /** + * Get current loop counter value. + * @return the current loop count + */ + public int getLoopCnt() { + return loopCnt.get(); + } + + /** + * Increment and get current loop counter value. + * @return the current loop count after incrementing + */ + public int incAndGetLoopCnt() { + return loopCnt.incrementAndGet(); + } + + /** + * Get current verbose flag value. + * @return the current verbose flag value + */ + public boolean getVerbose() { + return verbose; + } + + /** + * Set verbose flag to specified value. + * @param v the new verbose flag value + */ + public void setVerbose(boolean v) { + verbose = v; + } + + /** + * Run the test with the specified DriverThread and the + * specified WorkerThreads. + * @param driver the DriverThread for running the test + * @param workers the WorkerThreads for executing the race + * @exception RuntimeException the test has failed + */ + public void runTest(DriverThread driver, WorkerThread[] workers) { + driver.run(workers); + + try { + driver.join(); + } catch (InterruptedException ie) { + unexpectedException(Thread.currentThread(), ie); + // fall through to test failed below + } + + if (failCnt.get() == 0) { + System.out.println(TEST_NAME + ": Test PASSed."); + } else { + System.out.println(TEST_NAME + ": failCnt=" + failCnt.get()); + System.out.println(TEST_NAME + ": Test FAILed."); + throw new RuntimeException("Test Failed"); + } + } + + /** + * Helper method for reporting an unexpected Exception and + * calling incAndGetFailCnt(); + * @param t the Thread that caught the exception + * @param e the Exception that was caught + */ + public void unexpectedException(Thread t, Exception e) { + System.err.println(t.getName() + ": ERROR: unexpected exception: " + e); + incAndGetFailCnt(); // ignore return + } + + + // The following methods are typically overridden by the subclass + // of RacingThreadsTest to provide test specific semantics at each + // identified test execution point: + + /** + * Initialize 1-time items for the DriverThread. + * Called by the DriverThread before WorkerThreads are started. + * @param dt the DriverThread + */ + public void oneTimeDriverInit(DriverThread dt) { + if (verbose) + System.out.println(dt.getName() + ": oneTimeDriverInit() called"); + } + + /** + * Initialize 1-time items for a WorkerThread. Called by a + * WorkerThread after oneTimeDriverInit() and before the + * WorkerThread checks in with startBarrier. May execute in + * parallel with perRaceDriverInit() or with another + * WorkerThread's oneTimeWorkerInit() call or another + * WorkerThread's perRaceWorkerInit() call. + * @param wt the WorkerThread + */ + public void oneTimeWorkerInit(WorkerThread wt) { + if (verbose) + System.out.println(wt.getName() + ": oneTimeWorkerInit() called"); + } + + /** + * Initialize per-race items for the DriverThread. Called by the + * DriverThread before it checks in with startBarrier. May execute + * in parallel with oneTimeWorkerInit() and perRaceWorkerInit() + * calls. After any race except for the last race, this method may + * execute in parallel with perRaceWorkerEpilog(). + * @param dt the DriverThread + */ + public void perRaceDriverInit(DriverThread dt) { + if (verbose) + System.out.println(dt.getName() + ": perRaceDriverInit() called"); + } + + /** + * Initialize per-race items for a WorkerThread. Called by each + * WorkerThread before it checks in with startBarrier. On the first + * call, this method may execute in parallel with another + * WorkerThread's oneTimeWorkerInit() call. On any call, this method + * may execute in parallel with perRaceDriverInit() or another + * WorkerThread's perRaceWorkerInit() call. After any race except + * for the last race, this method may execute in parallel with + * perRaceDriverEpilog() or another WorkerThread's + * perRaceWorkerEpilog() call. + * @param wt the WorkerThread + */ + public void perRaceWorkerInit(WorkerThread wt) { + if (verbose) + System.out.println(wt.getName() + ": perRaceWorkerInit() called"); + } + + /** + * Execute the race in a WorkerThread. Called by each WorkerThread + * after it has been released from startBarrier. + * @param wt the WorkerThread + */ + public void executeRace(WorkerThread wt) { + if (verbose) + System.out.println(wt.getName() + ": executeRace() called"); + } + + /** + * Check race results in the DriverThread. Called by the DriverThread + * after it has been released from finishBarrier and before the + * DriverThread checks in with resetBarrier. + * @param dt the DriverThread + */ + public void checkRaceResults(DriverThread dt) { + if (verbose) + System.out.println(dt.getName() + ": checkRaceResults() called"); + } + + /** + * Handle end-of-race items for the DriverThread. Called by the + * DriverThread after it has been released from resetBarrier and + * before the DriverThread checks in again with startBarrier. Can + * execute in parallel with perRaceWorkerEpilog(). If this is not + * the last race, can execute in parallel with perRaceWorkerInit(). + * If this is the last race, can execute in parallel with + * oneTimeWorkerEpilog(). + * @param dt the DriverThread + */ + public void perRaceDriverEpilog(DriverThread dt) { + if (verbose) + System.out.println(dt.getName() + ": perRaceDriverEpilog() called"); + } + + /** + * Handle end-of-race items for a WorkerThread. Called by each + * WorkerThread after it has been released from resetBarrier and + * before the WorkerThread checks in again with startBarrier. + * Can execute in parallel with perRaceDriverEpilog() or another + * WorkerThread's perRaceWorkerEpilog() call. If this is not the + * last race, can execute in parallel with perRaceDriverInit(), + * or another WorkerThread's perRaceWorkerInit() call. If this + * is the last race, can execute in parallel with another + * WorkerThread's oneTimeWorkerEpilog() call. + * @param wt the WorkerThread + */ + public void perRaceWorkerEpilog(WorkerThread wt) { + if (verbose) + System.out.println(wt.getName() + ": perRaceWorkerEpilog() called"); + } + + /** + * Handle end-of-test items for a WorkerThread. Called by each + * WorkerThread after it has detected that all races are done and + * before oneTimeDriverEpilog() is called. Can execute in parallel + * with perRaceDriverEpilog(), with another WorkerThread's + * perRaceWorkerEpilog() call or with another WorkerThread's + * oneTimeWorkerEpilog() call. + * @param wt the WorkerThread + */ + public void oneTimeWorkerEpilog(WorkerThread wt) { + if (verbose) + System.out.println(wt.getName() + ": oneTimeWorkerEpilog() called"); + } + + /** + * Handle end-of-test items for the DriverThread. Called by the + * DriverThread after all the WorkerThreads have called + * oneTimeWorkerEpilog(). + * @param dt the DriverThread + */ + public void oneTimeDriverEpilog(DriverThread dt) { + if (verbose) + System.out.println(dt.getName() + ": oneTimeDriverEpilog() called"); + } + + + /** + * DriverThread for executing the test. + */ + public static class DriverThread extends Thread { + private final RacingThreadsTest test; + + /** + * Create the test DriverThread that manages all the WorkerThreads. + * The DriverThread class can be extended to provide test specific + * variables and/or code. However, that is typically done in the + * subclass of RacingThreadsTest. + * @parameter test the RacingThreadsTest being run + */ + DriverThread(RacingThreadsTest test) { + super("DriverThread"); + this.test = test; + } + + private void run(WorkerThread[] workers) { + System.out.println(getName() + ": is starting."); + System.out.println(getName() + ": # WorkerThreads: " + test.N_THREADS); + System.out.println(getName() + ": max # loops: " + test.N_LOOPS); + System.out.println(getName() + ": max # secs: " + test.N_SECS); + + // initialize 1-time items for the DriverThread + test.oneTimeDriverInit(this); + + // start all the threads + for (int i = 0; i < workers.length; i++) { + workers[i].start(); + } + + // All WorkerThreads call oneTimeWorkerInit() and + // perRaceWorkerInit() on the way to startBarrier. + + long endTime = System.currentTimeMillis() + test.N_SECS * 1000; + + for (; !test.getDone() && test.getLoopCnt() < test.N_LOOPS; + test.incAndGetLoopCnt()) { + + if (test.getVerbose() && (test.N_LOOPS < 10 || + (test.getLoopCnt() % (test.N_LOOPS / 10)) == 0)) { + System.out.println(getName() + ": race loop #" + + test.getLoopCnt()); + } + + // initialize per-race items for the DriverThread + test.perRaceDriverInit(this); + + try { + // we've setup the race so start it when all + // WorkerThreads get to the startBarrier + test.startBarrier.await(); + } catch (BrokenBarrierException bbe) { + test.unexpectedException(this, bbe); + return; + } catch (InterruptedException ie) { + test.unexpectedException(this, ie); + return; + } + + // All WorkerThreads are racing via executeRace() + // at this point + + // wait for all threads to finish the race + try { + test.finishBarrier.await(); + } catch (BrokenBarrierException bbe) { + test.unexpectedException(this, bbe); + return; + } catch (InterruptedException ie) { + test.unexpectedException(this, ie); + return; + } + // All WorkerThreads are heading to resetBarrier at this + // point so we can check the race results before we reset + // for another race (or bail because we are done). + + test.checkRaceResults(this); + + if (test.getLoopCnt() + 1 >= test.N_LOOPS || + System.currentTimeMillis() >= endTime) { + // This is the last loop or we're out of time. + // Let test threads know we are done before we release + // them from resetBarrier + test.setDone(true); + } + + // release the WorkerThreads from resetBarrier + try { + test.resetBarrier.await(); + } catch (BrokenBarrierException bbe) { + test.unexpectedException(this, bbe); + return; + } catch (InterruptedException ie) { + test.unexpectedException(this, ie); + return; + } + + // All WorkerThreads call perRaceWorkerEpilog(). If + // this is not the last loop, then all WorkerThreads + // will also call perRaceWorkerInit() on the way to + // startBarrier. If this is the last loop, then all + // WorkerThreads will call oneTimeWorkerEpilog() on + // their way to ending. + + // handle end-of-race items for the DriverThread + test.perRaceDriverEpilog(this); + } + + System.out.println(getName() + ": completed " + test.getLoopCnt() + + " race loops."); + if (test.getLoopCnt() < test.N_LOOPS) { + System.out.println(getName() + ": race stopped @ " + test.N_SECS + + " seconds."); + } + + for (int i = 0; i < workers.length; i++) { + try { + workers[i].join(); + } catch (InterruptedException ie) { + test.unexpectedException(this, ie); + return; + } + } + + // handle end-of-test items for the DriverThread + test.oneTimeDriverEpilog(this); + + System.out.println(getName() + ": is done."); + } + } + + + /** + * WorkerThread for executing the race. + */ + public static class WorkerThread extends Thread { + private final RacingThreadsTest test; + private final int workerNum; + + /** + * Creates WorkerThread-N that executes the test code. The + * WorkerThread class can be extended to provide test thread + * specific variables and/or code. + * @param workerNum the number for the new WorkerThread + * @parameter test the RacingThreadsTest being run + */ + WorkerThread(int workerNum, RacingThreadsTest test) { + super("WorkerThread-" + workerNum); + this.test = test; + this.workerNum = workerNum; + } + + /** + * get the WorkerThread's number + * @return the WorkerThread's number + */ + public int getWorkerNum() { + return workerNum; + } + + /** + * Run the race in a WorkerThread. + */ + public void run() { + System.out.println(getName() + ": is running."); + + // initialize 1-time items for the WorkerThread + test.oneTimeWorkerInit(this); + + while (!test.getDone()) { + // initialize per-race items for the WorkerThread + test.perRaceWorkerInit(this); + + try { + test.startBarrier.await(); // wait for race to start + } catch (BrokenBarrierException bbe) { + test.unexpectedException(this, bbe); + return; + } catch (InterruptedException ie) { + test.unexpectedException(this, ie); + return; + } + + // execute the race for the WorkerThread + test.executeRace(this); + + try { + test.finishBarrier.await(); // this thread is done + } catch (BrokenBarrierException bbe) { + test.unexpectedException(this, bbe); + return; + } catch (InterruptedException ie) { + test.unexpectedException(this, ie); + return; + } + + try { + test.resetBarrier.await(); // wait for race to reset + } catch (BrokenBarrierException bbe) { + test.unexpectedException(this, bbe); + return; + } catch (InterruptedException ie) { + test.unexpectedException(this, ie); + return; + } + + // handle end-of-race items for the WorkerThread + test.perRaceWorkerEpilog(this); + } + + // handle end-of-test items for the WorkerThread + test.oneTimeWorkerEpilog(this); + + System.out.println(getName() + ": is ending."); + } + } +} diff --git a/test/javax/crypto/EncryptedPrivateKeyInfo/GetKeySpecException.java b/test/javax/crypto/EncryptedPrivateKeyInfo/GetKeySpecException.java index 7dc9128598ed91e5bcff8284ce174e254c6b4ff4..e3ecb33d91c2a3457d8ba2d84470228e2ea44d87 100644 --- a/test/javax/crypto/EncryptedPrivateKeyInfo/GetKeySpecException.java +++ b/test/javax/crypto/EncryptedPrivateKeyInfo/GetKeySpecException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, 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 @@ -23,7 +23,8 @@ /** * @test - * @bug 4508341 + * @bug 4508341 7055362 + * @library ../../../java/security/testlibrary * @summary Test the error conditions of * EncryptedPrivateKeyInfo.getKeySpec(...) methods. * @author Valerie Peng @@ -97,7 +98,16 @@ public class GetKeySpecException { } } - public static void main(String[] argv) throws Exception { + public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { if ((GOOD_PARAMS == null) || (BAD_PARAMS == null)) { throw new Exception("Static parameter generation failed"); } diff --git a/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java b/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java index 434b3d3f0391f4e8f35253161a100764256e1f10..c2991bbcc070af418382f80ab7a6c9c5792ee59a 100644 --- a/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java +++ b/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2011, 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 @@ -23,7 +23,8 @@ /* * @test - * @bug 6377058 + * @bug 6377058 7055362 + * @library ../../../java/security/testlibrary * @summary SunJCE depends on sun.security.provider.SignatureImpl * behaviour, BC can't load into 1st slot. * @author Brad R. Wetmore @@ -35,7 +36,16 @@ import java.io.*; public class SunJCE_BC_LoadOrdering { - public static void main(String args[]) throws Exception { + public static void main(String[] args) throws Exception { + ProvidersSnapshot snapshot = ProvidersSnapshot.create(); + try { + main0(args); + } finally { + snapshot.restore(); + } + } + + public static void main0(String[] args) throws Exception { /* * Generate a random key, and encrypt the data */ diff --git a/test/javax/swing/plaf/nimbus/Test7048204.java b/test/javax/swing/plaf/nimbus/Test7048204.java new file mode 100644 index 0000000000000000000000000000000000000000..7ec9c0774d2f512b02711373d210a5dc908e7c65 --- /dev/null +++ b/test/javax/swing/plaf/nimbus/Test7048204.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 7048204 + @summary NPE from NimbusLookAndFeel.addDefault + @author Pavel Porvatov +*/ + +import javax.swing.*; +import javax.swing.plaf.nimbus.NimbusLookAndFeel; + +public class Test7048204 { + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel(new NimbusLookAndFeel()); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + new JLabel(); + + UIDefaults uid = UIManager.getDefaults(); + uid.putDefaults(new Object[0]); + uid.put("what.ever", "else"); + } + }); + } +} diff --git a/test/javax/swing/text/Utilities/bug7045593.java b/test/javax/swing/text/Utilities/bug7045593.java new file mode 100644 index 0000000000000000000000000000000000000000..84beb0d53b94cc3b83d33ecb0cc3a50204f7be31 --- /dev/null +++ b/test/javax/swing/text/Utilities/bug7045593.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7045593 + * @summary Possible Regression : JTextfield cursor placement behavior algorithm has changed + * @author Pavel Porvatov + */ + +import sun.awt.SunToolkit; + +import javax.swing.*; +import javax.swing.text.BadLocationException; +import java.awt.*; + +public class bug7045593 { + private static volatile JTextField jtf; + + public static void main(String[] args) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + jtf = new JTextField("WW"); + + JFrame frame = new JFrame(); + frame.getContentPane().add(jtf); + frame.pack(); + frame.setVisible(true); + } + }); + + ((SunToolkit) SunToolkit.getDefaultToolkit()).realSync(); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + try { + Rectangle r = jtf.modelToView(1); + + int delta = 2; + + for (int x = r.x - delta; x < r.x + delta; x++) { + assertEquals(jtf.viewToModel(new Point(x, r.y)), 1); + } + + System.out.println("Passed."); + } catch (BadLocationException e) { + throw new RuntimeException("Test failed", e); + } + } + }); + } + + private static void assertEquals(int i1, int i2) { + if (i1 != i2) { + throw new RuntimeException("Test failed, " + i1 + " != " + i2); + } + } +} diff --git a/test/sun/java2d/cmm/ProfileOp/ReadWriteProfileTest.java b/test/sun/java2d/cmm/ProfileOp/ReadWriteProfileTest.java index 19d113ae8351de64d7522343dff47a18fa748dd6..bc14128fcee702e926a8994ee1acb252d9abb464 100644 --- a/test/sun/java2d/cmm/ProfileOp/ReadWriteProfileTest.java +++ b/test/sun/java2d/cmm/ProfileOp/ReadWriteProfileTest.java @@ -23,7 +23,7 @@ /** * @test - * @bug 6476665 6523403 6733501 + * @bug 6476665 6523403 6733501 7042594 * @summary Verifies reading and writing profiles and tags of the standard color * spaces * @run main ReadWriteProfileTest @@ -94,7 +94,16 @@ public class ReadWriteProfileTest implements Runnable { for (int tagSig : tags[i].keySet()) { byte [] tagData = pf.getData(tagSig); byte [] empty = new byte[tagData.length]; - pf.setData(tagSig, empty); + boolean emptyDataRejected = false; + try { + pf.setData(tagSig, empty); + } catch (IllegalArgumentException e) { + emptyDataRejected = true; + } + if (!emptyDataRejected) { + throw new + RuntimeException("Test failed: empty tag data was not rejected."); + } pf.setData(tagSig, tagData); byte [] tagData1 = pf.getData(tagSig); diff --git a/test/sun/java2d/cmm/ProfileOp/SetDataTest.java b/test/sun/java2d/cmm/ProfileOp/SetDataTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e426820c3e3a08795f8788ed5ae6d525e5802fba --- /dev/null +++ b/test/sun/java2d/cmm/ProfileOp/SetDataTest.java @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 7042594 + * @summary Test verifies that ICC_Profile.setData() conforms the spec. + * + * @run main SetDataTest + */ + + +import java.util.ArrayList; +import java.util.List; +import java.awt.color.ICC_Profile; +import static java.awt.color.ICC_ColorSpace.CS_GRAY; +import static java.awt.color.ICC_Profile.icSigGrayTRCTag; +import static java.awt.color.ICC_Profile.icSigRedTRCTag; +import static java.awt.color.ICC_Profile.icSigGreenTRCTag; + +public class SetDataTest { + + static class TestCase { + + static ICC_Profile profile; + static byte[] validTRCdata; + static byte[] invalidTRCData; + + static { + profile = ICC_Profile.getInstance(CS_GRAY); + validTRCdata = profile.getData(icSigGrayTRCTag); + invalidTRCData = new byte[]{0x42, 0x42, 0x42, 0x42, 1, 3, 4, 6,}; + } + String desciption; + int signature; + boolean useValidData; + Throwable err; + boolean isIAEexpected; + + public TestCase(String descr, int sig, + boolean useValidData, + boolean isIAEexpected) { + this.desciption = descr; + this.signature = sig; + + this.useValidData = useValidData; + this.isIAEexpected = isIAEexpected; + + } + + public void doTest() { + System.out.println(desciption); + byte[] data = useValidData + ? validTRCdata : invalidTRCData; + err = null; + try { + profile.setData(signature, data); + } catch (Throwable e) { + err = e; + System.out.println("Got exception: " + + e.getClass().getName() + ": " + + e.getMessage()); + } + + if (isIAEexpected) { + if (err == null) { + throw new RuntimeException( + "Test failed: expected exception was not thrown"); + } + if (!(err instanceof IllegalArgumentException)) { + throw new RuntimeException( + "Unexpected exception was thrown: " + + err.getMessage(), err); + } + } else { + if (err != null) { + throw new RuntimeException( + "Unexpected exception was thrown: " + + err.getMessage(), err); + } + } + System.out.println("Testcase PASSED"); + } + } + + public static void main(String[] args) { + List tests = new ArrayList(); + + TestCase selfupdate = new TestCase( + "Selfupdate: update grayTRC with the same data.", + icSigGrayTRCTag, true, false); + tests.add(selfupdate); + + TestCase newValdTag = new TestCase( + "Insert new valid tag", + icSigRedTRCTag, + true, false); + tests.add(newValdTag); + + TestCase newInvalidTag = new TestCase( + "Insert new tag with invalid contet", + icSigGreenTRCTag, + false, true); + tests.add(newInvalidTag); + + TestCase newUnknowInvalidTag = new TestCase( + "Insert new tag with invalid data and unknown signature", + 0x41414141, + false, true); + tests.add(newUnknowInvalidTag); + + TestCase newUnknownValidTag = new TestCase( + "Insert new tag with valid data and unknown signatiure", + 0x41414141, + true, true); + tests.add(newUnknownValidTag); + + for (TestCase t: tests) { + t.doTest(); + } + System.out.println("Test passed!."); + } +} diff --git a/test/sun/java2d/loops/Bug7049339.java b/test/sun/java2d/loops/Bug7049339.java new file mode 100644 index 0000000000000000000000000000000000000000..07513bc75bd690af183bf85863cfa51cd784672c --- /dev/null +++ b/test/sun/java2d/loops/Bug7049339.java @@ -0,0 +1,77 @@ +/* + * Copyright 2011 Red Hat, Inc. All Rights Reserved. + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + @test + @bug 7049339 + @summary Copying images with a non-rectangular clip and a custom composite + fails + @author Denis Lila + @run main Bug7049339 + */ + +import java.awt.Composite; +import java.awt.CompositeContext; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.geom.Ellipse2D; +import java.awt.image.BufferedImage; +import java.awt.image.ColorModel; +import java.awt.image.Raster; +import java.awt.image.WritableRaster; + +public class Bug7049339 { + public static void main(String[] argv) { + int x = 100, y = 100; + BufferedImage src = new BufferedImage(x, y, BufferedImage.TYPE_INT_ARGB); + BufferedImage dst = new BufferedImage(x, y, BufferedImage.TYPE_3BYTE_BGR); + + Graphics2D dstg2d = dst.createGraphics(); + dstg2d.setComposite(new Composite() { + @Override + public CompositeContext createContext( + ColorModel srcColorModel, + ColorModel dstColorModel, + RenderingHints hints) + { + return new CompositeContext() { + @Override + public void compose(Raster src, Raster dstIn, + WritableRaster dstOut) + { + // do nothing + } + @Override + public void dispose() { + } + }; + } + }); + Shape clip = new Ellipse2D.Double(x/4, y/4, x/2, y/2); + dstg2d.setClip(clip); + // This will throw a RasterFormatException if the bug is present. + dstg2d.drawImage(src, 0, 0, null); + } +} diff --git a/test/sun/security/krb5/tools/ktmissing.sh b/test/sun/security/krb5/tools/ktmissing.sh new file mode 100644 index 0000000000000000000000000000000000000000..6410abab7fa96a707e27d3171703f10ccc7ce183 --- /dev/null +++ b/test/sun/security/krb5/tools/ktmissing.sh @@ -0,0 +1,51 @@ +# +# Copyright (c) 2011, 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 +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# @test +# @bug 7043737 +# @summary klist does not detect non-existing keytab +# @run shell ktmissing.sh +# + +OS=`uname -s` +case "$OS" in + CYGWIN* ) + FS="/" + ;; + Windows_* ) + FS="\\" + ;; + * ) + FS="/" + echo "Unsupported system!" + exit 0; + ;; +esac + +${TESTJAVA}${FS}bin${FS}klist -k this_file_does_not_exist && exit 1 + +echo ABC > this_is_not_a_keytab + +${TESTJAVA}${FS}bin${FS}klist -k this_is_not_a_keytab && exit 2 + +exit 0 diff --git a/test/sun/security/pkcs11/Provider/Absolute.cfg b/test/sun/security/pkcs11/Provider/Absolute.cfg new file mode 100644 index 0000000000000000000000000000000000000000..7b525dacd989244d5e3e0be93f1702b084dfc2fc --- /dev/null +++ b/test/sun/security/pkcs11/Provider/Absolute.cfg @@ -0,0 +1,10 @@ +# +# Configuration file to allow the SunPKCS11 provider to utilize +# the Solaris Cryptographic Framework, if it is available +# + +name = Absolute + +description = SunPKCS11 using a relative path + +library = ./libpkcs11.so diff --git a/test/sun/security/pkcs11/Provider/Absolute.java b/test/sun/security/pkcs11/Provider/Absolute.java new file mode 100644 index 0000000000000000000000000000000000000000..e35f9c60c5841af14e8a1a675441413ec0da1922 --- /dev/null +++ b/test/sun/security/pkcs11/Provider/Absolute.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2011, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/** + * @test + * @bug 7003952 + * @summary load DLLs and launch executables using fully qualified path + */ +import java.security.*; +import java.lang.reflect.*; +import sun.security.pkcs11.*; + +public class Absolute { + + public static void main(String[] args) throws Exception { + Constructor cons; + try { + Class clazz = Class.forName("sun.security.pkcs11.SunPKCS11"); + cons = clazz.getConstructor(new Class[] {String.class}); + } catch (Exception ex) { + System.out.println("Skipping test - no PKCS11 provider available"); + return; + } + + String config = + System.getProperty("test.src", ".") + "/Absolute.cfg"; + + try { + Object obj = cons.newInstance(new Object[] {config}); + } catch (InvocationTargetException ite) { + Throwable cause = ite.getCause(); + if (cause instanceof ProviderException) { + Throwable cause2 = cause.getCause(); + if ((cause2 == null) || + !cause2.getMessage().startsWith( + "Absolute path required for library value:")) { + // rethrow + throw (ProviderException) cause; + } + System.out.println("Caught expected Exception: \n" + cause2); + } + } + } +} diff --git a/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java b/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java index 5362f59071e68fa1f1a600204c9e263aef758d72..e32febeecbe818d2e7fdc35189947a72b66c1278 100644 --- a/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java +++ b/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2011, 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 @@ -25,10 +25,10 @@ * @test * @bug 6313675 6323647 * @summary Verify that all ciphersuites work in FIPS mode + * @library .. * @ignore JSSE supported cipher suites are changed with CR 6916074, * need to update this test case in JDK 7 soon * @author Andreas Sterbenz - * @library .. */ import java.security.*; diff --git a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/InterruptedIO.java b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/InterruptedIO.java deleted file mode 100644 index e87ed351ef7c967afebc2518a6bbb10a3da9a650..0000000000000000000000000000000000000000 --- a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/InterruptedIO.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2001, 2003, 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 - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 4393337 - * @summary [TEST RUNS ON SOLARIS ONLY] Throw an InterruptedIOException - * when read on SSLSocket is * interrupted. - */ - -import java.io.InputStream; -import java.io.IOException; -import java.io.InterruptedIOException; -import java.net.Socket; -import javax.net.ssl.*; - -/** - * Interrupts an SSL socket that is blocked on a read. An - * InterruptedIOException will be thrown and handled within the test if the - * test completes correctly. - */ - -public class InterruptedIO { - - /** - * Starts a client and a server thread. Gives the client enough time to - * block in a read, then interrupts it. - */ - public static void main(String[] args) throws Exception { - - String reason = - "Test valid only on SunOS.\n" + - "=========================\n" + - "It was determined that Thread.interrupt() could \n" + - "not be reliably return InterruptedIOException \n" + - "on non-Solaris implementations. Thread.interrupt() \n" + - "API was updated in merlin (JDK 1.4) to reflect this.\n"; - System.out.println(reason); - - String osName = System.getProperty("os.name", ""); - if (!osName.equalsIgnoreCase("SunOS")) { - System.out.println("Ignoring test on '" + osName + "'"); - return; - } - - String testRoot = System.getProperty("test.src", "."); - System.setProperty("javax.net.ssl.keyStore", - testRoot + - "/../../../../../../../etc/keystore"); - System.setProperty("javax.net.ssl.keyStorePassword", - "passphrase"); - System.setProperty("javax.net.ssl.trustStore", - testRoot + - "/../../../../../../../etc/truststore"); - - Server server = new Server(); - server.start(); - - Client client = new Client(server.getPort()); // Will do handshake - client.start(); // Will block in read - - // sleep for 5 seconds - System.out.println("Main - Pausing for 5 seconds..."); - Thread.sleep(5 * 1000); - - System.out.println("Main - Interrupting client reader thread"); - client.interrupt(); - client.join(); // Wait for client thread to complete - - if (client.failed()) - throw new Exception("Main - Test InterruptedIO failed " - + "on client side."); - else - System.out.println("Main - Test InterruptedIO successful!"); - } - - /** - * Accepts an incoming SSL Connection. Then blocks in a read. - */ - static class Server extends Thread { - - private SSLServerSocket ss; - - public Server() throws Exception { - ss = (SSLServerSocket) SSLServerSocketFactory.getDefault(). - createServerSocket(0); - } - - public int getPort() { - return ss.getLocalPort(); - } - - public void run() { - try { - System.out.println("Server - Will accept connections on port " - + getPort()); - Socket s = ss.accept(); - InputStream is = s.getInputStream(); - // We want the client to block so deadlock - is.read(); - } catch (IOException e) { - // Happens when client closese connection. - // If an error occurs, Client will detect problem - } - } - } - - /** - * Initiates an SSL connection to a server. Then blocks in a read. It - * should be interrupted by another thread. An InterruptedIOException - * is expected to be thrown. - */ - static class Client extends Thread { - - private SSLSocket socket; - private InputStream inStream; - private boolean failed = false; - - public Client(int port) throws Exception { - socket = (SSLSocket) SSLSocketFactory.getDefault(). - createSocket("localhost", port); - inStream = socket.getInputStream(); - System.out.println("Client - " - + "Connected to: localhost" + ":" + port); - System.out.println("Client - " - + "Doing SSL Handshake..."); - socket.startHandshake(); // Asynchronous call - System.out.println("Client - Done with SSL Handshake"); - } - - public void run() { - - try { - System.out.println("Client - Reading from input stream ..."); - if (inStream.read() == -1) { - System.out.println("Client - End-of-stream detected"); - failed = true; - } - } catch (InterruptedIOException e) { - System.out.println("Client - " - + "As expected, InterruptedIOException " - + "was thrown. Message: " - + e.getMessage()); - } catch (Exception e) { - System.out.println("Client - Unexpected exception:"); - e.printStackTrace(); - failed = true; - } finally { - try { - socket.close(); - } catch (IOException e) { - // Squelch it - } - } - } - - public boolean failed() { - return failed; - } - - } - -} diff --git a/test/tools/launcher/ExecutionEnvironment.java b/test/tools/launcher/ExecutionEnvironment.java index fec9f6a0ba8b9cf7c57133f0f3474231263523d7..720df5e126e5c6da286659662535c399e7f6e602 100644 --- a/test/tools/launcher/ExecutionEnvironment.java +++ b/test/tools/launcher/ExecutionEnvironment.java @@ -299,8 +299,8 @@ public class ExecutionEnvironment { if (TestHelper.is32Bit) { tr = TestHelper.doExec(TestHelper.javaCmd, "-client", "-version"); - if (!tr.matches("Java.*Client VM.*")) { - System.out.println("FAIL: the expected vm -client did launch"); + if (!tr.matches(".*Client VM.*")) { + System.out.println("FAIL: the expected vm -client did not launch"); System.out.println(tr); errors++; } else { @@ -308,8 +308,8 @@ public class ExecutionEnvironment { } } tr = TestHelper.doExec(TestHelper.javaCmd, "-server", "-version"); - if (!tr.matches("Java.*Server VM.*")) { - System.out.println("FAIL: the expected vm -server did launch"); + if (!tr.matches(".*Server VM.*")) { + System.out.println("FAIL: the expected vm -server did not launch"); System.out.println(tr); errors++; } else { diff --git a/test/tools/launcher/VersionCheck.java b/test/tools/launcher/VersionCheck.java index a1bca7593d17732cd417246dc9afafd27a1103c9..acef7bbea00009c25bb9d8967b1259e653f69935 100644 --- a/test/tools/launcher/VersionCheck.java +++ b/test/tools/launcher/VersionCheck.java @@ -132,7 +132,7 @@ public class VersionCheck { StringBuilder out = new StringBuilder(); // remove the HotSpot line for (String x : alist) { - if (!x.contains("HotSpot")) { + if (!x.matches(".*Client.*VM.*|.*Server.*VM.*")) { out = out.append(x + "\n"); } }