aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Simplify if-else in WildTypePattern.matchesExactlyByNameAlexander Kriegisch2023-01-151-5/+1
| | | | | | | | | A simple boolean condition is enough. Loosely relates to https://github.com/eclipse/org.aspectj/issues/24, but actually it is just drive-by cosmetics. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix WildTypePattern.isArrayAlexander Kriegisch2023-01-151-1/+1
| | | | | | | | | The method falsely determined that a one-dimensional array was not an array due to a one-off bug. Relates to https://github.com/eclipse/org.aspectj/issues/24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Expand regression tests for GitHub bug #24Alexander Kriegisch2023-01-154-13/+112
| | | | | | | | | | More test cases were added for - multi-dimensional arrays, - primitive type arrays. Relates to https://github.com/eclipse/org.aspectj/issues/24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add regression tests for GitHub bug #24Alexander Kriegisch2023-01-155-0/+142
| | | | | | Relates to https://github.com/eclipse/org.aspectj/issues/24. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Refactor, comment and reactivate Ajc183Tests.testAnnoStyleDecp_442425Alexander Kriegisch2023-01-077-67/+74
| | | | | | | | | | This test was always inactive and did not add any value other than during development. No it runs, passes and documents the status quo of - what was fixed (regression for AJC 1.8.2 core dump fixed in 1.8.3), - the current limitations of @DeclareParents and @DeclareMixin regarding generic interfaces. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Remove some old, accidentally committed class files from testsAlexander Kriegisch2023-01-079-0/+0
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* BcelTypeMunger.mungeMethodDelegate: only use 'synchronized' when necessaryAlexander Kriegisch2023-01-072-6/+30
| | | | | | | | | | | | | | | | | | | | | Relates to #198. Now, we create a delegate method body which basically looks as follows: public void methodOne() { if (this.ajc$instance$MyAspect$MyMixin == null) { synchronized(this) { if (this.ajc$instance$MyAspect$MyMixin == null) { this.ajc$instance$MyAspect$MyMixin = MyAspect.aspectOf().createImplementation(this); } } } this.ajc$instance$MyAspect$MyMixin.methodOne(); } The idea for the outer null check is from @aclement, see https://github.com/eclipse/org.aspectj/pull/205#issuecomment-1371556080. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* No more compiler errors for implicitly static inner aspects of interfacesAlexander Kriegisch2023-01-065-2/+67
| | | | | | | Fixes #162. Contains regression test Bugs1919Tests.testInterfaceInnerAspectImplicitlyStatic. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Test cosmeticsAlexander Kriegisch2023-01-062-3/+3
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* GitHub CI build: upgrade GabrielBB/xvfb-action to 1.6Alexander Kriegisch2023-01-041-1/+1
| | | | | | | | | | | | CI builds started showing warnings as follows: Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: GabrielBB/xvfb-action@v1 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Improve BcelTypeMunger.mungeMethodDelegate to avoid race conditionAlexander Kriegisch2023-01-041-2/+31
| | | | | | | Fixes #198, i.e. test DeclareMixinTests.testCaseEConcurrent from the previous commit now passes. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add test reproducing problem from #198Alexander Kriegisch2023-01-043-25/+133
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix parenthesised AJ keyword compiler problemAlexander Kriegisch2023-01-044-1/+58
| | | | | | Fixes #20. Needs JDT Core grammar fix. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix TABLESWITCH weaver issue with Integer.MAX_VALUEAlexander Kriegisch2022-12-301-2/+2
| | | | | | Fixes #190. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Regression test for #190Alexander Kriegisch2022-12-303-0/+36
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix indentation in ajc1919.xml (cosmetics)Alexander Kriegisch2022-12-301-8/+8
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Improve code and documentation for #366085 fixAlexander Kriegisch2022-12-281-39/+52
| | | | | | | | | | | This commit is a follow-up for 65f1ec72. The SOURCE retention case is documented now and considered in a few more call sites. The previously already similar code structures in - DeclareAnnotation.ensureAnnotationDiscovered, - DeclareAnnotation.getAnnotationType have both been streamlined and still remain logically in sync. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* IDE.md: update AJDT version infoAlexander Kriegisch2022-12-221-2/+2
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Set version to 1.9.20-SNAPSHOTAlexander Kriegisch2022-12-2128-28/+28
|
* AspectJ release 1.9.19V1_9_19Alexander Kriegisch2022-12-2128-28/+28
|
* BCEL: use MAX_CP_ENTRIES from internal class, not from JREAlexander Kriegisch2022-12-211-5/+4
| | | | | | | | | | | | Instead of importing com.sun.org.apache.bcel.internal.Const, use use org.aspectj.apache.bcel.Constants. The former class is from the internal JRE module 'java.xml' which is not exposed by default. Actually, no existing test failed because of it, but javadoc generation for the AspectJ weaver. Relates to #192. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Bump JDT Core to release 1.9.19Alexander Kriegisch2022-12-211-1/+1
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Update release notes for 1.9.19 (Java 19)Alexander Kriegisch2022-12-211-31/+26
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix #366085 concerning declared annotations with source retentionAlexander Kriegisch2022-12-218-7/+55
| | | | | | | | | | | | | | | See https://bugs.eclipse.org/bugs/show_bug.cgi?id=366085. See https://stackoverflow.com/q/74618269/1082681. The issue described in the Bugzilla issue is about 'declare @type', but similar issues also existed for 'declare @field', 'declare @method', 'declare @constructor'. This fix is rather superficial and leaves things to be desired, because it is rather hacky and simply ignores errors source retention annotation declarations during weaving. A better fix would drop the corresponding declarations while parsing and also issue compiler warnings in each case. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Merge pull request #187 from eclipse/java-19Alexander Kriegisch2022-12-2181-395/+1638
|\ | | | | Java 19 support
| * Add release notes for 1.9.19 (Java 19)Alexander Kriegisch2022-12-212-0/+165
| | | | | | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Add tests for Java 19 record patternsAlexander Kriegisch2022-12-2111-7/+297
| | | | | | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Bump ECJ version in messages_aspectj.propertiesAlexander Kriegisch2022-12-201-1/+1
| | | | | | | | | | | | Eclipse Compiler 19f448f47c9e3e (15Dec2022) - Java19 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Merge branch 'master' into java-19Alexander Kriegisch2022-11-131-4/+21
| |\ | |/ |/|
* | Address upstream BCEL vulnerability CVE-2022-42920Alexander Kriegisch2022-11-131-4/+21
| | | | | | | | | | | | | | | | | | | | Fixes #192. See https://github.com/advisories/GHSA-97xg-phpr-rg8q. See https://issues.apache.org/jira/browse/BCEL-363. See https://github.com/apache/commons-bcel/pull/147. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * OutputSpec.matchesThisVm better supports version rangesAlexander Kriegisch2022-10-0512-293/+298
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vmVersionRanges might be a single version like "9", a list of versions like "1.2,1.3,1.4,1.5", an equivalent range of "1.2-1.5", an open range like "-1.8", "9-" (equivalent to "9+") or a more complex list of ranges like "-1.6,9-11,13-14,17-" or "8,11,16+". Empty ranges like in "", " ", "8,,14", ",5", "6-," will be ignored. I.e., they will not yield a positive match. Bogus ranges like "9-11-14" will be ignored, too. Existing XML test specs using '<line text="..." vm="v,v2,...,vn"/> have been adjusted to use version ranges rather than long lists of consecutive versions. Furthermore, ranges with a trailing '+' like '14+' were replaced by using the new canonical format '14-', even though the parser still correctly recognises '14+'. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * LangUtil: improve Java version major/minor parsingAlexander Kriegisch2022-10-051-3/+4
| | | | | | | | | | | | | | - Ignore everything including and after '+' in versions like '19+36-2238' - Add minor '.0' to Java versions like '19', '19+36-2238' Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Fix tests due to changed JDK 'toString' methods in Java 19Alexander Kriegisch2022-10-033-42/+51
| | | | | | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Add the first few Java 19 testsAlexander Kriegisch2022-10-0316-3/+770
| | | | | | | | | | | | | | | | | | | | For now, only the "pattern matching for switch" tests from previews 1 and 2 were adjusted to work in preview 3, because guarded patterns were replaced by 'when' clauses in 'switch' blocks. Therefore, existing test classes did not compile anymore and had to be replaced by syntactically upgraded versions with content merged from preview 1 and 2 classes. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Deactivate Java 18 preview language feature testsAlexander Kriegisch2022-10-033-11/+14
| | | | | | | | | | | | and enable LangUtil to parse Java versions like '19+36-2238'. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Remove Batik path entries from test classpathAlexander Kriegisch2022-10-031-7/+8
| | | | | | | | | | | | | | | | | | | | | | Firstly, Batik is not needed for running AspectJ tests. Secondly, the fixed Windows path separators led to GitHub CI/CD tests failing under Java 18+ on GitHub. Replacing ';' by 'File.pathSeparator' would have fixed the problem, but removing the paths altogether is the cleaner solution. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Cosmetic fixes in Java 18 tests (e.g. copyright year 2022)Alexander Kriegisch2022-10-038-13/+9
| | | | | | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Do not run Java 18 preview feature tests with Java 19 JDT CoreAlexander Kriegisch2022-10-031-2/+2
| | | | | | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Bump ASM to 9.4, supporting Java 20 class filesAlexander Kriegisch2022-10-021-1/+1
| | | | | | | | | | | | | | Even though we just upgraded to 9.3 for Java 19, it does not hurt to have ASM recognise the Java 20 class file major version. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Set Maven version to 1.9.19-SNAPSHOTAlexander Kriegisch2022-10-0228-29/+29
| | | | | | | | | | | | | | It makes sense to indicate the Java version in the minor-minor of AspectJ artifacts. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * Set Java 19 compiler version after JDT Core mergeAlexander Kriegisch2022-10-021-1/+1
| | | | | | | | | | | | | | In messages_aspectj.properties, set compiler.version to "Eclipse Compiler 5fd28398cc7aba (21Sep2022) - Java19". Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
| * First Java 19 version, barely tested.Alexander Kriegisch2022-10-015-10/+16
|/ | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add docs/dist/LICENSE-AspectJ.html to all public artifactsAlexander Kriegisch2022-10-019-7/+65
| | | | | | | | | | | | | | The license file will be included right in the main directory of both binary and source artifacts for - AspectJ Matcher, - AspectJ Runtime, - AspectJ Weaver, - AspectJ Tools (Compiler), - AspectJ Installer. Fixes #185. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* vuln-fix: Partial Path Traversal VulnerabilityJonathan Leitschuh2022-09-102-2/+2
| | | | | | | | | | | | | | | | | | | | | | | This fixes a partial path traversal vulnerability. Replaces `dir.getCanonicalPath().startsWith(parent.getCanonicalPath())`, which is vulnerable to partial path traversal attacks, with the more secure `dir.getCanonicalFile().toPath().startsWith(parent.getCanonicalFile().toPath())`. To demonstrate this vulnerability, consider `"/usr/outnot".startsWith("/usr/out")`. The check is bypassed although `/outnot` is not under the `/out` directory. It's important to understand that the terminating slash may be removed when using various `String` representations of the `File` object. For example, on Linux, `println(new File("/var"))` will print `/var`, but `println(new File("/var", "/")` will print `/var/`; however, `println(new File("/var", "/").getCanonicalPath())` will print `/var`. Weakness: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') Severity: Medium CVSSS: 6.1 Detection: CodeQL & OpenRewrite (https://public.moderne.io/recipes/org.openrewrite.java.security.PartialPathTraversalVulnerability) Reported-by: Jonathan Leitschuh <Jonathan.Leitschuh@gmail.com> Signed-off-by: Jonathan Leitschuh <Jonathan.Leitschuh@gmail.com> Bug-tracker: https://github.com/JLLeitschuh/security-research/issues/13 Co-authored-by: Moderne <team@moderne.io>
* Improve condy (constant dynamic) supportAlexander Kriegisch2022-08-134-8/+34
| | | | | | Relates to #170. Fixes the "Unknown constant type 17" problem. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* CI build: upgrade from Java 18-EA to 18Alexander Kriegisch2022-07-031-2/+2
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Use System.lineSeparator() instead of hand-crafted methodAndrey Turbanov2022-04-211-17/+1
|
* Make IStateListener.aboutToCompareClasspaths use typed listsAlexander Kriegisch2022-04-184-5/+4
| | | | | | | | | | | | | | | | Before, the signature was: void aboutToCompareClasspaths( List oldClasspath, List newClasspath); Now it is: void aboutToCompareClasspaths( List<String> oldClasspath, List<String> newClasspath); AJDT will also use the typed version after generics refactoring. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Cleanup redundant null check before instanceofAndrey Turbanov2022-04-178-11/+10
|
* Do not use String literal as synchronized lockAndrey Turbanov2022-04-151-1/+1
|