/hg/icedtea6: 2 new changesets
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Wed Mar 6 11:22:56 PST 2013
changeset ed710bbd6305 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ed710bbd6305
author: Andrew John Hughes <gnu.andrew at redhat.com>
date: Wed Feb 20 13:11:53 2013 +1100
Add release notes for 1.11.8 & 1.12.3.
2013-02-20 Andrew John Hughes <gnu.andrew at redhat.com>
* NEWS:
Add 1.11.8 & 1.12.3 release notes.
changeset 9389cc43b7b8 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9389cc43b7b8
author: Andrew John Hughes <gnu.andrew at redhat.com>
date: Wed Mar 06 19:22:19 2013 +0000
Add 2013/02/19 security patches.
2013-02-15 Andrew John Hughes <gnu.andrew at redhat.com>
* Makefile.am:
(SECURITY_PATCHES): Add latest security patches.
* patches/security/20130219/8006446.patch,
* patches/security/20130219/8006777.patch,
* patches/security/20130219/8007688.patch:
New patches for next security update.
diffstat:
ChangeLog | 14 +
Makefile.am | 5 +-
NEWS | 25 +
patches/security/20130219/8006446.patch | 395 +++++++++++
patches/security/20130219/8006777.patch | 1036 +++++++++++++++++++++++++++++++
patches/security/20130219/8007688.patch | 130 +++
6 files changed, 1604 insertions(+), 1 deletions(-)
diffs (truncated from 1644 to 500 lines):
diff -r 9b60104392f1 -r 9389cc43b7b8 ChangeLog
--- a/ChangeLog Sun Feb 17 16:27:54 2013 +0000
+++ b/ChangeLog Wed Mar 06 19:22:19 2013 +0000
@@ -1,3 +1,17 @@
+2013-02-15 Andrew John Hughes <gnu.andrew at redhat.com>
+
+ * Makefile.am:
+ (SECURITY_PATCHES): Add latest security patches.
+ * patches/security/20130219/8006446.patch,
+ * patches/security/20130219/8006777.patch,
+ * patches/security/20130219/8007688.patch:
+ New patches for next security update.
+
+2013-02-20 Andrew John Hughes <gnu.andrew at redhat.com>
+
+ * NEWS:
+ Add 1.11.8 & 1.12.3 release notes.
+
2013-02-17 Andrew John Hughes <gnu.andrew at redhat.com>
* .hgignore: Fix so the cacao patches directory
diff -r 9b60104392f1 -r 9389cc43b7b8 Makefile.am
--- a/Makefile.am Sun Feb 17 16:27:54 2013 +0000
+++ b/Makefile.am Wed Mar 06 19:22:19 2013 +0000
@@ -273,7 +273,10 @@
patches/security/20130201/8001242.patch \
patches/security/20130201/8001972.patch \
patches/security/20130201/8002325.patch \
- patches/security/20130201/8001235.patch
+ patches/security/20130201/8001235.patch \
+ patches/security/20130219/8006446.patch \
+ patches/security/20130219/8006777.patch \
+ patches/security/20130219/8007688.patch
if !WITH_ALT_HSBUILD
SECURITY_PATCHES += \
diff -r 9b60104392f1 -r 9389cc43b7b8 NEWS
--- a/NEWS Sun Feb 17 16:27:54 2013 +0000
+++ b/NEWS Wed Mar 06 19:22:19 2013 +0000
@@ -17,6 +17,31 @@
* Bug fixes
- PR1318: Fix automatic enabling of the Zero build on non-JIT architectures which don't use CACAO or JamVM.
+New in release 1.12.3 (2013-02-19):
+
+* Security fixes
+ - S8006446, CVE-2013-1486: Restrict MBeanServer access
+ - S8006777, CVE-2013-0169: Improve TLS handling of invalid messages
+ - S8007688: Blacklist known bad certificate
+* Backports
+ - S8007393: Possible race condition after JDK-6664509
+ - S8007611: logging behavior in applet changed
+* Bug fixes
+ - PR1319: Support GIF lib v5.
+
+New in release 1.11.8 (2013-02-19):
+
+* Security fixes
+ - S8006446, CVE-2013-1486: Restrict MBeanServer access
+ - S8006777, CVE-2013-0169: Improve TLS handling of invalid messages
+ - S8007688: Blacklist known bad certificate
+* Backports
+ - S7123519: problems with certification path
+ - S8007393: Possible race condition after JDK-6664509
+ - S8007611: logging behavior in applet changed
+* Bug fixes
+ - PR1319: Support GIF lib v5.
+
New in release 1.12.2 (2013-02-11):
* Backports
diff -r 9b60104392f1 -r 9389cc43b7b8 patches/security/20130219/8006446.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20130219/8006446.patch Wed Mar 06 19:22:19 2013 +0000
@@ -0,0 +1,395 @@
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java 2011-11-14 22:11:44.000000000 +0000
++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java 2013-02-15 03:40:40.511587149 +0000
+@@ -36,6 +36,7 @@
+
+ import javax.management.ObjectName;
+ import javax.management.loading.PrivateClassLoader;
++import sun.reflect.misc.ReflectUtil;
+
+ /**
+ * This class keeps the list of Class Loaders registered in the MBean Server.
+@@ -192,6 +193,7 @@
+ final ClassLoader without,
+ final ClassLoader stop)
+ throws ClassNotFoundException {
++ ReflectUtil.checkPackageAccess(className);
+ final int size = list.length;
+ for(int i=0; i<size; i++) {
+ try {
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java 2011-11-14 22:11:44.000000000 +0000
++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java 2013-02-15 03:40:40.511587149 +0000
+@@ -57,6 +57,7 @@
+ import javax.management.RuntimeOperationsException;
+ import javax.management.MBeanServer;
+ import javax.management.MBeanServerDelegate;
++import javax.management.MBeanServerPermission;
+ import javax.management.loading.ClassLoaderRepository;
+
+ import static com.sun.jmx.defaults.JmxProperties.MBEANSERVER_LOGGER;
+@@ -1413,6 +1414,8 @@
+ // Default is true.
+ final boolean fairLock = DEFAULT_FAIR_LOCK_POLICY;
+
++ checkNewMBeanServerPermission();
++
+ // This constructor happens to disregard the value of the interceptors
+ // flag - that is, it always uses the default value - false.
+ // This is admitedly a bug, but we chose not to fix it for now
+@@ -1499,4 +1502,11 @@
+ }
+ }
+
++ private static void checkNewMBeanServerPermission() {
++ SecurityManager sm = System.getSecurityManager();
++ if (sm != null) {
++ Permission perm = new MBeanServerPermission("newMBeanServer");
++ sm.checkPermission(perm);
++ }
++ }
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java 2011-11-14 22:11:44.000000000 +0000
++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java 2013-02-15 03:40:40.511587149 +0000
+@@ -32,11 +32,13 @@
+ import java.io.ObjectInputStream;
+ import java.lang.reflect.Constructor;
+ import java.lang.reflect.InvocationTargetException;
++import java.security.Permission;
+ import java.util.Map;
+ import java.util.logging.Level;
+
+ import javax.management.InstanceNotFoundException;
+ import javax.management.MBeanException;
++import javax.management.MBeanPermission;
+ import javax.management.NotCompliantMBeanException;
+ import javax.management.ObjectName;
+ import javax.management.OperationsException;
+@@ -44,7 +46,7 @@
+ import javax.management.RuntimeErrorException;
+ import javax.management.RuntimeMBeanException;
+ import javax.management.RuntimeOperationsException;
+-
++import sun.reflect.misc.ConstructorUtil;
+ import sun.reflect.misc.ReflectUtil;
+
+ /**
+@@ -56,7 +58,6 @@
+ * @since 1.5
+ */
+ public class MBeanInstantiator {
+-
+ private final ModifiableClassLoaderRepository clr;
+ // private MetaData meta = null;
+
+@@ -88,6 +89,7 @@
+ "Exception occurred during object instantiation");
+ }
+
++ ReflectUtil.checkPackageAccess(className);
+ try {
+ if (clr == null) throw new ClassNotFoundException(className);
+ theClass = clr.loadClass(className);
+@@ -162,6 +164,7 @@
+ continue;
+ }
+
++ ReflectUtil.checkPackageAccess(signature[i]);
+ // Ok we do not have a primitive type ! We need to build
+ // the signature of the method
+ //
+@@ -205,6 +208,9 @@
+ */
+ public Object instantiate(Class theClass)
+ throws ReflectionException, MBeanException {
++
++ checkMBeanPermission(theClass, null, null, "instantiate");
++
+ Object moi = null;
+
+
+@@ -260,6 +266,9 @@
+ public Object instantiate(Class theClass, Object params[],
+ String signature[], ClassLoader loader)
+ throws ReflectionException, MBeanException {
++
++ checkMBeanPermission(theClass, null, null, "instantiate");
++
+ // Instantiate the new object
+
+ // ------------------------------
+@@ -408,6 +417,8 @@
+ throw new RuntimeOperationsException(new
+ IllegalArgumentException(), "Null className passed in parameter");
+ }
++
++ ReflectUtil.checkPackageAccess(className);
+ Class theClass = null;
+ if (loaderName == null) {
+ // Load the class using the agent class loader
+@@ -620,13 +631,13 @@
+ **/
+ static Class loadClass(String className, ClassLoader loader)
+ throws ReflectionException {
+-
+ Class theClass = null;
+ if (className == null) {
+ throw new RuntimeOperationsException(new
+ IllegalArgumentException("The class name cannot be null"),
+ "Exception occurred during object instantiation");
+ }
++ ReflectUtil.checkPackageAccess(className);
+ try {
+ if (loader == null)
+ loader = MBeanInstantiator.class.getClassLoader();
+@@ -677,6 +688,7 @@
+ // We need to load the class through the class
+ // loader of the target object.
+ //
++ ReflectUtil.checkPackageAccess(signature[i]);
+ tab[i] = Class.forName(signature[i], false, aLoader);
+ }
+ } catch (ClassNotFoundException e) {
+@@ -702,7 +714,7 @@
+
+ private Constructor<?> findConstructor(Class<?> c, Class<?>[] params) {
+ try {
+- return c.getConstructor(params);
++ return ConstructorUtil.getConstructor(c, params);
+ } catch (Exception e) {
+ return null;
+ }
+@@ -716,4 +728,18 @@
+ char.class, boolean.class})
+ primitiveClasses.put(c.getName(), c);
+ }
++
++ private static void checkMBeanPermission(Class<?> clazz,
++ String member,
++ ObjectName objectName,
++ String actions) {
++ SecurityManager sm = System.getSecurityManager();
++ if (clazz != null && sm != null) {
++ Permission perm = new MBeanPermission(clazz.getName(),
++ member,
++ objectName,
++ actions);
++ sm.checkPermission(perm);
++ }
++ }
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java 2011-11-14 22:11:44.000000000 +0000
++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java 2013-02-15 03:40:40.511587149 +0000
+@@ -38,6 +38,7 @@
+ import javax.management.NotCompliantMBeanException;
+ import javax.management.ObjectName;
+ import javax.management.ReflectionException;
++import sun.reflect.misc.ReflectUtil;
+
+ /**
+ * Base class for MBeans. There is one instance of this class for
+@@ -131,6 +132,7 @@
+ " is not an instance of " + mbeanInterface.getName();
+ throw new NotCompliantMBeanException(msg);
+ }
++ ReflectUtil.checkPackageAccess(mbeanInterface);
+ this.resource = resource;
+ MBeanIntrospector<M> introspector = getMBeanIntrospector();
+ this.perInterface = introspector.getPerInterface(mbeanInterface);
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/management/LockDataConverter.java openjdk/jdk/src/share/classes/sun/management/LockDataConverter.java
+--- openjdk.orig/jdk/src/share/classes/sun/management/LockDataConverter.java 2011-11-14 22:12:00.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/management/LockDataConverter.java 2013-02-15 03:40:40.511587149 +0000
+@@ -27,6 +27,8 @@
+
+ import java.lang.management.LockInfo;
+ import java.lang.management.ThreadInfo;
++import java.security.AccessController;
++import java.security.PrivilegedAction;
+ import javax.management.Attribute;
+ import javax.management.StandardMBean;
+ import javax.management.openmbean.CompositeData;
+@@ -40,13 +42,13 @@
+ private LockInfo lockInfo;
+ private LockInfo[] lockedSyncs;
+
+- LockDataConverter() {
++ private LockDataConverter() {
+ super(LockDataConverterMXBean.class, true);
+ this.lockInfo = null;
+ this.lockedSyncs = null;
+ }
+
+- LockDataConverter(ThreadInfo ti) {
++ private LockDataConverter(ThreadInfo ti) {
+ super(LockDataConverterMXBean.class, true);
+ this.lockInfo = ti.getLockInfo();
+ this.lockedSyncs = ti.getLockedSynchronizers();
+@@ -104,8 +106,24 @@
+ }
+
+ static CompositeData toLockInfoCompositeData(LockInfo l) {
+- LockDataConverter ldc = new LockDataConverter();
++ LockDataConverter ldc = newLockDataConverter();
+ ldc.setLockInfo(l);
+ return ldc.toLockInfoCompositeData();
+ }
++
++ static LockDataConverter newLockDataConverter() {
++ return AccessController.doPrivileged(new PrivilegedAction<LockDataConverter>() {
++ public LockDataConverter run() {
++ return new LockDataConverter();
++ }
++ });
++ }
++
++ static LockDataConverter newLockDataConverter(final ThreadInfo ti) {
++ LockDataConverter result = newLockDataConverter();
++ result.lockInfo = ti.getLockInfo();
++ result.lockedSyncs = ti.getLockedSynchronizers();
++ return result;
++ }
+ }
++
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java openjdk/jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java
+--- openjdk.orig/jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java 2011-11-14 22:12:01.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java 2013-02-15 03:40:40.511587149 +0000
+@@ -85,7 +85,7 @@
+ }
+
+ // Convert MonitorInfo[] and LockInfo[] to CompositeData[]
+- LockDataConverter converter = new LockDataConverter(threadInfo);
++ LockDataConverter converter = LockDataConverter.newLockDataConverter(threadInfo);
+ CompositeData lockInfoData = converter.toLockInfoCompositeData();
+ CompositeData[] lockedSyncsData = converter.toLockedSynchronizersCompositeData();
+
+@@ -315,7 +315,7 @@
+
+ // 6.0 new attributes
+ public LockInfo lockInfo() {
+- LockDataConverter converter = new LockDataConverter();
++ LockDataConverter converter = LockDataConverter.newLockDataConverter();
+ CompositeData lockInfoData = (CompositeData) cdata.get(LOCK_INFO);
+ return converter.toLockInfo(lockInfoData);
+ }
+@@ -336,7 +336,7 @@
+ }
+
+ public LockInfo[] lockedSynchronizers() {
+- LockDataConverter converter = new LockDataConverter();
++ LockDataConverter converter = LockDataConverter.newLockDataConverter();
+ CompositeData[] lockedSyncsData =
+ (CompositeData[]) cdata.get(LOCKED_SYNCS);
+
+diff -Nru openjdk.orig/jdk/src/share/lib/security/java.security openjdk/jdk/src/share/lib/security/java.security
+--- openjdk.orig/jdk/src/share/lib/security/java.security 2013-02-15 03:39:56.922892783 +0000
++++ openjdk/jdk/src/share/lib/security/java.security 2013-02-15 03:40:40.511587149 +0000
+@@ -131,8 +131,7 @@
+ com.sun.xml.internal.,\
+ com.sun.imageio.,\
+ com.sun.istack.internal.,\
+- com.sun.jmx.defaults.,\
+- com.sun.jmx.remote.util.
++ com.sun.jmx.
+
+ #
+ # List of comma-separated packages that start with or equal this string
+@@ -148,8 +147,7 @@
+ com.sun.xml.internal.,\
+ com.sun.imageio.,\
+ com.sun.istack.internal.,\
+- com.sun.jmx.defaults.,\
+- com.sun.jmx.remote.util.
++ com.sun.jmx.
+
+ #
+ # Determines whether this properties file can be appended to
+diff -Nru openjdk.orig/jdk/src/share/lib/security/java.security-solaris openjdk/jdk/src/share/lib/security/java.security-solaris
+--- openjdk.orig/jdk/src/share/lib/security/java.security-solaris 2013-02-15 03:39:56.902892466 +0000
++++ openjdk/jdk/src/share/lib/security/java.security-solaris 2013-02-15 03:41:36.996489851 +0000
+@@ -131,6 +131,8 @@
+ package.access=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.
++ com.sun.istack.internal.,\
++ com.sun.jmx.
+
+ #
+ # List of comma-separated packages that start with or equal this string
+@@ -145,6 +147,8 @@
+ package.definition=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.
++ com.sun.istack.internal.,\
++ com.sun.jmx.
+
+ #
+ # Determines whether this properties file can be appended to
+diff -Nru openjdk.orig/jdk/src/share/lib/security/java.security-windows openjdk/jdk/src/share/lib/security/java.security-windows
+--- openjdk.orig/jdk/src/share/lib/security/java.security-windows 2013-02-15 03:39:56.902892466 +0000
++++ openjdk/jdk/src/share/lib/security/java.security-windows 2013-02-15 03:42:05.304943135 +0000
+@@ -131,6 +131,8 @@
+ package.access=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.
++ com.sun.istack.internal.,\
++ com.sun.jmx.
+
+ #
+ # List of comma-separated packages that start with or equal this string
+@@ -145,6 +147,8 @@
+ package.definition=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.
++ com.sun.istack.internal.,\
++ com.sun.jmx.
+
+ #
+ # Determines whether this properties file can be appended to
+diff -Nru openjdk.orig/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation2Test.java openjdk/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation2Test.java
+--- openjdk.orig/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation2Test.java 2011-11-14 22:12:28.000000000 +0000
++++ openjdk/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation2Test.java 2013-02-15 03:40:40.511587149 +0000
+@@ -119,9 +119,6 @@
+ System.out.println("Create SimpleStandard MBean");
+ SimpleStandard s = new SimpleStandard("monitorRole");
+ mbs.registerMBean(s, new ObjectName("MBeans:type=SimpleStandard"));
+- // Set Security Manager
+- //
+- System.setSecurityManager(new SecurityManager());
+ // Create Properties containing the username/password entries
+ //
+ Properties props = new Properties();
+@@ -132,6 +129,9 @@
+ HashMap env = new HashMap();
+ env.put("jmx.remote.authenticator",
+ new JMXPluggableAuthenticator(props));
++ // Set Security Manager
++ //
++ System.setSecurityManager(new SecurityManager());
+ // Create an RMI connector server
+ //
+ System.out.println("Create an RMI connector server");
+diff -Nru openjdk.orig/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation3Test.java openjdk/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation3Test.java
+--- openjdk.orig/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation3Test.java 2011-11-14 22:12:28.000000000 +0000
++++ openjdk/jdk/test/javax/management/remote/mandatory/subjectDelegation/SubjectDelegation3Test.java 2013-02-15 03:40:40.511587149 +0000
+@@ -120,9 +120,6 @@
+ System.out.println("Create SimpleStandard MBean");
+ SimpleStandard s = new SimpleStandard("delegate");
+ mbs.registerMBean(s, new ObjectName("MBeans:type=SimpleStandard"));
+- // Set Security Manager
+- //
+- System.setSecurityManager(new SecurityManager());
+ // Create Properties containing the username/password entries
+ //
+ Properties props = new Properties();
+@@ -133,6 +130,9 @@
+ HashMap env = new HashMap();
+ env.put("jmx.remote.authenticator",
+ new JMXPluggableAuthenticator(props));
++ // Set Security Manager
++ //
++ System.setSecurityManager(new SecurityManager());
+ // Create an RMI connector server
+ //
+ System.out.println("Create an RMI connector server");
diff -r 9b60104392f1 -r 9389cc43b7b8 patches/security/20130219/8006777.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20130219/8006777.patch Wed Mar 06 19:22:19 2013 +0000
@@ -0,0 +1,1036 @@
+# HG changeset patch
+# User coffeys
+# Date 1360882104 0
+# Node ID 85b3b034fdecdc94f082efa8d74e014366502deb
+# Parent 617e68a3948824283f15c36fcd8cf264c1dd0a99
+8006777: Improve TLS handling of invalid messages
+Reviewed-by: wetmore
+
+diff --git a/src/share/classes/sun/security/ssl/CipherBox.java b/src/share/classes/sun/security/ssl/CipherBox.java
+--- openjdk/jdk/src/share/classes/sun/security/ssl/CipherBox.java
++++ openjdk/jdk/src/share/classes/sun/security/ssl/CipherBox.java
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2013, 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
+@@ -244,7 +244,8 @@ final class CipherBox {
+ * Decrypts a block of data, returning the size of the
+ * resulting block if padding was required.
+ */
+- int decrypt(byte[] buf, int offset, int len) throws BadPaddingException {
++ int decrypt(byte[] buf, int offset, int len,
++ int tagLen) throws BadPaddingException {
+ if (cipher == null) {
More information about the distro-pkg-dev
mailing list