undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
409
test/jdk/java/beans/XMLEncoder/Test4625418.java
Normal file
409
test/jdk/java/beans/XMLEncoder/Test4625418.java
Normal file
|
|
@ -0,0 +1,409 @@
|
|||
/*
|
||||
* Copyright (c) 2006, 2022, 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 4625418 8239965 8290488
|
||||
* @summary Tests XML <a href="http://download.java.net/jdk6/docs/technotes/guides/intl/encoding.doc.html">encoding</a>
|
||||
* @author Sergey Malenkov
|
||||
* @run main/timeout=360 Test4625418
|
||||
*/
|
||||
|
||||
import java.beans.ExceptionListener;
|
||||
import java.beans.XMLDecoder;
|
||||
import java.beans.XMLEncoder;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.IllegalCharsetNameException;
|
||||
import java.nio.charset.UnsupportedCharsetException;
|
||||
|
||||
public final class Test4625418 implements ExceptionListener {
|
||||
|
||||
private static final String[] encodings = {
|
||||
"ASCII",
|
||||
"Big5",
|
||||
//"Big5-HKSCS",
|
||||
//"Big5_HKSCS",
|
||||
"Big5_Solaris",
|
||||
//"Cp037",
|
||||
"Cp1006",
|
||||
//"Cp1025",
|
||||
//"Cp1026",
|
||||
"Cp1046",
|
||||
"Cp1047",
|
||||
"Cp1097",
|
||||
"Cp1098",
|
||||
//"Cp1112",
|
||||
//"Cp1122",
|
||||
//"Cp1123",
|
||||
"Cp1124",
|
||||
//"Cp1140",
|
||||
//"Cp1141",
|
||||
//"Cp1142",
|
||||
//"Cp1143",
|
||||
//"Cp1144",
|
||||
//"Cp1145",
|
||||
//"Cp1146",
|
||||
//"Cp1147",
|
||||
//"Cp1148",
|
||||
//"Cp1149",
|
||||
"Cp1250",
|
||||
"Cp1251",
|
||||
"Cp1252",
|
||||
"Cp1253",
|
||||
"Cp1254",
|
||||
"Cp1255",
|
||||
"Cp1256",
|
||||
"Cp1257",
|
||||
"Cp1258",
|
||||
//"Cp1381",
|
||||
//"Cp1383",
|
||||
//"Cp273",
|
||||
//"Cp277",
|
||||
//"Cp278",
|
||||
//"Cp280",
|
||||
//"Cp284",
|
||||
//"Cp285",
|
||||
//"Cp297",
|
||||
//"Cp33722",
|
||||
//"Cp420",
|
||||
//"Cp424",
|
||||
"Cp437",
|
||||
//"Cp500",
|
||||
//"Cp50220",
|
||||
//"Cp50221",
|
||||
"Cp737",
|
||||
"Cp775",
|
||||
//"Cp834",
|
||||
//"Cp838",
|
||||
"Cp850",
|
||||
"Cp852",
|
||||
"Cp855",
|
||||
"Cp856",
|
||||
"Cp857",
|
||||
"Cp858",
|
||||
"Cp860",
|
||||
"Cp861",
|
||||
"Cp862",
|
||||
"Cp863",
|
||||
//"Cp864",
|
||||
"Cp865",
|
||||
"Cp866",
|
||||
"Cp868",
|
||||
"Cp869",
|
||||
//"Cp870",
|
||||
//"Cp871",
|
||||
"Cp874",
|
||||
//"Cp875",
|
||||
//"Cp918",
|
||||
"Cp921",
|
||||
"Cp922",
|
||||
//"Cp930",
|
||||
"Cp933",
|
||||
//"Cp935",
|
||||
//"Cp937",
|
||||
//"Cp939",
|
||||
//"Cp942",
|
||||
//"Cp942C",
|
||||
//"Cp943",
|
||||
//"Cp943C",
|
||||
"Cp948",
|
||||
"Cp949",
|
||||
//"Cp949C",
|
||||
"Cp950",
|
||||
"Cp964",
|
||||
//"Cp970",
|
||||
//"EUC-JP",
|
||||
"EUC-KR",
|
||||
"EUC_CN",
|
||||
//"EUC_JP",
|
||||
//"EUC_JP_LINUX",
|
||||
//"EUC_JP_Solaris",
|
||||
"EUC_KR",
|
||||
//"EUC_TW",
|
||||
"GB18030",
|
||||
"GB2312",
|
||||
"GBK",
|
||||
//"IBM-Thai",
|
||||
"IBM00858",
|
||||
//"IBM01140",
|
||||
//"IBM01141",
|
||||
//"IBM01142",
|
||||
//"IBM01143",
|
||||
//"IBM01144",
|
||||
//"IBM01145",
|
||||
//"IBM01146",
|
||||
//"IBM01147",
|
||||
//"IBM01148",
|
||||
//"IBM01149",
|
||||
//"IBM037",
|
||||
//"IBM1026",
|
||||
"IBM1047",
|
||||
//"IBM273",
|
||||
//"IBM277",
|
||||
//"IBM278",
|
||||
//"IBM280",
|
||||
//"IBM284",
|
||||
//"IBM285",
|
||||
//"IBM297",
|
||||
//"IBM420",
|
||||
//"IBM424",
|
||||
"IBM437",
|
||||
//"IBM500",
|
||||
"IBM775",
|
||||
"IBM850",
|
||||
"IBM852",
|
||||
"IBM855",
|
||||
"IBM857",
|
||||
"IBM860",
|
||||
"IBM861",
|
||||
"IBM862",
|
||||
"IBM863",
|
||||
//"IBM864",
|
||||
"IBM865",
|
||||
"IBM866",
|
||||
"IBM868",
|
||||
"IBM869",
|
||||
//"IBM870",
|
||||
//"IBM871",
|
||||
//"IBM918",
|
||||
//"ISCII91",
|
||||
//"ISO-2022-CN",
|
||||
"ISO-2022-JP",
|
||||
"ISO-2022-KR",
|
||||
"ISO-8859-1",
|
||||
"ISO-8859-13",
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-2",
|
||||
"ISO-8859-3",
|
||||
"ISO-8859-4",
|
||||
"ISO-8859-5",
|
||||
"ISO-8859-6",
|
||||
"ISO-8859-7",
|
||||
"ISO-8859-8",
|
||||
"ISO-8859-9",
|
||||
//"ISO2022CN",
|
||||
"ISO2022JP",
|
||||
"ISO2022KR",
|
||||
//"ISO2022_CN_CNS",
|
||||
//"ISO2022_CN_GB",
|
||||
"ISO8859_1",
|
||||
"ISO8859_13",
|
||||
"ISO8859_15",
|
||||
"ISO8859_2",
|
||||
"ISO8859_3",
|
||||
"ISO8859_4",
|
||||
"ISO8859_5",
|
||||
"ISO8859_6",
|
||||
"ISO8859_7",
|
||||
"ISO8859_8",
|
||||
"ISO8859_9",
|
||||
//"JISAutoDetect",
|
||||
//"JIS_X0201",
|
||||
//"JIS_X0212-1990",
|
||||
"KOI8-R",
|
||||
"KOI8-U",
|
||||
"KOI8_R",
|
||||
"KOI8_U",
|
||||
"MS874",
|
||||
//"MS932",
|
||||
//"MS936",
|
||||
"MS949",
|
||||
"MS950",
|
||||
//"MS950_HKSCS",
|
||||
"MacArabic",
|
||||
"MacCentralEurope",
|
||||
"MacCroatian",
|
||||
"MacCyrillic",
|
||||
//"MacDingbat",
|
||||
"MacGreek",
|
||||
"MacHebrew",
|
||||
"MacIceland",
|
||||
"MacRoman",
|
||||
"MacRomania",
|
||||
//"MacSymbol",
|
||||
"MacThai",
|
||||
"MacTurkish",
|
||||
"MacUkraine",
|
||||
//"PCK",
|
||||
//"SJIS",
|
||||
//"Shift_JIS",
|
||||
"TIS-620",
|
||||
"TIS620",
|
||||
"US-ASCII",
|
||||
"UTF-16",
|
||||
"UTF-16BE",
|
||||
"UTF-16LE",
|
||||
"UTF-32",
|
||||
"UTF-32BE",
|
||||
"UTF-32LE",
|
||||
"UTF-8",
|
||||
"UTF8",
|
||||
"UTF_32",
|
||||
"UTF_32BE",
|
||||
//"UTF_32BE_BOM",
|
||||
"UTF_32LE",
|
||||
//"UTF_32LE_BOM",
|
||||
"UnicodeBig",
|
||||
"UnicodeBigUnmarked",
|
||||
"UnicodeLittle",
|
||||
"UnicodeLittleUnmarked",
|
||||
"windows-1250",
|
||||
"windows-1251",
|
||||
"windows-1252",
|
||||
"windows-1253",
|
||||
"windows-1254",
|
||||
"windows-1255",
|
||||
"windows-1256",
|
||||
"windows-1257",
|
||||
"windows-1258",
|
||||
//"windows-31j",
|
||||
//"x-Big5_Solaris",
|
||||
//"x-EUC-TW",
|
||||
"x-IBM1006",
|
||||
//"x-IBM1025",
|
||||
"x-IBM1046",
|
||||
"x-IBM1097",
|
||||
"x-IBM1098",
|
||||
//"x-IBM1112",
|
||||
//"x-IBM1122",
|
||||
//"x-IBM1123",
|
||||
"x-IBM1124",
|
||||
//"x-IBM1381",
|
||||
//"x-IBM1383",
|
||||
//"x-IBM33722",
|
||||
"x-IBM737",
|
||||
//"x-IBM834",
|
||||
"x-IBM856",
|
||||
"x-IBM874",
|
||||
//"x-IBM875",
|
||||
"x-IBM921",
|
||||
"x-IBM922",
|
||||
//"x-IBM930",
|
||||
"x-IBM933",
|
||||
//"x-IBM935",
|
||||
//"x-IBM937",
|
||||
//"x-IBM939",
|
||||
//"x-IBM942",
|
||||
//"x-IBM942C",
|
||||
//"x-IBM943",
|
||||
//"x-IBM943C",
|
||||
"x-IBM948",
|
||||
"x-IBM949",
|
||||
//"x-IBM949C",
|
||||
"x-IBM950",
|
||||
"x-IBM964",
|
||||
//"x-IBM970",
|
||||
//"x-ISCII91",
|
||||
//"x-ISO2022-CN-CNS",
|
||||
//"x-ISO2022-CN-GB",
|
||||
//"x-JIS0208",
|
||||
//"x-JISAutoDetect",
|
||||
"x-Johab",
|
||||
//"x-MS950-HKSCS",
|
||||
"x-MacArabic",
|
||||
"x-MacCentralEurope",
|
||||
"x-MacCroatian",
|
||||
"x-MacCyrillic",
|
||||
//"x-MacDingbat",
|
||||
"x-MacGreek",
|
||||
"x-MacHebrew",
|
||||
"x-MacIceland",
|
||||
"x-MacRoman",
|
||||
"x-MacRomania",
|
||||
//"x-MacSymbol",
|
||||
"x-MacThai",
|
||||
"x-MacTurkish",
|
||||
"x-MacUkraine",
|
||||
//"x-PCK",
|
||||
"x-UTF-16LE-BOM",
|
||||
//"x-UTF-32BE-BOM",
|
||||
//"x-UTF-32LE-BOM",
|
||||
//"x-euc-jp-linux",
|
||||
//"x-eucJP-Open",
|
||||
"x-iso-8859-11",
|
||||
"x-mswin-936",
|
||||
//"x-windows-50220",
|
||||
//"x-windows-50221",
|
||||
"x-windows-874",
|
||||
"x-windows-949",
|
||||
"x-windows-950",
|
||||
//"x-windows-iso2022jp",
|
||||
};
|
||||
|
||||
public static void main(final String[] args) {
|
||||
final String string = createString(0x10000);
|
||||
for (String encoding : encodings) {
|
||||
System.out.println("Test encoding: " + encoding);
|
||||
new Test4625418(encoding).test(string);
|
||||
}
|
||||
}
|
||||
|
||||
private static String createString(int length) {
|
||||
StringBuilder sb = new StringBuilder(length);
|
||||
while (0 < length--)
|
||||
sb.append((char) length);
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private final String encoding;
|
||||
|
||||
private Test4625418(final String encoding) {
|
||||
this.encoding = encoding;
|
||||
}
|
||||
|
||||
private void test(String string) {
|
||||
try {
|
||||
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||
XMLEncoder encoder = new XMLEncoder(output, this.encoding, true, 0);
|
||||
encoder.setExceptionListener(this);
|
||||
encoder.writeObject(string);
|
||||
encoder.close();
|
||||
|
||||
InputStream input = new ByteArrayInputStream(output.toByteArray());
|
||||
XMLDecoder decoder = new XMLDecoder(input);
|
||||
decoder.setExceptionListener(this);
|
||||
Object object = decoder.readObject();
|
||||
decoder.close();
|
||||
|
||||
if (!string.equals(object)) {
|
||||
throw new Error(this.encoding + " - can't read properly");
|
||||
}
|
||||
}
|
||||
catch (IllegalCharsetNameException exception) {
|
||||
throw new Error(this.encoding + " - illegal charset name", exception);
|
||||
}
|
||||
catch (UnsupportedCharsetException exception) {
|
||||
throw new Error(this.encoding + " - unsupported charset", exception);
|
||||
}
|
||||
catch (UnsupportedOperationException exception) {
|
||||
throw new Error(this.encoding + " - unsupported encoder", exception);
|
||||
}
|
||||
}
|
||||
|
||||
public void exceptionThrown(Exception exception) {
|
||||
throw new Error(this.encoding + " - internal", exception);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue