Binary decoder returns incorrect data after short stream reads
Ninguém assumiu esta issue ainda.
- #57 de @sylvesterkaczmarek — fechado sem integrar
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 76/100
Direção de pesquisa
Comece em BaseBinaryInputReader.checkBuffer() e reproduza o problema com o exemplo fornecido de FixedBinaryDecoder e ByteArrayInputStream fragmentado. Rastreie directGetBytes() para a entrada de array de bytes e o tratamento de MALException. Está concluído quando as leituras fragmentadas acumulam os bytes solicitados, streams ou buffers insuficientes lançam MALException e inteiros, strings e blocos de bytes não contêm mais dados incorretos ou preenchidos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
On master 028751ad, BaseBinaryInputReader.checkBuffer() performs only one stream read before allowing decoding. A valid short read leaves part of the requested value unfilled, so the decoder can silently return incorrect data.
InputStream input = new ByteArrayInputStream(new byte[]{1, 35, 69, 103}) {
@Override
public synchronized int read(byte[] buffer, int offset, int length) {
return super.read(buffer, offset, Math.min(length, 1));
}
};
new FixedBinaryDecoder(input, null, false).decodeInteger();
Expected: 0x01234567 (19088743). Actual: 0x01000000 (16777216).
Strings and byte blocks also contain incorrect bytes after fragmented reads. With byte-array input, checkBuffer() does not verify the readable length, so directGetBytes() can silently pad truncated input with zeros or decode unused buffer capacity.
The reader should accumulate enough bytes before decoding and throw MALException when the stream or buffer cannot satisfy the requested length.
- Linguagem predominante
- Java
- Estrelas
- 17
- Forks
- 10
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
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 esa/mo-services-java
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
esa/mo-services-java#58 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
esa/mo-services-java#37 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
esa/mo-services-java#1 ·
Todas as issues de esa/mo-services-java
Issues semelhantes
-
react-native-compat: Android release build fails under R8 (JNA references java.awt.Component)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
WalletConnect/walletconnect-monorepo#7389 · 1 comentário ·
-
help wanted testing
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
elhajahmadj/offline-emergency-library#108 ·
Mantenedores costumam responder em até 1 dia
-
Add documentation for Transaction-bound OTP generationTalvez já em andamento @radimtrojek-rgb assumiu hoje. Abertadocumentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 60/100
wultra/powerauth-nextstep#86 ·
-
API `/api/dataverses/{identifier}/dataset/linkingDataverses?alreadyLinking=true` returns at most 1 collectionTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. AbertaType: Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
OpenLineage/OpenLineage#5138 ·
Mantenedores costumam responder em até 2 dias