getB2FileInfo throws IllegalArgumentException on a value with a stray percent sign
維護者通常 3 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
從 core/src/main/java/com/backblaze/b2/client/contentSources/B2Headers.java 中的 getB2FileInfo(約第 216 行,該值在此傳給 URLDecoder)開始,然後閱讀 core/src/main/java/com/backblaze/b2/util/B2StringUtil.java 中的 percentDecode。與 B2Headers.java 中第 130-136 行附近的處理方式進行比較,那裡已經處理了類似的失敗情況。當 100% 這樣的值不再拋出 IllegalArgumentException 並保留原始值時即完成。透過一個測試進行驗證:該測試使用 X-Bz-Info-note: 100% 建立 B2HeadersImpl 並呼叫 getB2FileInfo()。
由索引模型根據 Issue 內容生成。
描述
What happens
getB2FileInfo() percent-decodes each file info value with URLDecoder, which throws IllegalArgumentException for a malformed sequence such as 100%. Building a file version from download headers calls it, so the whole download fails for a file whose info value was stored raw by another client. getFileNameOrNull() in the same interface catches the same exception and returns null.
Where
core/src/main/java/com/backblaze/b2/client/contentSources/B2Headers.java:210-219 (getB2FileInfo, decode at :216), core/src/main/java/com/backblaze/b2/util/B2StringUtil.java:46-52 (percentDecode), called from core/src/main/java/com/backblaze/b2/client/B2StorageClientWebifierImpl.java:618. Compare B2Headers.java:130-136.
Why it matters
Impact: Availability (a download or metadata read fails), loud. Severity: High, because it needs a file info value stored with an unencoded percent sign by a client other than this SDK (unusual), and there is no workaround for that file besides a different client.
How to check
Found by reading the code, not reproduced. Read getB2FileInfo and percentDecode. A test could build B2HeadersImpl with X-Bz-Info-note: 100% and call getB2FileInfo(). Catching IllegalArgumentException and keeping the raw value would avoid the failure.
Version
Seen at v6.5.0. Present on the default branch: present.
- 主要語言
- Java
- 星號
- 103
- 分支
- 23
- 平均合併
- 5 天 8 小時
- 30 天內合併 PR
- 3
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
Backblaze/b2-sdk-java 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 78/100
Backblaze/b2-sdk-java#248 ·
維護者通常 3 天內回覆
-
難度 2/5 1-3 小時 新手友好度 74/100
Backblaze/b2-sdk-java#247 ·
維護者通常 3 天內回覆
-
難度 2/5 1-3 小時 新手友好度 78/100
Backblaze/b2-sdk-java#245 ·
維護者通常 3 天內回覆
-
難度 2/5 1-3 小時 新手友好度 72/100
Backblaze/b2-sdk-java#242 ·
維護者通常 3 天內回覆
-
難度 2/5 1-3 小時 新手友好度 72/100
Backblaze/b2-sdk-java#241 ·
維護者通常 3 天內回覆
查看 Backblaze/b2-sdk-java 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 82/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 72/100
IETF-Hackathon/pqc-certificates#351 ·
維護者通常 2 天內回覆
-
hermes-queue
難度 2/5 1 小時以內 新手友好度 72/100
chrisalunlloyd2-sudo/mindpalace#393 ·
維護者通常 1 天內回覆
-
core-types enhancement good first issue
難度 2/5 1-3 小時 新手友好度 85/100
higher-kinded-j/higher-kinded-j#1509 ·
維護者通常 1 天內回覆
-
bug(core): skip_nodes.json is missing SELECT and PRE, causing Python and Java to insert separators into dropdown options and preformatted text可能已有人在做 @Bhumit267 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 85/100
維護者通常 1 天內回覆