XML::LibXML string parsing mishandles declared encodings
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
Start with src/main/java/org/perlonjava/runtime/perlmodule/XMLLibXML.java, especially xmlInputSource(), and trace how string inputs reach the XML parser. Use the reported failures in t/02gateway.t and the fixtures with ISO-8859-1 declarations as evidence; verify declared-encoding strings, decoded character strings, and BOM-marked byte strings against system Perl behavior.
由索引模型根據 Issue 內容生成。
描述
Summary
PerlOnJava's bundled XML::LibXML returns incorrect character data when parsing the PagSeguro XML fixtures used by Business::CPI::Gateway::PagSeguro 0.904. The upstream distribution passes all 17 tests under system Perl, but fails 3 assertions under PerlOnJava in t/02gateway.t.
Reproduction evidence
CPAN random tester run 20261106-154847-45334:
t/02gateway.tfailures:notification for completed transaction,notification for failed transaction, andit parses the file correctly.- Notification payer name: PerlOnJava returns
Jo\uFFFDo da Silva; expected UTF-8 bytes forJoão da Silva. - Transaction payer name: PerlOnJava returns
José Comprador; expectedJosé Comprador, matching the system Perl result for the fixture's declared encoding. - System Perl oracle: all 17 tests pass, including
t/02gateway.t.
The fixtures declare encoding="ISO-8859-1" while containing UTF-8 byte sequences for the accented names. The parser implementation in src/main/java/org/perlonjava/runtime/perlmodule/XMLLibXML.java sends most string inputs to a StringReader in xmlInputSource(). That character-based path bypasses XML byte decoding according to the declaration. The transaction mismatch directly reflects this; the replacement character in notification parsing also points to byte/character conversion on that path and should be covered while fixing it.
Expected behavior
Match system XML::LibXML behavior for string input carrying an XML encoding declaration, including these upstream cases. Preserve correct behavior for already-decoded character strings and BOM-marked byte strings.
Context
The target distribution is pure Perl and uses XML::LibXML; the failing implementation is PerlOnJava's bundled Java provider. No distribution source or tests were modified during classification.
- 主要語言
- Perl
- 星號
- 65
- 分支
- 8
- 平均合併
- 5 小時 57 分鐘
- 30 天內合併 PR
- 177
環境準備
- 提供 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
fglock/PerlOnJava 的其他 Issue
-
area:runtime documentation enhancement
難度 2/5 1-3 小時 新手友好度 72/100
fglock/PerlOnJava#1579 ·
維護者通常 1 天內回覆
-
Honor scalar context for sort returned from a subroutine可能已有人在做 @fglock 今天認領。 未關閉area:runtime bug
難度 3/5 1-2 天 新手友好度 25/100
fglock/PerlOnJava#1991 · 1 則留言 ·
維護者通常 1 天內回覆
-
area:cpan-port area:parser bug
難度 5/5 一週以上 新手友好度 35/100
fglock/PerlOnJava#1990 ·
維護者通常 1 天內回覆
-
area:backend bug
難度 4/5 3-5 天 新手友好度 55/100
fglock/PerlOnJava#1981 · 1 則留言 ·
維護者通常 1 天內回覆
-
area:runtime bug
難度 4/5 3-5 天 新手友好度 57/100
fglock/PerlOnJava#1980 · 1 則留言 ·
維護者通常 1 天內回覆
查看 fglock/PerlOnJava 的全部 Issue
相似的 Issue
-
check_keywords.pl dies before reporting an unknown keyword category可能已有人在做 @zhaohai666 於 1 天前認領。 未關閉
難度 1/5 1 小時以內 新手友好度 87/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 76/100
-
難度 2/5 1-3 小時 新手友好度 72/100
libwww-perl/HTTP-Message#236 ·
-
1.severity: security
難度 2/5 1-3 小時 新手友好度 68/100
維護者通常 1 天內回覆
-
wave-followup
難度 2/5 1-3 小時 新手友好度 74/100