Binary decoder returns incorrect data after short stream reads
まだ誰も着手していません。
- #57 @sylvesterkaczmarek による — マージされずにクローズ
評価
調査の方向性
BaseBinaryInputReader.checkBuffer() から開始し、提供された FixedBinaryDecoder と分割された ByteArrayInputStream の例で問題を再現します。バイト配列入力に対する directGetBytes() と MALException の処理を追跡します。分割された読み取りで要求されたバイトが蓄積され、不十分なストリームまたはバッファーが MALException をスローし、整数、文字列、バイトブロックに誤ったデータやパディングされたデータが含まれなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Java
- スター
- 18
- フォーク
- 11
- 平均マージ
- 4分
- マージ済み PR(30日)
- 1
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
esa/mo-services-java のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
esa/mo-services-java#58 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
esa/mo-services-java#37 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
esa/mo-services-java#1 ·
esa/mo-services-java の issue をすべて見る
似ている issue
-
enhancement good first issue
難易度 2/5 半日 初心者へのやさしさ 66/100
apache/fineract-consumer-facing#175 ·
メンテナーはふだん 1 日以内に返信
-
[BUG] 订单:会员凭订单号即可取消其他会员的待付款订单(取消接口不校验订单归属)対応中かも @dadiyang が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
macrozheng/mall#1016 ·
-
[Bug] The producer summary counts an unreported client version as a second version and warns about a version mix対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
apache/rocketmq-dashboard#6110 ·
メンテナーはふだん 4 日以内に返信
-
Feature:Resolution
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
intellij-elixir/intellij-elixir#4396 ·
メンテナーはふだん 1 日以内に返信
-
Python 3.15 support対応中かも @amnesiaof が今日担当しました。 オープンL: python L: python:uv
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
dependabot/dependabot-core#16524 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信