getB2FileInfo throws IllegalArgumentException on a value with a stray percent sign
Mantenedores costumam responder em até 3 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
Direção de pesquisa
Comece em core/src/main/java/com/backblaze/b2/client/contentSources/B2Headers.java em getB2FileInfo (por volta da linha 216, onde o valor é passado para URLDecoder) e depois leia percentDecode em core/src/main/java/com/backblaze/b2/util/B2StringUtil.java. Compare com o tratamento em B2Headers.java por volta das linhas 130-136, que já lida com uma falha semelhante. Está concluído quando um valor como 100% não lança mais IllegalArgumentException e o valor bruto é mantido, verificado por um teste que cria B2HeadersImpl com X-Bz-Info-note: 100% e chama getB2FileInfo().
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Java
- Estrelas
- 103
- Forks
- 23
- Merge médio
- 5d 8h
- PRs com merge (30d)
- 3
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de Backblaze/b2-sdk-java
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Backblaze/b2-sdk-java#248 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Backblaze/b2-sdk-java#247 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Backblaze/b2-sdk-java#245 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Backblaze/b2-sdk-java#242 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Backblaze/b2-sdk-java#241 ·
Mantenedores costumam responder em até 3 dias
Todas as issues de Backblaze/b2-sdk-java
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
IETF-Hackathon/pqc-certificates#351 ·
Mantenedores costumam responder em até 2 dias
-
bug(core): skip_nodes.json is missing SELECT and PRE, causing Python and Java to insert separators into dropdown options and preformatted textTalvez já em andamento @Bhumit267 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
ExceptionThrowShouldUseContext: NullPointerException on a catch block inside an annotation typeTalvez já em andamento @Carbon14-48 assumiu hoje. Abertaapproved
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
checkstyle/checkstyle#22784 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia