From 8d5e05135b182c0254c19699dbe1f35a86bb370b Mon Sep 17 00:00:00 2001 From: Pushkar Kulkarni Date: Fri, 27 Feb 2026 23:18:24 +0530 Subject: [PATCH] Register the MessageDigest object with the Cleaner Unlike the other OpenSSL wrapper objects, MessageDigest registered the nativeHandle(long) with the Cleaner, which accepts java.lang.Object. The long is likely to get auto-boxed and become phantom-reachable immediately, causing a clean-up on the next GC cycle. --- src/main/java/com/canonical/openssl/md/OpenSSLMD.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/canonical/openssl/md/OpenSSLMD.java b/src/main/java/com/canonical/openssl/md/OpenSSLMD.java index db2dc0b..ac354cc 100644 --- a/src/main/java/com/canonical/openssl/md/OpenSSLMD.java +++ b/src/main/java/com/canonical/openssl/md/OpenSSLMD.java @@ -82,7 +82,7 @@ protected int engineDigest(byte[] buf, int offset, int len) throws DigestExcepti @Override protected void engineReset() { nativeHandle = doInit0(mdName); - cleanable = cleaner.register(nativeHandle, new MDState(nativeHandle)); + cleanable = cleaner.register(this, new MDState(nativeHandle)); } @Override @@ -104,7 +104,7 @@ private void engineUpdate(byte[] data) { synchronized(this) { if (!this.initialized) { nativeHandle = doInit0(mdName); - cleanable = cleaner.register(nativeHandle, new MDState(nativeHandle)); + cleanable = cleaner.register(this, new MDState(nativeHandle)); this.initialized = true; } }