Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sanitize numeric character reference #56

Merged

Conversation

ma8ma
Copy link
Collaborator

@ma8ma ma8ma commented Mar 16, 2019

サロゲートペアなど数値文字参照としてはエラーになる値をチェックしてかわりに規定の値を返すよう修正します。

issueを立ててないので不具合の説明をここに記載します。

動作環境

JDim 0.1.0-20190309(git:e649cc2f0c)

不具合の説明

  • スレ一覧やスレビューで文字化け(いわゆる豆腐)が発生します。
  • メニューバーの履歴が空欄化「-----」し表示されなくなります。

これら不具合は不正な数値文字参照が不正なutf-8文字列に変換されることで発生します。例えばサロゲートペアは数値文字参照としては不正です。(:x: ��, 🆗 🌵 -> 🌵)

不正となる数値文字参照は以下のリンクを参考にしました。
Numeric character reference end state (HTML 5.3)
https://www.w3.org/TR/html53/syntax.html#numeric-character-reference-end-state

不具合の再現

未修正のJDimで以下のスレッドにアクセスします。

表示される実行時警告の例

(jdim:10185): Pango-WARNING **: 16:41:50.003: Invalid UTF-8 string passed to pango_layout_set_text()

テスト

ma8ma:minefieldに変換のテストケースがあります。テストの導入についてはメンテナーの方と #45 で話をしています。

今のところ未修正の点

周辺のインターフェースと合わせてコードポイントを表す型をintからchar32_tに変更します。

edit: スレ履歴の修復について

スレ履歴のXMLファイルに不正なutf-8文字列が混入すると自動では修復できません。手動で修復するには(a)XMLファイル(hist.xml)を編集し不正なutf-8文字列が含まれる項目を削除するか、(b)キャッシュディレクトリの初期化(削除)をしてください。

サロゲートペアなど数値文字参照としてはエラーになる値をチェックして
かわりに規定の値を返すよう修正する。

参考文献 : Numeric character reference end state (HTML 5.3)
https://www.w3.org/TR/html53/syntax.html#numeric-character-reference-end-state
@ma8ma ma8ma added the bug バグの追跡 label Mar 16, 2019
@ma8ma ma8ma added this to In progress in State of JDim-v0.1.0+ via automation Mar 16, 2019
@yama-natuki yama-natuki merged commit a9aa0b1 into JDimproved:master Mar 17, 2019
State of JDim-v0.1.0+ automation moved this from In progress to Done Mar 17, 2019
@yama-natuki
Copy link
Collaborator

ありがとうございます

@ma8ma ma8ma deleted the sanitize-numeric-character-reference branch March 17, 2019 11:17
ma8ma referenced this pull request in ma8ma/JDim Jun 1, 2019
文字参照のデコードを更新する。
また、不正な数値文字参照を無理矢理変換するオプションを追加する。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug バグの追跡
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

2 participants