IPvFuture host literals with uppercase `V`, a multi-digit version or `:` are rejected
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 82/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- haskell
調査の方向性
パーサーと文字述語は Network/URI.hs にあります。まず ipvFuture の定義と、その周辺の URI パーサーコードを読んでください。既存のパーサーテストを確認し、大文字の V、複数桁のバージョン、アドレス内の : を対象に追加してください。報告された有効な形式を isURI、parseURI、parseURIReference が受け入れれば完了です。
索引モデルが issue の本文から書いたものです。
説明
The parser for IPvFuture host literals accepts less than the RFC 3986 §3.2.2 rule
IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
>>> isURI "http://[v1.a]/"
True
>>> isURI "http://[v1.a:b]/"
False
>>> isURI "http://[v1F.a]/"
False
>>> isURI "http://[V1.a]/"
False
All four should be True; parseURI and parseURIReference return Nothing for the last three.
The code is in Network/URI.hs:
ipvFuture =
do { _ <- char 'v'
; h <- hexDigitChar
; _ <- char '.'
; a <- many1 (satisfy isIpvFutureChar)
; return $ 'v':h:'.':a
}
isIpvFutureChar c = isUnreserved c || isSubDelims c || (c==';')
(c==';')is where the grammar has":".;is already a sub-delim, so this looks like a typo.- The version is a single
hexDigitChar, the grammar has1*HEXDIG. - Only lowercase
vis accepted. The RFC text says "an IP-literal that starts with "v" (case-insensitive)".
A possible fix:
ipvFuture =
- do { _ <- char 'v'
- ; h <- hexDigitChar
+ do { v <- char 'v' <|> char 'V'
+ ; h <- many1 hexDigitChar
; _ <- char '.'
; a <- many1 (satisfy isIpvFutureChar)
- ; return $ 'v':h:'.':a
+ ; return $ v:h ++ '.':a
}
isIpvFutureChar :: Char -> Bool
-isIpvFutureChar c = isUnreserved c || isSubDelims c || (c==';')
+isIpvFutureChar c = isUnreserved c || isSubDelims c || (c==':')
No IPvFuture format is in use as far as I know, so this is low priority.
Tested with network-uri 2.6.4.2 and current master, GHC 9.6.7.
- 主要言語
- Haskell
- スター
- 28
- フォーク
- 34
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
haskell/network-uri のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
haskell/network-uri#93 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
haskell/network-uri#92 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
haskell/network-uri#90 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
haskell/network-uri#91 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
haskell/network-uri#81 · コメント 2 件 ·
haskell/network-uri の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 75/100
-
15-minutes 5-minutes algorithm any-language beginner-friendly c cpp csharp easy go good first issue hacktoberfest help wanted java javascript kotlin python rust swift typescript
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
Huerte/algo-solutions-python#260 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
IntersectMBO/cardano-ledger#6276 ·
メンテナーはふだん 1 日以内に返信