OWASP / OWASP/owasp-java-encoder

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

Aperta
#92 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Java
Stelle
541
Fork
122
Merge medio
9h 9m
PR unite (30g)
1

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con i tre descrittori Java 9 in jsp/src/main/java9/module-info.java, jakarta/src/main/java9/module-info.java ed esapi/src/main/java9/module-info.java, quindi riproduci i fallimenti dei consumer di JDK 17 descritti nell’issue. Verifica le configurazioni delle dipendenze supportate e i nomi dei moduli, aggiungi consumer di Named-Module isolati per entrambe le varianti JSP e per ESAPI e conferma test positivi di module-path senza workaround generici di read o open, preservando il comportamento di classpath e dei metadati pubblicati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
build-system, testing-qa
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Attiva
Chiarezza
Abbastanza chiara
Idoneità per principianti
52/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.