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
37
test/jdk/sun/security/util/BitArray/EmptyBitArray.java
Normal file
37
test/jdk/sun/security/util/BitArray/EmptyBitArray.java
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* 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 8234377
|
||||
* @summary new BitArray(0).toString() throws ArrayIndexOutOfBoundsException
|
||||
* @modules java.base/sun.security.util
|
||||
*/
|
||||
|
||||
import sun.security.util.BitArray;
|
||||
|
||||
public class EmptyBitArray {
|
||||
public static void main(String[] args) {
|
||||
new BitArray(0).toString();
|
||||
}
|
||||
}
|
||||
111
test/jdk/sun/security/util/BitArray/NamedBitList.java
Normal file
111
test/jdk/sun/security/util/BitArray/NamedBitList.java
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* Copyright (c) 2006, 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
|
||||
* @author Weijun Wang
|
||||
* @bug 4654195
|
||||
* @summary BIT STRING types with named bits must remove trailing 0 bits
|
||||
* @modules java.base/sun.security.util
|
||||
* java.base/sun.security.x509
|
||||
*/
|
||||
|
||||
import sun.security.util.BitArray;
|
||||
import sun.security.util.DerOutputStream;
|
||||
import sun.security.util.DerValue;
|
||||
import sun.security.x509.DNSName;
|
||||
import sun.security.x509.DistributionPoint;
|
||||
import sun.security.x509.GeneralName;
|
||||
import sun.security.x509.GeneralNames;
|
||||
import sun.security.x509.KeyUsageExtension;
|
||||
import sun.security.x509.NetscapeCertTypeExtension;
|
||||
import sun.security.x509.ReasonFlags;
|
||||
|
||||
public class NamedBitList {
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
boolean[] bb = (new boolean[] {true, false, true, false, false, false});
|
||||
GeneralNames gns = new GeneralNames();
|
||||
gns.add(new GeneralName(new DNSName("dns")));
|
||||
DerOutputStream out;
|
||||
|
||||
// length should be 5 since only {T,F,T} should be encoded
|
||||
KeyUsageExtension x1 = new KeyUsageExtension(bb);
|
||||
check(new DerValue(x1.getExtensionValue()).getUnalignedBitString().length(), 3);
|
||||
|
||||
NetscapeCertTypeExtension x2 = new NetscapeCertTypeExtension(bb);
|
||||
check(new DerValue(x2.getExtensionValue()).getUnalignedBitString().length(), 3);
|
||||
|
||||
ReasonFlags r = new ReasonFlags(bb);
|
||||
out = new DerOutputStream();
|
||||
r.encode(out);
|
||||
check(new DerValue(out.toByteArray()).getUnalignedBitString().length(), 3);
|
||||
|
||||
// Read sun.security.x509.DistributionPoint for ASN.1 definition
|
||||
DistributionPoint dp = new DistributionPoint(gns, bb, gns);
|
||||
out = new DerOutputStream();
|
||||
dp.encode(out);
|
||||
DerValue v = new DerValue(out.toByteArray());
|
||||
// skip distributionPoint
|
||||
v.data.getDerValue();
|
||||
// read reasons
|
||||
DerValue v2 = v.data.getDerValue();
|
||||
// reset to BitString since it's context-specfic[1] encoded
|
||||
v2.resetTag(DerValue.tag_BitString);
|
||||
// length should be 5 since only {T,F,T} should be encoded
|
||||
check(v2.getUnalignedBitString().length(), 3);
|
||||
|
||||
BitArray ba;
|
||||
ba = new BitArray(new boolean[] {false, false, false});
|
||||
check(ba.length(), 3);
|
||||
ba = ba.truncate();
|
||||
check(ba.length(), 1);
|
||||
|
||||
ba = new BitArray(new boolean[] {
|
||||
true, true, true, true, true, true, true, true,
|
||||
false, false});
|
||||
check(ba.length(), 10);
|
||||
check(ba.toByteArray().length, 2);
|
||||
ba = ba.truncate();
|
||||
check(ba.length(), 8);
|
||||
check(ba.toByteArray().length, 1);
|
||||
|
||||
ba = new BitArray(new boolean[] {
|
||||
true, true, true, true, true, true, true, true,
|
||||
true, false});
|
||||
check(ba.length(), 10);
|
||||
check(ba.toByteArray().length, 2);
|
||||
ba = ba.truncate();
|
||||
check(ba.length(), 9);
|
||||
check(ba.toByteArray().length, 2);
|
||||
}
|
||||
|
||||
static void check(int la, int lb) throws Exception {
|
||||
if (la != lb) {
|
||||
System.err.println("Length is " + la + ", should be " + lb);
|
||||
throw new Exception("Encoding Error");
|
||||
} else {
|
||||
System.err.println("Correct, which is " + lb);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue