OWASP / OWASP/owasp-java-encoder

Fix JPMS dependency reads in the JSP, Jakarta, and ESAPI adapters

Offen
#92 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
Java
Sterne
541
Forks
122
Ø Merge
9 Std. 9 Min.
Gemergte PRs (30 T.)
1

Beschreibung

Follow-up to #90 (reviewed at 31588e1). This tracks work intentionally kept separate from the modernization PR.

Problem and evidence

The explicit descriptors in jsp/src/main/java9/module-info.java, jakarta/src/main/java9/module-info.java, and esapi/src/main/java9/module-info.java require only owasp.encoder. They do not declare reads for their external API dependencies.

Consumer execution on JDK 17 reproduced:

  • Loading org.owasp.encoder.tag.ForHtmlTag from the JSP module fails with IllegalAccessError: owasp.encoder.jsp does not read javax.servlet.jsp.api.
  • The equivalent Jakarta consumer fails because owasp.encoder.jakarta does not read jakarta.servlet.jsp.
  • Calling ESAPIEncoder.getInstance() with the adapter on the module path and ESAPI on the classpath fails because the adapter does not read the unnamed module.

The same failures occur with published 1.4.0. These are pre-existing issues, not regressions introduced by #90. Merely running jar --describe-module does not exercise these linkage failures.

Acceptance criteria

  • Determine and document supported module-path dependency arrangements and API versions for each adapter.
  • Correct descriptors, including transitive readability where required by exposed public APIs; use real dependency module names verified against the supported artifacts.
  • Add isolated named-module consumers that instantiate/use JSP and Jakarta tags and call the ESAPI adapter. Test the two JSP variants separately because they share a package name.
  • Positive tests work without broad --add-reads or --add-opens workarounds.
  • Retain classpath/container behavior, provided dependency scopes, existing public APIs, Java 8 base bytecode, published automatic-module names, explicit module identities, and OSGi metadata.

Related historical module support discussion: #66.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit den drei Java-9-Deskriptoren in jsp/src/main/java9/module-info.java, jakarta/src/main/java9/module-info.java und esapi/src/main/java9/module-info.java und reproduziere anschließend die in diesem Issue beschriebenen JDK-17-Fehler bei Consumern. Überprüfe unterstützte Abhängigkeitsanordnungen und Modulnamen, füge isolierte Named-Module-Consumer für beide JSP-Varianten und ESAPI hinzu und bestätige positive module-path-Tests ohne umfassende read- oder open-Workarounds, wobei das Verhalten von classpath und veröffentlichten Metadaten erhalten bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
build-system, testing-qa
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
52/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.