From 4d3bdddb55c836ccca47beb14de898ccd24e058f Mon Sep 17 00:00:00 2001 From: Pasqual Koschmieder Date: Thu, 3 Jul 2025 00:16:14 +0200 Subject: [PATCH 1/2] fix: unsafe transformer disable system property --- .../main/java/eu/cloudnetservice/wrapper/impl/Premain.java | 7 +++++-- .../wrapper/impl/transform/unsafe/UnsafeTransformer.java | 6 +----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java b/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java index 1a1a669525..bf2ae83fda 100644 --- a/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java +++ b/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java @@ -41,8 +41,11 @@ public static void premain(@Nullable String agentArgs, @NonNull Instrumentation // init and registers the unsafe transformer very early in the process. this is done here // as we usually don't allow transformers to be registered so early as they're intended to // transform classes brought in by the wrapped application, not by the jdk - UnsafeTransformer.init(inst); - Premain.transformerRegistry.registerTransformer(new UnsafeTransformer()); + var transformerDisabled = Boolean.getBoolean("cloudnet.wrapper.unsafe-transform-disabled"); + if (!transformerDisabled) { + UnsafeTransformer.init(inst); + Premain.transformerRegistry.registerTransformer(new UnsafeTransformer()); + } } public static void preloadClasses(@NonNull Path file, @NonNull ClassLoader loader) { diff --git a/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/transform/unsafe/UnsafeTransformer.java b/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/transform/unsafe/UnsafeTransformer.java index 3adc9dc2f0..0b46831535 100644 --- a/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/transform/unsafe/UnsafeTransformer.java +++ b/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/transform/unsafe/UnsafeTransformer.java @@ -67,13 +67,9 @@ public final class UnsafeTransformer implements ClassTransformer { MethodTypeDesc.of(ConstantDescs.CD_void, ConstantDescs.CD_String, ConstantDescs.CD_String); /** - * Constructs a new instance of this transformer, usually done via SPI. + * Constructs a new instance of this transformer, only public for internal use. */ public UnsafeTransformer() { - var transformerDisabled = Boolean.getBoolean("cloudnet.wrapper.unsafe-transform-disabled"); - if (transformerDisabled) { - throw new UnsupportedOperationException("transformer disabled via system property"); - } } /** From 404afb6e7c1361736d72cceabced46cb29f9c5b1 Mon Sep 17 00:00:00 2001 From: Pasqual Koschmieder Date: Thu, 3 Jul 2025 00:21:22 +0200 Subject: [PATCH 2/2] better variable name --- .../main/java/eu/cloudnetservice/wrapper/impl/Premain.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java b/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java index bf2ae83fda..dd1c1762fc 100644 --- a/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java +++ b/wrapper-jvm/impl/src/main/java/eu/cloudnetservice/wrapper/impl/Premain.java @@ -41,8 +41,8 @@ public static void premain(@Nullable String agentArgs, @NonNull Instrumentation // init and registers the unsafe transformer very early in the process. this is done here // as we usually don't allow transformers to be registered so early as they're intended to // transform classes brought in by the wrapped application, not by the jdk - var transformerDisabled = Boolean.getBoolean("cloudnet.wrapper.unsafe-transform-disabled"); - if (!transformerDisabled) { + var unsafeTransformerDisabled = Boolean.getBoolean("cloudnet.wrapper.unsafe-transform-disabled"); + if (!unsafeTransformerDisabled) { UnsafeTransformer.init(inst); Premain.transformerRegistry.registerTransformer(new UnsafeTransformer()); }