You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2016/07/10 13:02:01 UTC

commons-crypto git commit: CRYPTO-63 Add JNA binding

Repository: commons-crypto
Updated Branches:
  refs/heads/master 94844c8bb -> 6ed9de8ac


CRYPTO-63 Add JNA binding

Work-round for JVM crash if close called more than once

Project: http://git-wip-us.apache.org/repos/asf/commons-crypto/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-crypto/commit/6ed9de8a
Tree: http://git-wip-us.apache.org/repos/asf/commons-crypto/tree/6ed9de8a
Diff: http://git-wip-us.apache.org/repos/asf/commons-crypto/diff/6ed9de8a

Branch: refs/heads/master
Commit: 6ed9de8acbe16298350f4a2099776b3537d0bfb4
Parents: 94844c8
Author: Sebb <se...@apache.org>
Authored: Sun Jul 10 14:01:56 2016 +0100
Committer: Sebb <se...@apache.org>
Committed: Sun Jul 10 14:01:56 2016 +0100

----------------------------------------------------------------------
 .../org/apache/commons/crypto/jna/OpenSslJnaCipher.java   | 10 +++++++++-
 .../apache/commons/crypto/jna/OpenSslJnaCipherTest.java   |  9 ---------
 2 files changed, 9 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/6ed9de8a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
index 285fbe7..f8ba94f 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
@@ -239,7 +239,10 @@ class OpenSslJnaCipher implements CryptoCipher {
     public void close() {
         if (context != null) {
             OpenSslNativeJna.EVP_CIPHER_CTX_cleanup(context);
-            OpenSslNativeJna.EVP_CIPHER_CTX_free(context);
+            // Freeing the context multiple times causes a JVM crash
+            // A work-round is to only free it at finalize time
+            // TODO is that sufficient?
+//            OpenSslNativeJna.EVP_CIPHER_CTX_free(context);
         }
     }
     
@@ -328,4 +331,9 @@ class OpenSslJnaCipher implements CryptoCipher {
         return transformation;
     }
 
+    @Override
+    protected void finalize() throws Throwable {
+        OpenSslNativeJna.EVP_CIPHER_CTX_free(context);
+        super.finalize();
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/6ed9de8a/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCipherTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCipherTest.java b/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCipherTest.java
index a84fb6f..4b69ac9 100644
--- a/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCipherTest.java
@@ -35,13 +35,4 @@ public class OpenSslJnaCipherTest extends OpenSslCipherTest {
         cipherClass = OpenSslJnaCipher.class.getName();
     }
 
-    @Override
-    public void closeTestRepeat() {
-        System.err.println("closeTestRepeat() Causes JVM crash");
-    }
-
-    @Override
-    public void reInitAfterClose() {
-        System.err.println("reInitAfterClose() Causes JVM crash");
-    }
 }