diff --git a/CVE-2018-1313.patch b/CVE-2018-1313.patch
deleted file mode 100644
index 1a14fd9565fc862a9ea572e7dce410df2c30973c..0000000000000000000000000000000000000000
--- a/CVE-2018-1313.patch
+++ /dev/null
@@ -1,540 +0,0 @@
-From a2027c64e185a9ce46929f352e2db03371c1f95b Mon Sep 17 00:00:00 2001
-From: Bryan Pendleton 
-Date: Sun, 11 Mar 2018 21:50:26 +0000
-Subject: [PATCH] Remove support for COMMAND_TESTCONNECTION connectToDatabase
- feature. It was never documented, and was never part of the regression tests.
-
-A new regression test demonstrates that attempting to use this feature
-now results in a "usage" response from the Network Server.
-
-Also, change the Network Server's default security policy file, as well
-as the template security policy file that we distribute with the
-release and in the documentation. The new policy files do not use
-the <> permission; instead they restrict the permission
-to certain directories only.
-
-Also, change the implementation of the Network Server's "sysinfo"
-sub-command. Prior to this change, that feature would open each
-jar file on the Network Server's class path, and would report on
-whatever information it could find about that jar file. Now, the
-only jar files that are opened and reported on are the known Derby
-jar files; a table of those jar file names is compiled into the
-sysinfo command. This causes sysinfo to return less information,
-but it also means that it only needs the permission to access the
-known Derby jar files on the classpath.
-
-
-git-svn-id: https://svn.apache.org/repos/asf/db/derby/code/branches/10.14@1826467 13f79535-47bb-0310-9956-ffa450edef68
----
- .../derby/drda/NetworkServerControl.java      |  24 +++-
- java/drda/org/apache/derby/drda/server.policy |  24 +---
- .../org/apache/derby/drda/template.policy     |  18 ++-
- .../impl/drda/NetworkServerControlImpl.java   |  48 +------
- .../apache/derby/iapi/reference/Property.java |   1 +
- .../derbynet/NetworkServerControlApiTest.java | 136 ++++++++++++++++++
- .../NetworkServerControlApiTest.policy        |   4 +
- .../apache/derby/impl/tools/sysinfo/Main.java |  41 ++++++
- 8 files changed, 222 insertions(+), 74 deletions(-)
-
-diff --git a/java/drda/org/apache/derby/drda/NetworkServerControl.java b/java/drda/org/apache/derby/drda/NetworkServerControl.java
-index 73a925b1ef..103342ec87 100644
---- a/java/drda/org/apache/derby/drda/NetworkServerControl.java
-+++ b/java/drda/org/apache/derby/drda/NetworkServerControl.java
-@@ -21,6 +21,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
- 
- package org.apache.derby.drda;
- 
-+import java.io.File;
- import java.io.PrintWriter;
- import java.net.Inet6Address;
- import java.net.InetAddress;
-@@ -686,10 +687,14 @@ private static  void installSecurityManager( NetworkServerControlImpl server )
-         // network codesources. Do not let the customer
-         // override this
-         //
--        String      derbyInstallURL = getCodeSourcePrefix( server );
-+        URL    derbyInstallURL = getCodeSourceURL( server );
-+        String derbyInstallStr = getCodeSourcePrefix( server, derbyInstallURL );
-+        String derbyInstallPth = new File(derbyInstallURL.getFile())
-+                                 .getParentFile().getAbsolutePath();
-+
-+        System.setProperty( Property.DERBY_INSTALL_URL, derbyInstallStr );
-+        System.setProperty( Property.DERBY_INSTALL_PATH, derbyInstallPth );
- 
--        System.setProperty( Property.DERBY_INSTALL_URL, derbyInstallURL );
--        
-         //
-         // Now install a SecurityManager, using the Basic policy file.
-         //
-@@ -790,7 +795,7 @@ private static  boolean isIPV6Address( String hostname )
-      * same directory.
-      * 
-      */
--    private static  String  getCodeSourcePrefix( NetworkServerControlImpl server )
-+    private static  URL  getCodeSourceURL( NetworkServerControlImpl server )
-         throws Exception
-     {
-         // Note: This method is expected to run only when no security manager
-@@ -801,9 +806,14 @@ private static  String  getCodeSourcePrefix( NetworkServerControlImpl server )
-             return null;
-         }
-         URL url = cs.getLocation();
--        if (url == null) {
--            return null;
--        }
-+		return url;
-+	}
-+
-+	private static String getCodeSourcePrefix(
-+                NetworkServerControlImpl server,
-+                URL url )
-+		throws Exception
-+	{
-         // Replace in "file://some", but not in "file:///some".
-         String extForm = url.toExternalForm().replaceFirst(
-                 "^file://([^/].*)", "file:////$1");
-diff --git a/java/drda/org/apache/derby/drda/server.policy b/java/drda/org/apache/derby/drda/server.policy
-index 30c321cb59..a91c079624 100644
---- a/java/drda/org/apache/derby/drda/server.policy
-+++ b/java/drda/org/apache/derby/drda/server.policy
-@@ -32,17 +32,7 @@ grant codeBase "${derby.install.url}derby.jar"
-   permission java.io.FilePermission "${derby.system.home}${/}-",
-       "read,write,delete";
- 
--  // This permission lets you backup and restore databases to and from
--  // arbitrary locations in your file system.
--  //
--  // This permission also lets you import/export data to and from arbitrary
--  // locations in your file system.
--  //
--  // You may want to restrict this access to specific directories.
--  //
--  permission java.io.FilePermission "<>", "read,write,delete";
--
--  // Needed by sysinfo. The file permission is needed to check the existence of
-+  // Needed by sysinfo. A file permission is needed to check the existence of
-   // jars on the classpath. You can limit this permission to just the locations
-   // which hold your jar files. This block is reproduced for all codebases
-   // which include the sysinfo classes--the policy file syntax does not let you
-@@ -54,9 +44,9 @@ grant codeBase "${derby.install.url}derby.jar"
-   permission java.util.PropertyPermission "java.runtime.version", "read";
-   permission java.util.PropertyPermission "java.fullversion", "read";
-   permission java.lang.RuntimePermission "getProtectionDomain";
--  permission java.io.FilePermission "<>", "read";
-   permission java.io.FilePermission "java.runtime.version", "read";
-   permission java.io.FilePermission "java.fullversion", "read";
-+  permission java.io.FilePermission "${derby.install.path}${/}-", "read";
- 
-   // Permissions needed for JMX based management and monitoring.
-   //
-@@ -143,7 +133,7 @@ grant codeBase "${derby.install.url}derbynet.jar"
-       "control,monitor";
-   permission org.apache.derby.security.SystemPermission "engine", "usederbyinternals";
- 
--  // Needed by sysinfo. The file permission is needed to check the existence of
-+  // Needed by sysinfo. A file permission is needed to check the existence of
-   // jars on the classpath. You can limit this permission to just the locations
-   // which hold your jar files. This block is reproduced for all codebases
-   // which include the sysinfo classes--the policy file syntax does not let you
-@@ -155,15 +145,15 @@ grant codeBase "${derby.install.url}derbynet.jar"
-   permission java.util.PropertyPermission "java.runtime.version", "read";
-   permission java.util.PropertyPermission "java.fullversion", "read";
-   permission java.lang.RuntimePermission "getProtectionDomain";
--  permission java.io.FilePermission "<>", "read";
-   permission java.io.FilePermission "java.runtime.version", "read";
-   permission java.io.FilePermission "java.fullversion", "read";
-+  permission java.io.FilePermission "${derby.install.path}${/}-", "read";
- };
- 
- 
- grant codeBase "${derby.install.url}derbytools.jar"
- {
--  // Needed by sysinfo. The file permission is needed to check the existence of
-+  // Needed by sysinfo. A file permission is needed to check the existence of
-   // jars on the classpath. You can limit this permission to just the locations
-   // which hold your jar files. This block is for all codebases which include
-   // the sysinfo classes--the policy file syntax does not let you grant
-@@ -182,7 +172,7 @@ grant codeBase "${derby.install.url}derbytools.jar"
- 
- grant codeBase "${derby.install.url}derbyclient.jar"
- {
--  // Needed by sysinfo. The file permission is needed to check the existence of
-+  // Needed by sysinfo. A file permission is needed to check the existence of
-   // jars on the classpath. You can limit this permission to just the locations
-   // which hold your jar files. This block is reproduced for all codebases
-   // which include the sysinfo classes--the policy file syntax does not let you
-@@ -194,7 +184,7 @@ grant codeBase "${derby.install.url}derbyclient.jar"
-   permission java.util.PropertyPermission "java.runtime.version", "read";
-   permission java.util.PropertyPermission "java.fullversion", "read";
-   permission java.lang.RuntimePermission "getProtectionDomain";
--  permission java.io.FilePermission "<>", "read";
-+  permission java.io.FilePermission "${derby.install.path}${/}-", "read";
- 
-   // The following permission must be granted for Connection.abort(Executor) to
-   // work.  Note that this permission must also be granted to outer
-diff --git a/java/drda/org/apache/derby/drda/template.policy b/java/drda/org/apache/derby/drda/template.policy
-index 6331564216..60d811e730 100644
---- a/java/drda/org/apache/derby/drda/template.policy
-+++ b/java/drda/org/apache/derby/drda/template.policy
-@@ -52,9 +52,13 @@ grant codeBase "${derby.install.url}derby.jar"
-   // This permission also lets you import/export data to and from arbitrary
-   // locations in your file system.
-   //
--  // You may want to restrict this access to specific directories.
-+  // NOTE: this permission is commented out. You should NOT grant blanket
-+  // permission to the entire filesystem! If you choose to use this
-+  // permission to allow the server to access files outside of the
-+  // server's home directory, you should name those specific directories
-+  // in the permisson (that is, do NOT specify ALL FILES).
-   //
--  permission java.io.FilePermission "<>", "read,write,delete";
-+  // permission java.io.FilePermission "<>", "read,write,delete";
- 
-   // Permissions needed for JMX based management and monitoring.
-   //
-@@ -139,9 +143,11 @@ grant codeBase "${derby.install.url}derbynet.jar"
-   //
-   // permission java.net.SocketPermission "*", "connect,resolve";
- 
--  // Needed by sysinfo. The file permission is needed to check the existence of
--  // jars on the classpath. You can limit this permission to just the locations
--  // which hold your jar files.
-+  // Needed by sysinfo. A file permission is needed to check the existence of
-+  // jars on the classpath. Note that this permission is commented out! 
-+  // You should limit this permission to just the locations which hold
-+  // your jar files; do NOT grant blanket permission to read the entire
-+  // filesystem.
-   //
-   // In this template file, this block of permissions is granted to
-   // derbynet.jar under the assumption that derbynet.jar is the first jar file
-@@ -155,12 +161,12 @@ grant codeBase "${derby.install.url}derbynet.jar"
-   //    derbyclient.jar
-   //    derbytools.jar
-   //
-+  // permission java.io.FilePermission "${derby.install.directory}${/}-", "read";
-   permission java.util.PropertyPermission "user.*", "read";
-   permission java.util.PropertyPermission "java.home", "read";
-   permission java.util.PropertyPermission "java.class.path", "read";
-   permission java.util.PropertyPermission "java.runtime.version", "read";
-   permission java.util.PropertyPermission "java.fullversion", "read";
-   permission java.lang.RuntimePermission "getProtectionDomain";
--  permission java.io.FilePermission "<>", "read";
- };
- 
-diff --git a/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java b/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java
-index fc624276df..2f5e9ccde8 100644
---- a/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java
-+++ b/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java
-@@ -1820,11 +1820,11 @@ protected synchronized void processCommands(DDMReader reader, DDMWriter writer,
-                     consolePropertyMessage("DRDA_TraceDirectoryChange.I", traceDirectory);
-                     break;
-                 case COMMAND_TESTCONNECTION:
--                    databaseArg = reader.readCmdString();
--                    userArg = reader.readCmdString();
--                    passwordArg = reader.readCmdString();
-+                    databaseArg = reader.readCmdString(); // This is ...
-+                    userArg = reader.readCmdString(); // ... no longer ...
-+                    passwordArg = reader.readCmdString(); // ... supported.
-                     if (databaseArg != null)
--                        connectToDatabase(writer, databaseArg, userArg, passwordArg);
-+                        sendMessage(writer, ERROR, "Usage: ping()");
-                     else
-                         sendOK(writer);
-                     break;
-@@ -3931,46 +3931,6 @@ private void setTraceDirectory(String value)
- 
-     
- 
--    /**
--     * Connect to a database to test whether a connection can be made
--     *
--     * @param writer    connection to send message to
--     * @param database  database directory to connect to
--     * @param user      user to use
--     * @param password  password to use
--     */
--    private void connectToDatabase(DDMWriter writer, String database, String user, 
--        String password) throws Exception
--    {
--        Properties p = new Properties();
--        if (user != null)
--            p.put("user", user);
--        if (password != null)
--            p.put("password", password);
--        try {
--            Class.forName(CLOUDSCAPE_DRIVER);
--        }
--        catch (Exception e) {
--            sendMessage(writer, ERROR, e.getMessage());
--            return;
--        }
--        try {
--            //Note, we add database to the url so that we can allow additional
--            //url attributes
--            Connection conn = getDriver().connect(Attribute.PROTOCOL+database, p);
--            // send warnings
--            SQLWarning warn = conn.getWarnings();
--            if (warn != null)
--                sendSQLMessage(writer, warn, SQLWARNING);
--            else
--                sendOK(writer);
--            conn.close();
--            return;
--        } catch (SQLException se) {
--            sendSQLMessage(writer, se, SQLERROR);
--        }
--    }
--
-     /**
-      * Wrap SQL Error - display to console and raise exception
-      *
-diff --git a/java/engine/org/apache/derby/iapi/reference/Property.java b/java/engine/org/apache/derby/iapi/reference/Property.java
-index bda045629a..ecf9bd9a5b 100644
---- a/java/engine/org/apache/derby/iapi/reference/Property.java
-+++ b/java/engine/org/apache/derby/iapi/reference/Property.java
-@@ -416,6 +416,7 @@ Default value for wait timeouts (60 seconds)
-      * This property is the location of the derby jars.
-      **/
-     public static final String DERBY_INSTALL_URL = "derby.install.url";
-+    public static final String DERBY_INSTALL_PATH = "derby.install.path";
- 
-     /**
-      * This property is private to Derby.
-diff --git a/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.java b/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.java
-index a10c41b595..e50cd5e581 100644
---- a/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.java
-+++ b/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.java
-@@ -22,6 +22,10 @@ Licensed to the Apache Software Foundation (ASF) under one or more
- package org.apache.derbyTesting.functionTests.tests.derbynet;
- 
- import java.io.File;
-+import java.io.ByteArrayOutputStream;
-+import java.io.DataOutputStream;
-+import javax.net.SocketFactory;
-+import java.net.Socket;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import java.security.AccessController;
-@@ -205,6 +209,138 @@ public void test_03_Ping() throws Exception
-         	// expected exception
-         }
-     }
-+
-+    /*
-+     * CVE-2018-1313: Attempt to pass arguments to COMMAND_TESTCONNECTION
-+     */
-+    public void test_03_ping_args() throws Exception
-+    {
-+        String response = tryPingDbError("mydatabase", "myuser", "mypassword");
-+        //System.out.println(response);
-+        // This once said: XJ004:Database 'mydatabase' not found.
-+        assertEquals("Usage", response.substring(0,5));
-+
-+        response = tryPingDbError("some/sorta/db","someone","somecredentials");
-+        //System.out.println(response);
-+        assertEquals("Usage", response.substring(0,5));
-+
-+        response = tryPingDbError("\\\\192.168.1.2\\guest\\db1","tata","tata");
-+        //System.out.println(response);
-+        assertEquals("Usage", response.substring(0,5));
-+
-+        response = tryPingDbError("my/nocred/db", "", "");
-+        //System.out.println(response);
-+        assertEquals("Usage", response.substring(0,5));
-+
-+        response = tryPingDbOK("", "scarface", "evildoer");
-+        //System.out.println(response);
-+        assertEquals("OK", response.substring(0,2));
-+    }
-+
-+    private Socket privilegedClientSocket(final String host, int port)
-+                        throws Exception
-+    {
-+        try {
-+            return AccessController.doPrivileged(
-+                    new PrivilegedExceptionAction() {
-+                public Socket run() throws Exception {
-+                    return SocketFactory.getDefault().createSocket(
-+                                InetAddress.getByName(host), port);
-+                }
-+            });
-+        } catch (PrivilegedActionException pae) {
-+            throw (Exception)pae.getCause();
-+        }
-+    }
-+
-+    private static String byteArrayToHex(byte[] ba, int l)
-+    {
-+        if (l < 0) return "STRING OF NEGATIVE LENGTH("+l+")";
-+        StringBuilder sb = new StringBuilder(l * 2);
-+        for (int i = 0; i < l; i++) sb.append(String.format("%02x", ba[i]));
-+        return sb.toString();
-+    }
-+
-+    private String tryPingDbError(String d, String u, String p)
-+                    throws Exception
-+    {
-+        return tryPingDbTest(2, d, u, p); // Result 2: ERROR
-+    }
-+
-+    private String tryPingDbOK(String d, String u, String p)
-+                    throws Exception
-+    {
-+        return tryPingDbTest(0, d, u, p); // Result 0: OK
-+    }
-+
-+    private String tryPingDbTest(int rc, String d, String u, String p)
-+                    throws Exception
-+    {
-+        //System.out.println("database: '"+d+"' (len: "+d.length()+")");
-+        //System.out.println("    user: '"+u+"' (len: "+u.length()+")");
-+        //System.out.println("password: '"+p+"' (len: "+p.length()+")");
-+
-+        Socket clientSocket = privilegedClientSocket(
-+                TestConfiguration.getCurrent().getHostName(),
-+                TestConfiguration.getCurrent().getPort());
-+        ByteArrayOutputStream byteArrayOs = new ByteArrayOutputStream();
-+        DataOutputStream commandOs = new DataOutputStream(byteArrayOs);
-+
-+        byte[] msgBytes = "CMD:".getBytes("UTF8");
-+        commandOs.write(msgBytes,0,msgBytes.length);
-+        commandOs.writeByte((byte) 0); // default version: 02
-+        commandOs.writeByte((byte) 2); // default version: 02
-+        commandOs.writeByte((byte) 0); // default locale: 0
-+        commandOs.writeByte((byte) 0); // default codeset: 0
-+        commandOs.writeByte((byte) 4); // COMMAND_TESTCONNECTION
-+
-+        msgBytes = d.getBytes("UTF8");
-+        commandOs.writeByte((byte)(msgBytes.length >> 8 ));
-+        commandOs.writeByte((byte) msgBytes.length);
-+        commandOs.write(msgBytes,0,msgBytes.length);
-+
-+        msgBytes = u.getBytes("UTF8");
-+        commandOs.writeByte((byte)(msgBytes.length >> 8 ));
-+        commandOs.writeByte((byte) msgBytes.length);
-+        commandOs.write(msgBytes,0,msgBytes.length);
-+
-+        msgBytes = p.getBytes("UTF8");
-+        commandOs.writeByte((byte)(msgBytes.length >> 8 ));
-+        commandOs.writeByte((byte) msgBytes.length);
-+        commandOs.write(msgBytes,0,msgBytes.length);
-+
-+        byteArrayOs.writeTo(clientSocket.getOutputStream());
-+        commandOs.flush();
-+        byteArrayOs.reset();
-+        clientSocket.shutdownOutput();
-+
-+        byte[]result = new byte[1024];
-+        int resultLen = clientSocket.getInputStream().read(result);
-+
-+        clientSocket.close();
-+        
-+        //System.out.println( "Result was " + resultLen + " bytes long");
-+        //System.out.println( byteArrayToHex(result,resultLen) );
-+        
-+        if (resultLen < 0)
-+            return "DISCONNECT";
-+
-+        String r = "RPY:";
-+        int rl   = r.length();
-+        assertTrue(resultLen > rl);
-+        String header = new String(result, 0, rl, "UTF8");
-+        assertEquals(r, header);
-+        assertEquals(rc, result[rl++]); // 0: OK, 2: ERROR, 3: SQLERROR, etc.
-+
-+        if (rc == 0)
-+            return "OK";
-+
-+        int l = ((result[rl++] & 0xff) << 8) + (result[rl++] & 0xff);
-+        String response = new String(result, rl, l, "UTF8");
-+
-+        return response;
-+    }
-+
-     
-     /**
-      * Wraps InitAddress.getByName in privilege block.
-diff --git a/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.policy b/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.policy
-index 792bcea43f..50f894a718 100644
---- a/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.policy
-+++ b/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.policy
-@@ -186,6 +186,10 @@ grant codeBase "${derbyTesting.testjar}derbyTesting.jar" {
- 
-   // Needed by NetworkServerTestSetup when probing ports.
-   permission java.net.SocketPermission "localhost", "listen";
-+  permission java.net.SocketPermission "127.0.0.1", "accept,connect,resolve";
-+  permission java.net.SocketPermission "localhost", "accept,connect,listen";
-+  permission java.net.SocketPermission "${derbyTesting.clienthost}", "accept,connect";
-+  permission java.net.SocketPermission "${derbyTesting.serverhost}", "accept,connect";
- };
- 
- //
-diff --git a/java/tools/org/apache/derby/impl/tools/sysinfo/Main.java b/java/tools/org/apache/derby/impl/tools/sysinfo/Main.java
-index e332ded977..6e88063202 100644
---- a/java/tools/org/apache/derby/impl/tools/sysinfo/Main.java
-+++ b/java/tools/org/apache/derby/impl/tools/sysinfo/Main.java
-@@ -23,6 +23,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more
- 
- import java.security.AccessController;
- import java.security.PrivilegedAction;
-+import java.util.Arrays;
-+import java.util.List;
- import java.util.Locale;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
-@@ -889,6 +891,31 @@ private static String argumentMatches(String[] args, String ss) {
-                                     ".properties",
-                                 };
- 
-+	private static final String jarNames[] = 
-+	{
-+        "derby.jar",
-+        "derbyclient.jar",
-+        "derbynet.jar",
-+        "derbyoptionaltools.jar",
-+        "derbyrun.jar",
-+        "derbyshared.jar",
-+        "derbyTesting.jar",
-+        "derbytools.jar",
-+        "derbyLocale_cs.jar",
-+        "derbyLocale_de_DE.jar",
-+        "derbyLocale_es.jar",
-+        "derbyLocale_ja_JP.jar",
-+        "derbyLocale_ko_KR.jar",
-+        "derbyLocale_pl.jar",
-+        "derbyLocale_pt_BR.jar",
-+        "derbyLocale_ru.jar",
-+        "derbyLocale_fr.jar",
-+        "derbyLocale_zh_CN.jar",
-+        "derbyLocale_hu.jar",
-+        "derbyLocale_zh_TW.jar",
-+        "derbyLocale_it.jar"
-+	};
-+
-     /**
-      *  Get all the info we can obtain from the local execution context
-      *  as to the availability of the Derby classes by attempting to load
-@@ -920,9 +947,23 @@ private static String argumentMatches(String[] args, String ss) {
-         {
- 			if (classpath != null) {
- 				String cp [] = parseClasspath(classpath);
-+				List jarNamesList = Arrays.asList(jarNames);
- 				Vector v = new Vector();
- 				for (int i = 0; i < cp.length; i++)
- 				{
-+                    boolean matches = false;
-+                    String candidate = cp[i];
-+                    for (String jarName : jarNames)
-+                    {
-+                        if (candidate.endsWith(jarName))
-+                        {
-+                            matches = true;
-+                            break;
-+                        }
-+                    }
-+                    if (!matches)
-+                        continue;
-+
- 					ZipInfoProperties zip = null;
- 					try {
- 						zip = checkForInfo(cp[i]);
diff --git a/CVE-2022-46337.patch b/CVE-2022-46337.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c416b27e5369f0a4965b9ab8a6ebb99e6e349633
--- /dev/null
+++ b/CVE-2022-46337.patch
@@ -0,0 +1,159 @@
+Origin: https://svn.apache.org/viewvc?view=revision&revision=1905586
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1056755
+Forwarded: not-needed
+
+--
+--- a/java/engine/org/apache/derby/impl/jdbc/authentication/LDAPAuthenticationSchemeImpl.java
++++ b/java/engine/org/apache/derby/impl/jdbc/authentication/LDAPAuthenticationSchemeImpl.java
+@@ -191,6 +191,54 @@
+ 	
+ 
+     /**
++     * Given an LDAP search string, returns the string with certain characters
++     * escaped according to RFC 2254 guidelines. Cribbed from org.apache.catalina.realm.JNDIRealm.
++     *
++     * The character mapping is as follows:
++     *     char ->  Replacement
++     *    ---------------------------
++     *     *  -> \2a
++     *     (  -> \28
++     *     )  -> \29
++     *     \  -> \5c
++     *     \0 -> \00
++     *
++     * @param inString string to escape according to RFC 2254 guidelines
++     *
++     * @return String the escaped/encoded result
++     */
++    protected String doFilterEscaping(String inString) {
++        if (inString == null) {
++            return null;
++        }
++        StringBuilder buf = new StringBuilder(inString.length());
++        for (int i = 0; i < inString.length(); i++) {
++            char c = inString.charAt(i);
++            switch (c) {
++                case '\\':
++                    buf.append("\\5c");
++                    break;
++                case '*':
++                    buf.append("\\2a");
++                    break;
++                case '(':
++                    buf.append("\\28");
++                    break;
++                case ')':
++                    buf.append("\\29");
++                    break;
++                case '\0':
++                    buf.append("\\00");
++                    break;
++                default:
++                    buf.append(c);
++                    break;
++            }
++        }
++        return buf.toString();
++    }
++
++    /**
+      * Call new InitialDirContext in a privilege block
+      * @param env environment used to create the initial DirContext. Null indicates an empty environment.
+      * @return an initial DirContext using the supplied environment. 
+@@ -411,7 +459,10 @@
+ 	private String getDNFromUID(String uid)
+ 		throws javax.naming.NamingException
+ 	{
+-		//
++            // Escape the uid as a defense against LDAP injection. See DERBY-7147.
++            uid = doFilterEscaping(uid);
++
++                //
+ 		// We bind to the LDAP server here
+ 		// Note that this bind might be anonymous (if anonymous searches
+ 		// are allowed in the LDAP server, or authenticated if we were
+--- /dev/null
++++ b/tools/release/notices/tomcat.txt
+@@ -0,0 +1,72 @@
++Derby uses the org.apache.catalina.realm.JNDIRealm.doFilterEscaping()
++routine from the Apache Tomcat project. The following notice covers
++the Tomcat sources:
++
++Apache Tomcat
++Copyright 1999-2022 The Apache Software Foundation
++
++This product includes software developed at
++The Apache Software Foundation (https://www.apache.org/).
++
++This software contains code derived from netty-native
++developed by the Netty project
++(https://netty.io, https://github.com/netty/netty-tcnative/)
++and from finagle-native developed at Twitter
++(https://github.com/twitter/finagle).
++
++This software contains code derived from jgroups-kubernetes
++developed by the JGroups project (http://www.jgroups.org/).
++
++The Windows Installer is built with the Nullsoft
++Scriptable Install System (NSIS), which is
++open source software.  The original software and
++related information is available at
++http://nsis.sourceforge.net.
++
++Java compilation software for JSP pages is provided by the Eclipse
++JDT Core Batch Compiler component, which is open source software.
++The original software and related information is available at
++https://www.eclipse.org/jdt/core/.
++
++org.apache.tomcat.util.json.JSONParser.jj is a public domain javacc grammar
++for JSON written by Robert Fischer.
++https://github.com/RobertFischer/json-parser
++
++For portions of the Tomcat JNI OpenSSL API and the OpenSSL JSSE integration
++The org.apache.tomcat.jni and the org.apache.tomcat.net.openssl packages
++are derivative work originating from the Netty project and the finagle-native
++project developed at Twitter
++* Copyright 2014 The Netty Project
++* Copyright 2014 Twitter
++
++For portions of the Tomcat cloud support
++The org.apache.catalina.tribes.membership.cloud package contains derivative
++work originating from the jgroups project.
++https://github.com/jgroups-extras/jgroups-kubernetes
++Copyright 2002-2018 Red Hat Inc.
++
++The original XML Schemas for Java EE Deployment Descriptors:
++ - javaee_5.xsd
++ - javaee_web_services_1_2.xsd
++ - javaee_web_services_client_1_2.xsd
++ - javaee_6.xsd
++ - javaee_web_services_1_3.xsd
++ - javaee_web_services_client_1_3.xsd
++ - jsp_2_2.xsd
++ - web-app_3_0.xsd
++ - web-common_3_0.xsd
++ - web-fragment_3_0.xsd
++ - javaee_7.xsd
++ - javaee_web_services_1_4.xsd
++ - javaee_web_services_client_1_4.xsd
++ - jsp_2_3.xsd
++ - web-app_3_1.xsd
++ - web-common_3_1.xsd
++ - web-fragment_3_1.xsd
++ - javaee_8.xsd
++ - web-app_4_0.xsd
++ - web-common_4_0.xsd
++ - web-fragment_4_0.xsd
++
++may be obtained from:
++http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html
+--- a/build.xml
++++ b/build.xml
+@@ -2022,6 +2022,7 @@
+      
+      
+      
++     
+      
+       
+          
diff --git a/db-derby-10.13.1.1-src.tar.gz b/db-derby-10.14.2.0-src.tar.gz
similarity index 73%
rename from db-derby-10.13.1.1-src.tar.gz
rename to db-derby-10.14.2.0-src.tar.gz
index d5163812b8a1f7308446733998f35d9026e5853c..5757663b81980caeab34c5dfb7eb5eaf7c1a4f63 100644
Binary files a/db-derby-10.13.1.1-src.tar.gz and b/db-derby-10.14.2.0-src.tar.gz differ
diff --git a/derby.spec b/derby.spec
index ea8498df8bb9f98a4f9188f7858ccd6e04f05e14..dedde62f6356017ed7e2e200f24b54a5d9e964ed 100644
--- a/derby.spec
+++ b/derby.spec
@@ -1,6 +1,6 @@
 Name:                derby
-Version:             10.13.1.1
-Release:             3
+Version:             10.14.2.0
+Release:             1
 Summary:             Relational database implemented entirely in Java
 License:             ASL 2.0
 URL:                 http://db.apache.org/derby/
@@ -9,7 +9,7 @@ Source1:             derby-script
 Source2:             derby.service
 Patch1:              derby-javacc.patch
 Patch2:              derby-lucene.patch
-Patch3:              CVE-2018-1313.patch
+Patch3:              CVE-2022-46337.patch
 
 BuildRequires:       apache-parent javapackages-local glassfish-servlet-api jakarta-oro javacc
 BuildRequires:       json_simple lucene4 junit ant systemd
@@ -114,6 +114,9 @@ exit 0
 %license db-derby-%{version}-src/NOTICE
 
 %changelog
+* Fri Dec  1 2023 dillon chen  - 10.14.2.0-1
+- Update to 10.14.2.0 for fix CVE-2023-48284(patch from debian)
+
 * Thu May 13 2021 lingsheng  - 10.13.1.1-3
 - Add requires javapackages-tools to fix derby service start