From 3295dff162e53deafe0ef850554959e00e09c025 Mon Sep 17 00:00:00 2001 From: Timo Stamm Date: Wed, 3 Apr 2024 20:05:29 +0200 Subject: [PATCH] Fix assertion for FIXED32 scalar type when parsing JSON (#771) --- packages/protobuf-bench/README.md | 2 +- packages/protobuf/src/binary-encoding.ts | 4 ++-- packages/protobuf/src/private/json-format.ts | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/protobuf-bench/README.md b/packages/protobuf-bench/README.md index ed2acd763..628feebb7 100644 --- a/packages/protobuf-bench/README.md +++ b/packages/protobuf-bench/README.md @@ -10,5 +10,5 @@ server would usually do. | code generator | bundle size | minified | compressed | |---------------------|------------------------:|-----------------------:|-------------------:| -| protobuf-es | 97,734 b | 41,763 b | 10,857 b | +| protobuf-es | 97,764 b | 41,777 b | 10,850 b | | protobuf-javascript | 394,384 b | 288,654 b | 45,122 b | diff --git a/packages/protobuf/src/binary-encoding.ts b/packages/protobuf/src/binary-encoding.ts index a277c58b0..683c9af28 100644 --- a/packages/protobuf/src/binary-encoding.ts +++ b/packages/protobuf/src/binary-encoding.ts @@ -95,12 +95,12 @@ export interface IBinaryReader { skip(wireType: WireType): Uint8Array; /** - * Read a `int32` field, a signed 32 bit varint. + * Read a `uint32` field, an unsigned 32 bit varint. */ uint32(): number; /** - * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint. + * Read a `int32` field, a signed 32 bit varint. */ int32(): number; diff --git a/packages/protobuf/src/private/json-format.ts b/packages/protobuf/src/private/json-format.ts index 0ee056f52..017ed98d3 100644 --- a/packages/protobuf/src/private/json-format.ts +++ b/packages/protobuf/src/private/json-format.ts @@ -526,7 +526,8 @@ function readScalar( if (json.trim().length === json.length) int32 = Number(json); } if (int32 === undefined) break; - if (type == ScalarType.UINT32) assertUInt32(int32); + if (type == ScalarType.UINT32 || type == ScalarType.FIXED32) + assertUInt32(int32); else assertInt32(int32); return int32;