Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package byte-buddy for openSUSE:Factory checked in at 2024-07-10 16:49:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/byte-buddy (Old) and /work/SRC/openSUSE:Factory/.byte-buddy.new.2080 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "byte-buddy" Wed Jul 10 16:49:50 2024 rev:4 rq:1186467 version:1.14.18 Changes: -------- --- /work/SRC/openSUSE:Factory/byte-buddy/byte-buddy.changes 2024-05-23 15:36:07.457496780 +0200 +++ /work/SRC/openSUSE:Factory/.byte-buddy.new.2080/byte-buddy.changes 2024-07-10 16:49:55.876534011 +0200 @@ -1,0 +2,21 @@ +Mon Jul 8 21:30:57 UTC 2024 - Anton Shvetz <shvetz.an...@gmail.com> + +- Update to v1.14.18 + * Changes of v1.14.18 + + Avoid verification error if constructor advice meats dropped + implicit this frame and throw exception during + instrumentation instead. + + Add support to resolve ByteBuddyAgent from non-obfuscated + name if obfuscation is used. + + Make sure CircularityLock implementations never load classes + during locking. + + Offer use of istat if stat command is not available for + emulated attachment. + + Avoid locking entire class loader when child-first class + loader loads shadowed class and parallel class loading is + supported. + * Changes of v1.14.17 + + Avoid crashing of Android plugin when there are duplicate + files for licenses or license notices. + +------------------------------------------------------------------- Old: ---- byte-buddy-1.14.16.tar.gz New: ---- byte-buddy-1.14.18.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ byte-buddy.spec ++++++ --- /var/tmp/diff_new_pack.4ytUau/_old 2024-07-10 16:49:56.532558099 +0200 +++ /var/tmp/diff_new_pack.4ytUau/_new 2024-07-10 16:49:56.536558246 +0200 @@ -17,7 +17,7 @@ Name: byte-buddy -Version: 1.14.16 +Version: 1.14.18 Release: 0 Summary: Runtime code generation for the Java virtual machine License: Apache-2.0 ++++++ byte-buddy-1.14.16.tar.gz -> byte-buddy-1.14.18.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/.github/workflows/main.yml new/byte-buddy-byte-buddy-1.14.18/.github/workflows/main.yml --- old/byte-buddy-byte-buddy-1.14.16/.github/workflows/main.yml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/.github/workflows/main.yml 2024-07-08 21:04:14.000000000 +0200 @@ -127,23 +127,26 @@ runs-on: ubuntu-20.04 if: github.event_name == 'push' steps: - - uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # V2.7.0 + - uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # V2.8.1 with: egress-policy: block disable-telemetry: true allowed-endpoints: > - github.com:443 - raw.githubusercontent.com:443 - artifactcache.actions.githubusercontent.com:443 - blob.core.windows.net:443 - repo.maven.apache.org:443 coveralls.io:443 - javadoc.io:443 - docs.oracle.com:443 + dl.google.com:443 docs.gradle.org:443 + docs.oracle.com:443 + github.com:443 + javadoc.io:443 + jcenter.bintray.com:443 + objects.githubusercontent.com:443 + plugins-artifacts.gradle.org:443 plugins.gradle.org:443 + raw.githubusercontent.com:443 + repo.gradle.org:443 + repo.maven.apache.org:443 + repository.sonatype.org:443 services.gradle.org:443 - downloads.gradle-dn.com:443 - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # v3.12.0 with: @@ -161,7 +164,7 @@ permissions: contents: write steps: - - uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # V2.7.0 + - uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # V2.8.1 with: egress-policy: audit # servers have changed, must be adjusted after next release - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 @@ -175,4 +178,4 @@ run: | git config user.name "${{ github.event.head_commit.committer.name }}" git config user.email "${{ github.event.head_commit.committer.email }}" - ./mvnw -B -s .mvn/release.settings.xml release:prepare release:perform -Drepository.url=https://${{ github.actor }}:${{ secrets.github_token }}@github.com/${{ github.repository }}.git -Dcentral.username=raphw -Dcentral.password=${{ secrets.central_password }} -Dgpg.passphrase=${{ secrets.gpg_passphrase }} -Dgpg.keyname=B4AC8CDC141AF0AE468D16921DA784CCB5C46DD5 -Dgradle.key=${{ secrets.gradle_key }} -Dgradle.secret=${{ secrets.gradle_secret }} -Pchecksum-enforce + ./mvnw -B -s .mvn/release.settings.xml release:prepare release:perform -Drepository.url=https://${{ github.actor }}:${{ secrets.github_token }}@github.com/${{ github.repository }}.git -Dcentral.username=${{ secrets.central_user }} -Dcentral.password=${{ secrets.central_password }} -Dgpg.passphrase=${{ secrets.gpg_passphrase }} -Dgpg.keyname=B4AC8CDC141AF0AE468D16921DA784CCB5C46DD5 -Dgradle.key=${{ secrets.gradle_key }} -Dgradle.secret=${{ secrets.gradle_secret }} -Pchecksum-enforce diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/.mvn/checksums.sha256 new/byte-buddy-byte-buddy-1.14.18/.mvn/checksums.sha256 --- old/byte-buddy-byte-buddy-1.14.16/.mvn/checksums.sha256 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/.mvn/checksums.sha256 2024-07-08 21:04:14.000000000 +0200 @@ -633,6 +633,8 @@ net.bytebuddy:byte-buddy-agent:jar:1.14.13 bad2d9413f72cc7106597fdbdfa875b0f88b9781451671b6f69c8b6bb81b4040 net.bytebuddy:byte-buddy-agent:jar:1.14.14 1f2aad82c986925790e391f5f709b276e54690c241694cf8329c18d75de0cfce net.bytebuddy:byte-buddy-agent:jar:1.14.15 3ef6ec7175801361170067cc6902969f966d37c72bf9353d9cd282263b184064 +net.bytebuddy:byte-buddy-agent:jar:1.14.16 bfe45768a5b75c076e49f036c96c10c32cb4062313189476cc26ff5f4f5a1384 +net.bytebuddy:byte-buddy-agent:jar:1.14.17 461ec3017f1445b0af42d4e5f08eb6f5032fa4039ad737f3fcc4b2a12a38f984 net.bytebuddy:byte-buddy-agent:jar:1.14.2 f428c7417b4cf7031d88f1f63d876811cea3b015803017ba9e06ce2acdd5a1e7 net.bytebuddy:byte-buddy-agent:jar:1.14.3 3b362963597f11e28ad55bd405ddfe56dd3ae73850cdd2de70b28ef6e9520bf1 net.bytebuddy:byte-buddy-agent:jar:1.14.4 fbd1ab3db43c6c78b8804908cb95b656517f5c82e7fde8d255d8bdceef412d70 @@ -655,6 +657,8 @@ net.bytebuddy:byte-buddy-android:jar:1.14.13 8a300455c03fddc51063b6f0a008a7e2a3b403e683bb8e9e8f9d6c3a5822add6 net.bytebuddy:byte-buddy-android:jar:1.14.14 8d4680bf55d2d9b3bad39ebb7e176a445543f35e1b9e311d241c56bdd0c7ebc6 net.bytebuddy:byte-buddy-android:jar:1.14.15 5a1e273bcf36fd5d67f8a1932ec07c2f1e00ec2ebf52d40f6beed142f0b6b162 +net.bytebuddy:byte-buddy-android:jar:1.14.16 02b567daf21a8d35651660b9480f1ba0f1a9c7d3aa9da1c6b68b45a644ffab14 +net.bytebuddy:byte-buddy-android:jar:1.14.17 9a457e8f33ec9858e5674545f3c6569554ab1e6043875cef83945644e8cfa9fb net.bytebuddy:byte-buddy-android:jar:1.14.2 96821d15b3c14adc5443a2ac95ab349d66f833c1bc23689d5a47382a50b00520 net.bytebuddy:byte-buddy-android:jar:1.14.3 97d9b94b433682be1309b2954819d7f4303961aba8ed6e20b088f51a769009ef net.bytebuddy:byte-buddy-android:jar:1.14.4 d93dec5cd2a80ff953e4fda26308d0b99e2465262e7956dd7b3003a16a5b04a0 @@ -677,6 +681,8 @@ net.bytebuddy:byte-buddy-dep:jar:1.14.13 190c4526aadb0ac0d6ffffe6d2a79ce52f7c1a04dd0e33743c36f229f7472d31 net.bytebuddy:byte-buddy-dep:jar:1.14.14 d1baaa62405c8122edb1dac87b0a5fff174a28696086c41006be461a424b4550 net.bytebuddy:byte-buddy-dep:jar:1.14.15 c63138c81c7f2cb5cb05685e3aa8410670535c6cf93c2c6159ff933134b30119 +net.bytebuddy:byte-buddy-dep:jar:1.14.16 6d5560dc661907ad580443ec2e6534e68217302ea5cfb5c0a51338dfb5d1be2a +net.bytebuddy:byte-buddy-dep:jar:1.14.17 6704f42bf2d8dd3b70b138ad15cf24a32e079bf5d161620f7e739440694a9e22 net.bytebuddy:byte-buddy-dep:jar:1.14.2 d6723d41a4be755c875c18e21554b04ac062a1460105154763800df1ae01c096 net.bytebuddy:byte-buddy-dep:jar:1.14.3 ac4dcc6dbee75b8c10af7ce2a9d4e050a6849fb5442dadc73d8b90c782f9cb80 net.bytebuddy:byte-buddy-dep:jar:1.14.4 7905516fb7c112ba424c26e84b3989ccaec71115914d6c46d09e385a4bf410e1 @@ -699,6 +705,8 @@ net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.13 52acf5078cb1995be6bbe1b44b018b954ee5a66e97ce0220d6ec717f3b695d77 net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.14 c9e9fd7612d44075b0b462371107b63ca381487995eeaca5140f4a264c1f8d91 net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.15 d00fa2e048f90b7a858ba5e18d74c956706650c6a7e8784dd456196c028ee829 +net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.16 1f51eace023f6733d89d4cc8540a8fe058cd6abaf4ffeb11f0fd345d9dd5a856 +net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.17 a6c7e53017eda36736dc7d83dcfb481fb0587224b9abea940c452bdc13def287 net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.2 f5d2be6baf531ebbde91274181504fcb92ff07d0a2c21c55dcc7ff6a87cbc790 net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.3 3d52c7d65b9fdac180f90612c377a39fc9b81e1d48f02aced9fbdcdfeda57659 net.bytebuddy:byte-buddy-maven-plugin:jar:1.14.4 acdae6ef4609d3fbe7de4dfa8a5fe39a23386056ab67c16ead74e71519ddf477 @@ -718,6 +726,8 @@ net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.13 890bf7a55eedadd224afc7af6f826329da463ac463e009f82b7f170306dc68a7 net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.14 e0d984cb1b151694c376626054cc2c05253fef5d730263c5944378c9da2a257d net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.15 7cd1b22ae360c79fd4417eb93d6a8541f26ca015588403df2dc0becd6c09b353 +net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.16 bdf1d2ea5ffd620a1fa070822e4f8d5bd04ec47d97508a5f2b550b587eb1c5d8 +net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.17 534cc0b4ae12a3dfc91bfec4f7d5765875433ced287582b755af2a268d64e04b net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.2 d8b553fee46eba6a96de2d9b4bea1efc23fa13e33c9e935b0db492935e447f4c net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.3 8ddbd06f4a027c86e16d3d5e9e685d5980be893c5f3991ebbda600c6e260fa1e net.bytebuddy:byte-buddy-maven-plugin:pom:1.14.4 e02f1c97f27accbd3ee14ebe7559a448e75fd42e311eacde8a2f0bbf14cc41ac @@ -737,6 +747,8 @@ net.bytebuddy:byte-buddy-parent:pom:1.14.13 df77856d724a0b3d97f616e4a5a8b9d3ea997545b13a42dae494ff9f0a5eb1ac net.bytebuddy:byte-buddy-parent:pom:1.14.14 c722ebe40e964f2b5d59c326cf701f275b2d81bdafdc80ccf8862d5e612b2e7f net.bytebuddy:byte-buddy-parent:pom:1.14.15 26eaef08651ffa58ba290092ce3281782e29c0628a1b79fa5a3784f908b418ac +net.bytebuddy:byte-buddy-parent:pom:1.14.16 c1da5e400c7465c8823fbe6cc2dd4d518f51191c6630637e439f463ba699530c +net.bytebuddy:byte-buddy-parent:pom:1.14.17 06e57b5e99fdf4ef368affd23661790b23bf32d2d013bbc08d68d4345006f582 net.bytebuddy:byte-buddy-parent:pom:1.14.2 6db003ef2b312e8c30e67cf5a7f39d8be1eaa3bac99e79d715c03d02c520f587 net.bytebuddy:byte-buddy-parent:pom:1.14.3 18d87a7371f2d5d7bf9473124e51ed8a9ae1ad86ed1085cc151c8266deb519d2 net.bytebuddy:byte-buddy-parent:pom:1.14.4 ac4f0167ff070f263acad009f8a289dc92e34ff1090e90e5bd8a2046cf5bc38c @@ -756,6 +768,8 @@ net.bytebuddy:byte-buddy:jar:1.14.13 ba8254ff6d612af49acee4cac1108453ce3a417efa548b24f2f4f268cd2b441a net.bytebuddy:byte-buddy:jar:1.14.14 e28fbba2a91ed5ad0a19aa196ae906344842d31ce662741c8a11c55ba97f2a26 net.bytebuddy:byte-buddy:jar:1.14.15 7472e3961992c12a9fd4f6d67c21de4280abe18f292704dd49d7338289f8acf5 +net.bytebuddy:byte-buddy:jar:1.14.16 5add6c7b294b2b2ac60c9a4b54f924cd65e4f10ccfed75d2a99d621d6c5f0a8d +net.bytebuddy:byte-buddy:jar:1.14.17 cde8f8f8e07bff3694aace0d9944ba755665a583b05d9153d41062285e9a8a61 net.bytebuddy:byte-buddy:jar:1.14.2 042e6b26e1f3fdd1e6244e9dcb381065b15d230ecd93838691dcc03918c9d525 net.bytebuddy:byte-buddy:jar:1.14.3 1db7ee74714ed852a2bd23c33d066e8a4f6031411cbd0ce75daa58b7670894ad net.bytebuddy:byte-buddy:jar:1.14.4 7ae2b39ac230be9e3e09ce020406c017ff8ceba06eaf078c62a88c218a0ff2b4 @@ -775,6 +789,8 @@ net.bytebuddy:byte-buddy:pom:1.14.13 95d5e57845e787a2a0739aec15cc7146fd616cab0ac824a02bee0e9e5ac67730 net.bytebuddy:byte-buddy:pom:1.14.14 efe26a33ce44ee27b49b76835746e2b26b5918b6cf9b490a5206ecfd278780c0 net.bytebuddy:byte-buddy:pom:1.14.15 d5639f8fe27cead33e6a4c789fad8e65f328f62bb79dad2bdd7ae6cc93b9454c +net.bytebuddy:byte-buddy:pom:1.14.16 808749924730dd83438518fa240b046d71c938cd2a0acaa7affbbd94cdfa8361 +net.bytebuddy:byte-buddy:pom:1.14.17 edb2c2591e1805ea117d9a23615586cc6321d250e892a9d344dc09d5a22bd13e net.bytebuddy:byte-buddy:pom:1.14.2 c18ad7b621b3910528c7a9038d74e7e33fe79aca88e7f2b58bb853eabb6b33ff net.bytebuddy:byte-buddy:pom:1.14.3 50e1c99fcf83f3131f32aed4225ee8ff56e40496ffed4daf946b24e50873481d net.bytebuddy:byte-buddy:pom:1.14.4 d79615b646178d735ae2ca1f7400fdc6138aeb2cfd5f81427c8f1035cdea4bc4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <artifactId>byte-buddy</artifactId> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <artifactId>byte-buddy-agent</artifactId> @@ -69,7 +69,7 @@ <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.14.15</version> + <version>1.14.17</version> <scope>test</scope> </dependency> </dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/main/java/net/bytebuddy/agent/ByteBuddyAgent.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/main/java/net/bytebuddy/agent/ByteBuddyAgent.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/main/java/net/bytebuddy/agent/ByteBuddyAgent.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/main/java/net/bytebuddy/agent/ByteBuddyAgent.java 2024-07-08 21:04:14.000000000 +0200 @@ -91,21 +91,6 @@ private static final String MANIFEST_VERSION_VALUE = "1.0"; /** - * The size of the buffer for copying the agent installer file into another jar. - */ - private static final int BUFFER_SIZE = 1024 * 8; - - /** - * Convenience indices for reading and writing to the buffer to make the code more readable. - */ - private static final int START_INDEX = 0, END_OF_FILE = -1; - - /** - * The status code expected as a result of a successful attachment. - */ - private static final int SUCCESSFUL_ATTACH = 0; - - /** * Representation of the bootstrap {@link java.lang.ClassLoader}. */ @AlwaysNull @@ -153,28 +138,11 @@ private static final String OS_NAME = "os.name"; /** - * The name of the method for reading the installer's instrumentation. - */ - private static final String INSTRUMENTATION_METHOD = "getInstrumentation"; - - /** * Represents the {@code file} URL protocol. */ private static final String FILE_PROTOCOL = "file"; /** - * An indicator variable to express that no instrumentation is available. - */ - @AlwaysNull - private static final Instrumentation UNAVAILABLE = null; - - /** - * Represents a failed attempt to self-resolve a jar file location. - */ - @AlwaysNull - private static final File CANNOT_SELF_RESOLVE = null; - - /** * The attachment type evaluator to be used for determining if an attachment requires an external process. */ private static final AttachmentTypeEvaluator ATTACHMENT_TYPE_EVALUATOR = doPrivileged(AttachmentTypeEvaluator.InstallationAction.INSTANCE); @@ -672,10 +640,10 @@ JarOutputStream jarOutputStream = new JarOutputStream(new FileOutputStream(attachmentJar)); try { jarOutputStream.putNextEntry(new JarEntry(Attacher.class.getName().replace('.', '/') + CLASS_FILE_EXTENSION)); - byte[] buffer = new byte[BUFFER_SIZE]; + byte[] buffer = new byte[1024 * 8]; int index; - while ((index = inputStream.read(buffer)) != END_OF_FILE) { - jarOutputStream.write(buffer, START_INDEX, index); + while ((index = inputStream.read(buffer)) != -1) { + jarOutputStream.write(buffer, 0, index); } jarOutputStream.closeEntry(); } finally { @@ -702,7 +670,7 @@ processId, agent.getAbsolutePath(), Boolean.toString(isNative), - argument == null ? "" : (AGENT_ARGUMENT_SEPARATOR + argument)).start().waitFor() != SUCCESSFUL_ATTACH) { + argument == null ? "" : (AGENT_ARGUMENT_SEPARATOR + argument)).start().waitFor() != 0) { throw new IllegalStateException("Could not self-attach to current VM using external process - set a property " + Attacher.DUMP_PROPERTY + " to dump the process output to a file at the specified location"); @@ -726,31 +694,31 @@ private static File trySelfResolve() { try { if (Boolean.getBoolean(LATENT_RESOLVE)) { - return CANNOT_SELF_RESOLVE; + return null; } ProtectionDomain protectionDomain = Attacher.class.getProtectionDomain(); if (protectionDomain == null) { - return CANNOT_SELF_RESOLVE; + return null; } CodeSource codeSource = protectionDomain.getCodeSource(); if (codeSource == null) { - return CANNOT_SELF_RESOLVE; + return null; } URL location = codeSource.getLocation(); if (!location.getProtocol().equals(FILE_PROTOCOL)) { - return CANNOT_SELF_RESOLVE; + return null; } try { File file = new File(location.toURI()); if (file.getPath().contains(AGENT_ARGUMENT_SEPARATOR)) { - return CANNOT_SELF_RESOLVE; + return null; } return file; } catch (URISyntaxException ignored) { return new File(location.getPath()); } } catch (Exception ignored) { - return CANNOT_SELF_RESOLVE; + return null; } } @@ -761,10 +729,28 @@ * @return The Byte Buddy agent's {@link java.lang.instrument.Instrumentation} instance. */ @MaybeNull - @SuppressFBWarnings(value = "REC_CATCH_EXCEPTION", justification = "Exception should not be rethrown but trigger a fallback.") private static Instrumentation doGetInstrumentation() { + if (!Installer.NAME.equals(Installer.class.getName())) { + Instrumentation instrumentation = doGetInstrumentation(Installer.NAME); + if (instrumentation != null) { + return instrumentation; + } + } + return doGetInstrumentation(Installer.class.getName()); + } + + /** + * Performs the actual lookup of the {@link java.lang.instrument.Instrumentation} from an installed + * Byte Buddy agent and returns the instance, or returns {@code null} if not present. + * + * @param name The name of the {@link Installer} class which might be shaded. + * @return The Byte Buddy agent's {@link java.lang.instrument.Instrumentation} instance. + */ + @MaybeNull + @SuppressFBWarnings(value = "REC_CATCH_EXCEPTION", justification = "Exception should not be rethrown but trigger a fallback.") + private static Instrumentation doGetInstrumentation(String name) { try { - Class<?> installer = Class.forName(Installer.class.getName(), true, ClassLoader.getSystemClassLoader()); + Class<?> installer = Class.forName(name, true, ClassLoader.getSystemClassLoader()); try { Class<?> module = Class.forName("java.lang.Module"); Method getModule = Class.class.getMethod("getModule"); @@ -775,11 +761,11 @@ } catch (ClassNotFoundException ignored) { /* empty */ } - return (Instrumentation) Class.forName(Installer.class.getName(), true, ClassLoader.getSystemClassLoader()) - .getMethod(INSTRUMENTATION_METHOD) + return (Instrumentation) Class.forName(name, true, ClassLoader.getSystemClassLoader()) + .getMethod("getInstrumentation") .invoke(null); } catch (Exception ignored) { - return UNAVAILABLE; + return null; } } @@ -1447,25 +1433,26 @@ * to avoid the creation of a temporary jar file which can remain undeleted on Windows operating systems where the agent * is linked by a class loader such that {@link File#deleteOnExit()} does not have an effect. * + * @param installer The installer class to attempt to resolve which might be a shaded version of the class. * @return This jar file's location or {@code null} if this jar file's location is inaccessible. * @throws IOException If an I/O exception occurs. */ @MaybeNull - private static File trySelfResolve() throws IOException { - ProtectionDomain protectionDomain = Installer.class.getProtectionDomain(); + private static File trySelfResolve(Class<?> installer) throws IOException { + ProtectionDomain protectionDomain = installer.getProtectionDomain(); if (Boolean.getBoolean(LATENT_RESOLVE)) { - return CANNOT_SELF_RESOLVE; + return null; } if (protectionDomain == null) { - return CANNOT_SELF_RESOLVE; + return null; } CodeSource codeSource = protectionDomain.getCodeSource(); if (codeSource == null) { - return CANNOT_SELF_RESOLVE; + return null; } URL location = codeSource.getLocation(); if (!location.getProtocol().equals(FILE_PROTOCOL)) { - return CANNOT_SELF_RESOLVE; + return null; } File agentJar; try { @@ -1474,26 +1461,26 @@ agentJar = new File(location.getPath()); } if (!agentJar.isFile() || !agentJar.canRead()) { - return CANNOT_SELF_RESOLVE; + return null; } // It is necessary to check the manifest of the containing file as this code can be shaded into another artifact. JarInputStream jarInputStream = new JarInputStream(new FileInputStream(agentJar)); try { Manifest manifest = jarInputStream.getManifest(); if (manifest == null) { - return CANNOT_SELF_RESOLVE; + return null; } Attributes attributes = manifest.getMainAttributes(); if (attributes == null) { - return CANNOT_SELF_RESOLVE; + return null; } - if (Installer.class.getName().equals(attributes.getValue(AGENT_CLASS_PROPERTY)) + if (installer.getName().equals(attributes.getValue(AGENT_CLASS_PROPERTY)) && Boolean.parseBoolean(attributes.getValue(CAN_REDEFINE_CLASSES_PROPERTY)) && Boolean.parseBoolean(attributes.getValue(CAN_RETRANSFORM_CLASSES_PROPERTY)) && Boolean.parseBoolean(attributes.getValue(CAN_SET_NATIVE_METHOD_PREFIX))) { return agentJar; } else { - return CANNOT_SELF_RESOLVE; + return null; } } finally { jarInputStream.close(); @@ -1523,10 +1510,10 @@ JarOutputStream jarOutputStream = new JarOutputStream(new FileOutputStream(agentJar), manifest); try { jarOutputStream.putNextEntry(new JarEntry(Installer.class.getName().replace('.', '/') + CLASS_FILE_EXTENSION)); - byte[] buffer = new byte[BUFFER_SIZE]; + byte[] buffer = new byte[1024 * 8]; int index; - while ((index = inputStream.read(buffer)) != END_OF_FILE) { - jarOutputStream.write(buffer, START_INDEX, index); + while ((index = inputStream.read(buffer)) != -1) { + jarOutputStream.write(buffer, 0, index); } jarOutputStream.closeEntry(); } finally { @@ -1541,13 +1528,27 @@ /** * {@inheritDoc} */ + @SuppressFBWarnings(value = "REC_CATCH_EXCEPTION", justification = "Exception should not be rethrown but trigger a fallback.") public File resolve() throws IOException { try { - File resolved = trySelfResolve(); + if (!Installer.class.getName().equals(Installer.NAME)) { + try { + File resolved = trySelfResolve(Class.forName(Installer.NAME, + false, + ClassLoader.getSystemClassLoader())); + if (resolved != null) { + return resolved; + } + } catch (ClassNotFoundException ignored) { + /* do nothing */ + } + } + File resolved = trySelfResolve(Installer.class); if (resolved != null) { return resolved; } } catch (Exception ignored) { + /* do nothing */ } return createJarFile(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/main/java/net/bytebuddy/agent/Installer.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/main/java/net/bytebuddy/agent/Installer.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/main/java/net/bytebuddy/agent/Installer.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/main/java/net/bytebuddy/agent/Installer.java 2024-07-08 21:04:14.000000000 +0200 @@ -15,6 +15,7 @@ */ package net.bytebuddy.agent; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import net.bytebuddy.agent.utility.nullability.MaybeNull; import java.lang.instrument.Instrumentation; @@ -27,6 +28,11 @@ public class Installer { /** + * The name of the {@link Installer} class that is stored in an obfuscated format which will not be relocated. + */ + protected static final String NAME = new StringBuilder("rellatsnI.tnega.yddubetyb.ten").reverse().toString(); + + /** * A field for carrying the {@link java.lang.instrument.Instrumentation} that was loaded by the Byte Buddy * agent. Note that this field must never be accessed directly as the agent is injected into the VM's * system class loader. This way, the field of this class might be {@code null} even after the installation @@ -91,7 +97,7 @@ * @param instrumentation The instrumentation instance. */ public static void premain(String arguments, Instrumentation instrumentation) { - Installer.instrumentation = instrumentation; + doMain(instrumentation); } /** @@ -101,6 +107,28 @@ * @param instrumentation The instrumentation instance. */ public static void agentmain(String arguments, Instrumentation instrumentation) { + doMain(instrumentation); + } + + /** + * Installs the {@link Instrumentation} in the current class and possibly obfuscated class. + * + * @param instrumentation The instrumentation instance. + */ + @SuppressFBWarnings(value = "REC_CATCH_EXCEPTION", justification = "Exception should not interrupt agent attachment.") + private static synchronized void doMain(Instrumentation instrumentation) { + if (Installer.instrumentation != null) { + return; + } Installer.instrumentation = instrumentation; + try { + if (!Installer.class.getName().equals(NAME)) { + Class.forName(NAME, false, ClassLoader.getSystemClassLoader()) + .getField("instrumentation") + .set(null, instrumentation); + } + } catch (Throwable ignored) { + /* do nothing */ + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/main/java/net/bytebuddy/agent/VirtualMachine.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/main/java/net/bytebuddy/agent/VirtualMachine.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/main/java/net/bytebuddy/agent/VirtualMachine.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/main/java/net/bytebuddy/agent/VirtualMachine.java 2024-07-08 21:04:14.000000000 +0200 @@ -33,6 +33,8 @@ import java.security.SecureRandom; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * <p> @@ -683,7 +685,7 @@ } /** - * Implements a connection for a Posix socket in JNA. + * Implements a connection for a POSIX socket in JNA. */ class ForJnaPosixSocket extends OnPersistentByteChannel<Integer> { @@ -698,7 +700,7 @@ private final File socket; /** - * Creates a connection for a virtual posix socket implemented in JNA. + * Creates a connection for a virtual POSIX socket implemented in JNA. * * @param library The JNA library to use. * @param socket The POSIX socket. @@ -750,7 +752,7 @@ } /** - * A JNA library binding for Posix sockets. + * A JNA library binding for POSIX sockets. */ protected interface PosixLibrary extends Library { @@ -1079,6 +1081,7 @@ * Custom {@link WinBase.SECURITY_ATTRIBUTES} is required here to "get" Medium Integrity Level. * In order to allow Medium Integrity Level clients to open * and use a NamedPipe created by an High Integrity Level process. + * * @return A security attributes object that gives everyone read and write access. */ private WinBase.SECURITY_ATTRIBUTES createSecurityAttributesToAllowMediumIntegrity() { @@ -2062,7 +2065,7 @@ /** * Changes the ownership of a file. Can be called only if this process is owned by root. * - * @param file The path of the file to change ownership of. + * @param file The path of the file to change ownership of. * @param userId The user that should own the file. */ void chownFileToUser(File file, long userId); @@ -2078,22 +2081,12 @@ private final PosixLibrary library; /** - * The maximum amount of attempts for checking the result of a foreign process. - */ - private final int attempts; - - /** - * The pause between two checks for another process to return. - */ - private final long pause; - - /** - * The time unit of the pause time. + * The POSIX owner provider to use. */ - private final TimeUnit timeUnit; + private final PosixOwnerProvider provider; /** - * Creates a new connector for a POSIX enviornment using JNA. + * Creates a new connector for a POSIX environment using JNA. * * @param attempts The maximum amount of attempts for checking the result of a foreign process. * @param pause The pause between two checks for another process to return. @@ -2101,9 +2094,9 @@ */ @SuppressWarnings("deprecation") public ForJnaPosixEnvironment(int attempts, long pause, TimeUnit timeUnit) { - this.attempts = attempts; - this.pause = pause; - this.timeUnit = timeUnit; + provider = Platform.isAIX() + ? new PosixOwnerProvider.UsingIStat(attempts, pause, timeUnit) + : new PosixOwnerProvider.UsingStat(attempts, pause, timeUnit); library = Native.loadLibrary("c", PosixLibrary.class); } @@ -2147,40 +2140,7 @@ */ @SuppressFBWarnings(value = "OS_OPEN_STREAM", justification = "The stream life-cycle is bound to its process.") public int getOwnerIdOf(File file) { - try { - // The binding for 'stat' is very platform dependant. To avoid the complexity of binding the correct method, - // stat is called as a separate command. This is less efficient but more portable. - Process process = Runtime.getRuntime().exec(new String[]{"stat", - Platform.isMac() ? "-f" : "-c", - "%u", - file.getAbsolutePath()}); - int attempts = this.attempts; - boolean exited = false; - String line = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")).readLine(); - do { - try { - if (process.exitValue() != 0) { - throw new IllegalStateException("Error while executing stat"); - } - exited = true; - break; - } catch (IllegalThreadStateException ignored) { - try { - Thread.sleep(timeUnit.toMillis(pause)); - } catch (InterruptedException exception) { - Thread.currentThread().interrupt(); - throw new IllegalStateException(exception); - } - } - } while (--attempts > 0); - if (!exited) { - process.destroy(); - throw new IllegalStateException("Command for stat did not exit in time"); - } - return Integer.parseInt(line); - } catch (IOException exception) { - throw new IllegalStateException("Unable to execute stat command", exception); - } + return provider.getOwnerIdOf(file); } /** @@ -2227,21 +2187,17 @@ PosixLibrary.SemaphoreOperation target = new PosixLibrary.SemaphoreOperation(); target.operation = operation; target.flags = flags; - try { - while (count-- > 0) { - try { - library.semop(semaphore, target, 1); - } catch (LastErrorException exception) { - if (acceptUnavailable && (Native.getLastError() == PosixLibrary.EAGAIN - || Native.getLastError() == PosixLibrary.EDEADLK)) { - break; - } else { - throw exception; - } + while (count-- > 0) { + try { + library.semop(semaphore, target, 1); + } catch (LastErrorException exception) { + if (acceptUnavailable && (Native.getLastError() == PosixLibrary.EAGAIN + || Native.getLastError() == PosixLibrary.EDEADLK)) { + break; + } else { + throw exception; } } - } finally { - target = null; } } @@ -2385,6 +2341,186 @@ } } } + + /** + * Represents a system that supports POSIX ownership. + */ + protected interface PosixOwnerProvider { + + /** + * Returns the user id of the owner of the supplied file. + * + * @param file The file for which to locate the owner. + * @return The owner id of the supplied file. + */ + int getOwnerIdOf(File file); + + /** + * An implementation of reading POSIX ownership using {@code stat}. + */ + class UsingStat implements PosixOwnerProvider { + + /** + * The maximum amount of attempts for checking the result of a foreign process. + */ + private final int attempts; + + /** + * The pause between two checks for another process to return. + */ + private final long pause; + + /** + * The time unit of the pause time. + */ + private final TimeUnit timeUnit; + + /** + * Creates a new provider where an owner is derived using the {@code stat} command. + * + * @param attempts The maximum amount of attempts for checking the result of a foreign process. + * @param pause The pause between two checks for another process to return. + * @param timeUnit The time unit of the pause time. + */ + public UsingStat(int attempts, long pause, TimeUnit timeUnit) { + this.attempts = attempts; + this.pause = pause; + this.timeUnit = timeUnit; + } + + /** + * {@inheritDoc} + */ + public int getOwnerIdOf(File file) { + try { + // The binding for 'stat' is very platform dependant. To avoid the complexity of binding the correct method, + // stat is called as a separate command. This is less efficient but more portable. + Process process = Runtime.getRuntime().exec(new String[]{"stat", + Platform.isMac() ? "-f" : "-c", + "%u", + file.getAbsolutePath()}); + int attempts = this.attempts; + String line = null; + do { + try { + if (process.exitValue() != 0) { + throw new IllegalStateException("Error while executing stat"); + } + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); + try { + line = reader.readLine(); + } finally { + reader.close(); + } + break; + } catch (IllegalThreadStateException ignored) { + try { + Thread.sleep(timeUnit.toMillis(pause)); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException(exception); + } + } + } while (--attempts > 0); + if (line == null) { + process.destroy(); + throw new IllegalStateException("Command for stat did not exit in time"); + } + return Integer.parseInt(line); + } catch (IOException exception) { + throw new IllegalStateException("Unable to execute stat command", exception); + } + } + } + + /** + * An implementation for reading a POSIX owner using {@code istat}. + */ + class UsingIStat implements PosixOwnerProvider { + + /** + * A pattern to represent the owner on the console output. + */ + private static final Pattern AIX_OWNER_PATTERN = Pattern.compile("Owner: (\\d+)\\("); + + /** + * The maximum amount of attempts for checking the result of a foreign process. + */ + private final int attempts; + + /** + * The pause between two checks for another process to return. + */ + private final long pause; + + /** + * The time unit of the pause time. + */ + private final TimeUnit timeUnit; + + /** + * Creates a new provider for reading a POSIX owner using {@code istat}. + * + * @param attempts The maximum amount of attempts for checking the result of a foreign process. + * @param pause The pause between two checks for another process to return. + * @param timeUnit The time unit of the pause time. + */ + public UsingIStat(int attempts, long pause, TimeUnit timeUnit) { + this.attempts = attempts; + this.pause = pause; + this.timeUnit = timeUnit; + } + + /** + * {@inheritDoc} + */ + public int getOwnerIdOf(File file) { + try { + Process process = Runtime.getRuntime().exec(new String[]{"istat", file.getAbsolutePath()}); + int attempts = this.attempts; + String lines = null; + do { + try { + if (process.exitValue() != 0) { + throw new IllegalStateException("Error while executing istat"); + } + StringBuilder output = new StringBuilder(); + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); + try { + String line; + while ((line = reader.readLine()) != null) { + output.append(line).append("\n"); + } + } finally { + reader.close(); + } + lines = output.toString(); + break; + } catch (IllegalThreadStateException ignored) { + try { + Thread.sleep(timeUnit.toMillis(pause)); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException(exception); + } + } + } while (--attempts > 0); + if (lines == null) { + process.destroy(); + throw new IllegalStateException("Command for istat did not exit in time"); + } + Matcher matcher = AIX_OWNER_PATTERN.matcher(lines); + if (matcher.find()) { + return Integer.parseInt(matcher.group(1)); + } else { + throw new IllegalStateException("Unable to parse response from istat command: " + lines); + } + } catch (IOException exception) { + throw new IllegalStateException("Unable to execute istat command", exception); + } + } + } + } } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/test/java/net/bytebuddy/agent/AttacherTest.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/test/java/net/bytebuddy/agent/AttacherTest.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/test/java/net/bytebuddy/agent/AttacherTest.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/test/java/net/bytebuddy/agent/AttacherTest.java 2024-07-08 21:04:14.000000000 +0200 @@ -97,4 +97,4 @@ public void detach() { } } -} \ No newline at end of file +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/test/java/net/bytebuddy/agent/ByteBuddyAgentTest.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/test/java/net/bytebuddy/agent/ByteBuddyAgentTest.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/test/java/net/bytebuddy/agent/ByteBuddyAgentTest.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/test/java/net/bytebuddy/agent/ByteBuddyAgentTest.java 2024-07-08 21:04:14.000000000 +0200 @@ -1,5 +1,6 @@ package net.bytebuddy.agent; +import org.hamcrest.CoreMatchers; import org.junit.After; import org.junit.Before; import org.junit.Test; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/test/java/net/bytebuddy/agent/InstallerTest.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/test/java/net/bytebuddy/agent/InstallerTest.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-agent/src/test/java/net/bytebuddy/agent/InstallerTest.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-agent/src/test/java/net/bytebuddy/agent/InstallerTest.java 2024-07-08 21:04:14.000000000 +0200 @@ -33,6 +33,7 @@ Field field = Installer.class.getDeclaredField("instrumentation"); field.setAccessible(true); actualInstrumentation = (Instrumentation) field.get(null); + field.set(null, null); } @After @@ -85,4 +86,9 @@ throw (Exception) exception.getTargetException(); } } + + @Test + public void testInstallerObfuscatedNameMatches() throws Exception { + assertThat(Installer.NAME, is(Installer.class.getName())); + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-android/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy-android/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-android/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-android/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <artifactId>byte-buddy-android</artifactId> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-android-test/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy-android-test/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-android-test/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-android-test/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <artifactId>byte-buddy-android-test</artifactId> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-benchmark/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy-benchmark/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-benchmark/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-benchmark/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <artifactId>byte-buddy-benchmark</artifactId> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <!-- @@ -127,7 +127,7 @@ <plugin> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-maven-plugin</artifactId> - <version>1.14.15</version> + <version>1.14.17</version> <executions> <execution> <phase>compile</phase> @@ -142,7 +142,7 @@ <transformation> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.14.15</version> + <version>1.14.17</version> <plugin>net.bytebuddy.build.HashCodeAndEqualsPlugin$WithNonNullableFields</plugin> <arguments> <argument> @@ -154,13 +154,13 @@ <transformation> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.14.15</version> + <version>1.14.17</version> <plugin>net.bytebuddy.build.CachedReturnPlugin</plugin> </transformation> <transformation> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.14.15</version> + <version>1.14.17</version> <plugin>net.bytebuddy.build.AccessControllerPlugin</plugin> <arguments> <argument> @@ -172,13 +172,13 @@ <transformation> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.14.15</version> + <version>1.14.17</version> <plugin>net.bytebuddy.build.DispatcherAnnotationPlugin</plugin> </transformation> <transformation> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.14.15</version> + <version>1.14.17</version> <plugin>net.bytebuddy.build.RepeatedAnnotationPlugin</plugin> </transformation> </transformations> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/main/java/net/bytebuddy/agent/builder/AgentBuilder.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/main/java/net/bytebuddy/agent/builder/AgentBuilder.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/main/java/net/bytebuddy/agent/builder/AgentBuilder.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/main/java/net/bytebuddy/agent/builder/AgentBuilder.java 2024-07-08 21:04:14.000000000 +0200 @@ -2585,6 +2585,16 @@ private final ConcurrentMap<Thread, Boolean> threads = new ConcurrentHashMap<Thread, Boolean>(); /** + * Creates a default circularity lock. The constructor invokes all methods that are used by + * the lock to avoid that using this lock triggers class loading under use. + */ + public Default() { + Thread thread = Thread.currentThread(); + threads.putIfAbsent(thread, true); + threads.remove(thread); + } + + /** * {@inheritDoc} */ public boolean acquire() { @@ -2646,6 +2656,15 @@ lock = new ReentrantLock(); this.time = time; this.timeUnit = timeUnit; + try { + if (!(time == 0 ? lock.tryLock() : lock.tryLock(time, timeUnit))) { + throw new IllegalStateException(); + } + } catch (InterruptedException ignored) { + Thread.currentThread().interrupt(); + return; + } + lock.unlock(); } /** @@ -7006,7 +7025,7 @@ * during reiteration. For these reasons, this strategy has to be used with care! * </p> */ - enum WithSortOrderAssumption implements DiscoveryStrategy { + public enum WithSortOrderAssumption implements DiscoveryStrategy { /** * The singleton instance. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/main/java/net/bytebuddy/asm/Advice.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/main/java/net/bytebuddy/asm/Advice.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/main/java/net/bytebuddy/asm/Advice.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/main/java/net/bytebuddy/asm/Advice.java 2024-07-08 21:04:14.000000000 +0200 @@ -7440,6 +7440,9 @@ default: throw new IllegalArgumentException("Unexpected frame type: " + type); } + if (instrumentedMethod.isConstructor() && currentFrameDivergence < instrumentedMethod.getStackSize()) { + throw new IllegalStateException(instrumentedMethod + " dropped implicit 'this' frame"); + } methodVisitor.visitFrame(type, localVariableLength, localVariable, stackSize, stack); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/main/java/net/bytebuddy/dynamic/loading/ByteArrayClassLoader.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/main/java/net/bytebuddy/dynamic/loading/ByteArrayClassLoader.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/main/java/net/bytebuddy/dynamic/loading/ByteArrayClassLoader.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/main/java/net/bytebuddy/dynamic/loading/ByteArrayClassLoader.java 2024-07-08 21:04:14.000000000 +0200 @@ -1346,20 +1346,20 @@ /** * Checks if a resource name represents a class file of a class that was loaded by this class loader. * - * @param resourceName The resource name of the class to be exposed as its class file. + * @param resource The resource name of the class to be exposed as its class file. * @return {@code true} if this class represents a class that is being loaded by this class loader. */ - private boolean isShadowed(String resourceName) { - if (persistenceHandler.isManifest() || !resourceName.endsWith(CLASS_FILE_SUFFIX)) { + private boolean isShadowed(String resource) { + if (persistenceHandler.isManifest() || !resource.endsWith(CLASS_FILE_SUFFIX)) { return false; } // This synchronization is required to avoid a racing condition to the actual class loading. - synchronized (this) { - String typeName = resourceName.replace('/', '.').substring(0, resourceName.length() - CLASS_FILE_SUFFIX.length()); - if (typeDefinitions.containsKey(typeName)) { + String name = resource.replace('/', '.').substring(0, resource.length() - CLASS_FILE_SUFFIX.length()); + synchronized (SYNCHRONIZATION_STRATEGY.initialize().getClassLoadingLock(this, name)) { + if (typeDefinitions.containsKey(name)) { return true; } - Class<?> loadedClass = findLoadedClass(typeName); + Class<?> loadedClass = findLoadedClass(name); return loadedClass != null && loadedClass.getClassLoader() == this; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/test/java/net/bytebuddy/asm/AdviceTest.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/test/java/net/bytebuddy/asm/AdviceTest.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-dep/src/test/java/net/bytebuddy/asm/AdviceTest.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-dep/src/test/java/net/bytebuddy/asm/AdviceTest.java 2024-07-08 21:04:14.000000000 +0200 @@ -8,15 +8,19 @@ import net.bytebuddy.dynamic.ClassFileLocator; import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; import net.bytebuddy.dynamic.loading.InjectionClassLoader; +import net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy; import net.bytebuddy.implementation.Implementation; import net.bytebuddy.implementation.bytecode.ByteCodeAppender; import net.bytebuddy.implementation.bytecode.StackManipulation; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.implementation.bytecode.constant.ClassConstant; +import net.bytebuddy.implementation.bytecode.member.MethodInvocation; +import net.bytebuddy.implementation.bytecode.member.MethodReturn; import net.bytebuddy.implementation.bytecode.member.MethodVariableAccess; import net.bytebuddy.matcher.ElementMatchers; import net.bytebuddy.pool.TypePool; import net.bytebuddy.test.packaging.AdviceTestHelper; +import net.bytebuddy.test.utility.DebuggingWrapper; import net.bytebuddy.test.utility.JavaVersionRule; import net.bytebuddy.utility.JavaType; import org.junit.Rule; @@ -1638,7 +1642,7 @@ @Test public void testAssigningEnterPostProcessorInline() throws Exception { Class<?> type = new ByteBuddy() - .redefine(PostProcessorInlineTest.class) + .redefine(PostProcessorInline.class) .visit(Advice.withCustomMapping().with(new Advice.PostProcessor.Factory() { public Advice.PostProcessor make(final MethodDescription.InDefinedShape advice, boolean exit) { return new Advice.PostProcessor() { @@ -1655,7 +1659,7 @@ } }; } - }).to(PostProcessorInlineTest.class).on(named(FOO))) + }).to(PostProcessorInline.class).on(named(FOO))) .make() .load(ClassLoadingStrategy.BOOTSTRAP_LOADER, ClassLoadingStrategy.Default.WRAPPER) .getLoaded(); @@ -1665,7 +1669,7 @@ @Test public void testAssigningEnterPostProcessorDelegate() throws Exception { Class<?> type = new ByteBuddy() - .redefine(PostProcessorDelegateTest.class) + .redefine(PostProcessorDelegate.class) .visit(Advice.withCustomMapping().with(new Advice.PostProcessor.Factory() { public Advice.PostProcessor make(final MethodDescription.InDefinedShape advice, boolean exit) { return new Advice.PostProcessor() { @@ -1682,7 +1686,7 @@ } }; } - }).to(PostProcessorDelegateTest.class).on(named(FOO))) + }).to(PostProcessorDelegate.class).on(named(FOO))) .make() .load(ClassLoadingStrategy.BOOTSTRAP_LOADER, ClassLoadingStrategy.Default.WRAPPER) .getLoaded(); @@ -1785,14 +1789,38 @@ @Test public void testWriteFieldInConstructor() throws Exception { Class<?> sample = new ByteBuddy() - .redefine(ConstructorWriteFieldTest.class) - .visit(Advice.to(ConstructorWriteFieldTest.class).on(isConstructor())) + .redefine(ConstructorWriteField.class) + .visit(Advice.to(ConstructorWriteField.class).on(isConstructor())) .make() .load(ClassLoadingStrategy.BOOTSTRAP_LOADER, ClassLoadingStrategy.Default.WRAPPER) .getLoaded(); assertThat(sample.getField(FOO).get(sample.getConstructor().newInstance()), is((Object) FOO)); } + @Test(expected = IllegalStateException.class) + public void testDroppingOfThisFrameInConstructor() throws Exception { + new ByteBuddy() + .subclass(Object.class, ConstructorStrategy.Default.NO_CONSTRUCTORS) + .defineConstructor(Visibility.PUBLIC) + .intercept(new Implementation.Simple( + MethodVariableAccess.loadThis(), + MethodInvocation.invoke(new MethodDescription.ForLoadedConstructor(Object.class.getConstructor())) + .special(TypeDescription.ForLoadedType.of(Object.class)), + new StackManipulation.AbstractBase() { + @Override + public Size apply(MethodVisitor methodVisitor, Implementation.Context implementationContext) { + methodVisitor.visitFrame(Opcodes.F_CHOP, 1, null, 0, null); + return Size.ZERO; + } + }, + MethodReturn.VOID + )) + .visit(DebuggingWrapper.makeDefault()) + .visit(Advice.to(EmptyExitAdvice.class).on(isConstructor())) + .make(); + } + + @Test(expected = IllegalArgumentException.class) public void testUserSerializableTypeValueNonAssignable() throws Exception { new ByteBuddy() @@ -4127,7 +4155,7 @@ } } - public static class PostProcessorInlineTest { + public static class PostProcessorInline { @Advice.OnMethodEnter static String enter() { @@ -4139,7 +4167,7 @@ } } - public static class PostProcessorDelegateTest { + public static class PostProcessorDelegate { @Advice.OnMethodEnter(inline = false) static String enter() { @@ -4151,7 +4179,7 @@ } } - public static class ConstructorWriteFieldTest { + public static class ConstructorWriteField { public String foo; @@ -4160,4 +4188,12 @@ return value = "foo"; } } + + public static class EmptyExitAdvice { + + @Advice.OnMethodExit + static void exit() { + /* do nothing */ + } + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java 2024-07-08 21:04:14.000000000 +0200 @@ -378,7 +378,7 @@ outputStream.closeEntry(); } catch (ZipException exception) { String name = element.getName(); - if (!name.startsWith("META-INF") && !name.endsWith("-info.class")) { + if (!name.startsWith("META-INF") && !name.endsWith("-info.class") && name.endsWith(".class")) { throw exception; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A license \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE.txt new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE.txt --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/LICENSE.txt 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A license \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A notice \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE.txt new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE.txt --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation-lib/src/main/resources/NOTICE.txt 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A notice \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A license \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE.txt new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE.txt --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/LICENSE.txt 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A license \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A notice \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE.txt new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE.txt --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/android-plugin-test/service-implementation2-lib/src/main/resources/NOTICE.txt 2024-07-08 21:04:14.000000000 +0200 @@ -0,0 +1 @@ +A notice \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-gradle-plugin/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-gradle-plugin/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <artifactId>byte-buddy-gradle-plugin</artifactId> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/byte-buddy-maven-plugin/pom.xml new/byte-buddy-byte-buddy-1.14.18/byte-buddy-maven-plugin/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/byte-buddy-maven-plugin/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/byte-buddy-maven-plugin/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -5,7 +5,7 @@ <parent> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> </parent> <artifactId>byte-buddy-maven-plugin</artifactId> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/pom.xml new/byte-buddy-byte-buddy-1.14.18/pom.xml --- old/byte-buddy-byte-buddy-1.14.16/pom.xml 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/pom.xml 2024-07-08 21:04:14.000000000 +0200 @@ -4,7 +4,7 @@ <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-parent</artifactId> - <version>1.14.16</version> + <version>1.14.18</version> <packaging>pom</packaging> <inceptionYear>2014</inceptionYear> @@ -61,7 +61,7 @@ <bytebuddy.integration>false</bytebuddy.integration> <bytebuddy.experimental>false</bytebuddy.experimental> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <project.build.outputTimestamp>1716377554</project.build.outputTimestamp> + <project.build.outputTimestamp>1720465357</project.build.outputTimestamp> <sourcecode.main.version>1.5</sourcecode.main.version> <sourcecode.test.version>1.6</sourcecode.test.version> <bytecode.main.version>1.5</bytecode.main.version> @@ -154,7 +154,7 @@ <connection>scm:git:${repository.url}</connection> <developerConnection>scm:git:${repository.url}</developerConnection> <url>${repository.url}</url> - <tag>byte-buddy-1.14.16</tag> + <tag>byte-buddy-1.14.18</tag> </scm> <dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/byte-buddy-byte-buddy-1.14.16/release-notes.md new/byte-buddy-byte-buddy-1.14.18/release-notes.md --- old/byte-buddy-byte-buddy-1.14.16/release-notes.md 2024-05-22 13:35:07.000000000 +0200 +++ new/byte-buddy-byte-buddy-1.14.18/release-notes.md 2024-07-08 21:04:14.000000000 +0200 @@ -1,7 +1,15 @@ Byte Buddy release notes ------------------------ -### 8. Mai 2024: version 1.14.15 +### 29. May 2024: version 1.14.17 + +- Avoid crashing of Android plugin when there are duplicate files for licenses or license notices. + +### 22. May 2024: version 1.14.16 + +- Update ASM and introduce support for Java 23. + +### 8. May 2024: version 1.14.15 - Allow attaching from root on J9. @@ -28,7 +36,7 @@ - Adjusts Gradle plugin to support Gradle 8.4 without warnings. - Avoid blurry exception on build plugin for fail fast. -### 9. October 2023: version 1.14.10 +### 16. October 2023: version 1.14.10 - Add lazy facade to default `TypePool` in `AgentBuilder` to avoid parsing of types ignored by name. - Avoid module info classes in Android plugin.