protobufjs 8.7.2 → 8.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * protobuf.js v8.7.2 (c) 2016, daniel wirtz
3
- * compiled sat, 08 aug 2026 13:15:56 utc
2
+ * protobuf.js v8.8.1 (c) 2016, daniel wirtz
3
+ * compiled sun, 11 oct 2026 17:08:01 utc
4
4
  * licensed under the bsd-3-clause license
5
5
  * see: https://github.com/dcodeio/protobuf.js for details
6
6
  */
@@ -171,12 +171,32 @@ Reader.prototype.raw = function read_raw(start, end) {
171
171
  return this.buf.subarray(start, end);
172
172
  };
173
173
 
174
+ function readVarint32NearEnd(reader) {
175
+ // Safely read up to four bytes of a varint32 near the reader limit
176
+ var value = 0;
177
+ for (var i = 0; i < 4; ++i) {
178
+ if (reader.pos >= reader.len)
179
+ throw indexOutOfRange(reader);
180
+ var b = reader.buf[reader.pos++];
181
+ value = (value | (b & 127) << i * 7) >>> 0;
182
+ if (b < 128)
183
+ return value;
184
+ }
185
+ throw indexOutOfRange(reader);
186
+ }
187
+
174
188
  /**
175
189
  * Reads a varint as an unsigned 32 bit value.
176
190
  * @function
177
191
  * @returns {number} Value read
178
192
  */
179
193
  Reader.prototype.uint32 = function read_uint32() {
194
+ if (this.len - this.pos < 5) {
195
+ if (this.pos >= this.len)
196
+ throw indexOutOfRange(this);
197
+ if (this.buf[this.pos] >= 128)
198
+ return readVarint32NearEnd(this);
199
+ }
180
200
  var buf = this.buf,
181
201
  pos = this.pos,
182
202
  value = (buf[pos] & 127) >>> 0;
@@ -227,6 +247,12 @@ Reader.prototype.uint32 = function read_uint32() {
227
247
  * @returns {number} Tag read
228
248
  */
229
249
  Reader.prototype.tag = function read_tag() {
250
+ if (this.len - this.pos < 5) {
251
+ if (this.pos >= this.len)
252
+ throw indexOutOfRange(this);
253
+ if (this.buf[this.pos] >= 128)
254
+ return readVarint32NearEnd(this);
255
+ }
230
256
  var buf = this.buf,
231
257
  pos = this.pos,
232
258
  value = (buf[pos] & 127) >>> 0;
@@ -259,6 +285,45 @@ Reader.prototype.tag = function read_tag() {
259
285
  throw Error("invalid tag encoding");
260
286
  };
261
287
 
288
+ /**
289
+ * Reads a varint length prefix within signed 32 bit range.
290
+ * @returns {number} Length read
291
+ */
292
+ Reader.prototype.size = function read_size() {
293
+ if (this.len - this.pos < 5) {
294
+ if (this.pos >= this.len)
295
+ throw indexOutOfRange(this);
296
+ if (this.buf[this.pos] >= 128)
297
+ return readVarint32NearEnd(this);
298
+ }
299
+ var buf = this.buf,
300
+ pos = this.pos,
301
+ value = (buf[pos] & 127) >>> 0;
302
+ if (buf[pos++] < 128) {
303
+ this.pos = pos;
304
+ return value;
305
+ }
306
+ value = (value | (buf[pos] & 127) << 7) >>> 0;
307
+ if (buf[pos++] < 128) {
308
+ this.pos = pos;
309
+ return value;
310
+ }
311
+ value = (value | (buf[pos] & 127) << 14) >>> 0;
312
+ if (buf[pos++] < 128) {
313
+ this.pos = pos;
314
+ return value;
315
+ }
316
+ value = (value | (buf[pos] & 127) << 21) >>> 0;
317
+ if (buf[pos++] < 128) {
318
+ this.pos = pos;
319
+ return value;
320
+ }
321
+ this.pos = pos + 1;
322
+ if (buf[pos] > 7)
323
+ throw Error("invalid length encoding");
324
+ return (value | buf[pos] << 28) >>> 0;
325
+ };
326
+
262
327
  /**
263
328
  * Reads a varint as a signed 32 bit value.
264
329
  * @returns {number} Value read
@@ -472,7 +537,9 @@ Reader.prototype.double = function read_double() {
472
537
  */
473
538
  Reader.prototype.uint32s = function read_uint32s(array) {
474
539
  if (array === undefined) array = [];
475
- var end = this.uint32() + this.pos, buf = this.buf, pos = this.pos, value;
540
+ var end = this.size() + this.pos, len = this.len, buf = this.buf, pos = this.pos, value;
541
+ if (end > len) throw indexOutOfRange(this, end - this.pos);
542
+ this.len = end;
476
543
  while (pos < end) {
477
544
  value = buf[pos++];
478
545
  if (value < 128)
@@ -484,6 +551,8 @@ Reader.prototype.uint32s = function read_uint32s(array) {
484
551
  }
485
552
  }
486
553
  this.pos = pos;
554
+ if (pos !== end) throw RangeError("index out of range");
555
+ this.len = len;
487
556
  return array;
488
557
  };
489
558
 
@@ -494,7 +563,9 @@ Reader.prototype.uint32s = function read_uint32s(array) {
494
563
  */
495
564
  Reader.prototype.int32s = function read_int32s(array) {
496
565
  if (array === undefined) array = [];
497
- var end = this.uint32() + this.pos, buf = this.buf, pos = this.pos, value;
566
+ var end = this.size() + this.pos, len = this.len, buf = this.buf, pos = this.pos, value;
567
+ if (end > len) throw indexOutOfRange(this, end - this.pos);
568
+ this.len = end;
498
569
  while (pos < end) {
499
570
  value = buf[pos++];
500
571
  if (value < 128)
@@ -506,6 +577,8 @@ Reader.prototype.int32s = function read_int32s(array) {
506
577
  }
507
578
  }
508
579
  this.pos = pos;
580
+ if (pos !== end) throw RangeError("index out of range");
581
+ this.len = len;
509
582
  return array;
510
583
  };
511
584
 
@@ -516,9 +589,13 @@ Reader.prototype.int32s = function read_int32s(array) {
516
589
  */
517
590
  Reader.prototype.sint32s = function read_sint32s(array) {
518
591
  if (array === undefined) array = [];
519
- var end = this.uint32() + this.pos;
592
+ var end = this.size() + this.pos, len = this.len;
593
+ if (end > len) throw indexOutOfRange(this, end - this.pos);
594
+ this.len = end;
520
595
  while (this.pos < end)
521
596
  array.push(this.sint32());
597
+ if (this.pos !== end) throw RangeError("index out of range");
598
+ this.len = len;
522
599
  return array;
523
600
  };
524
601
 
@@ -529,7 +606,9 @@ Reader.prototype.sint32s = function read_sint32s(array) {
529
606
  */
530
607
  Reader.prototype.bools = function read_bools(array) {
531
608
  if (array === undefined) array = [];
532
- var end = this.uint32() + this.pos, buf = this.buf, pos = this.pos, value;
609
+ var end = this.size() + this.pos, len = this.len, buf = this.buf, pos = this.pos, value;
610
+ if (end > len) throw indexOutOfRange(this, end - this.pos);
611
+ this.len = end;
533
612
  while (pos < end) {
534
613
  value = buf[pos++];
535
614
  if (value < 128)
@@ -541,6 +620,8 @@ Reader.prototype.bools = function read_bools(array) {
541
620
  }
542
621
  }
543
622
  this.pos = pos;
623
+ if (pos !== end) throw RangeError("index out of range");
624
+ this.len = len;
544
625
  return array;
545
626
  };
546
627
 
@@ -563,7 +644,7 @@ function getLazyView(reader, count, threshold) {
563
644
  */
564
645
  Reader.prototype.fixed32s = function read_fixed32s(array) {
565
646
  if (array === undefined) array = [];
566
- var len = this.uint32(), end = this.pos + len;
647
+ var len = this.size(), end = this.pos + len;
567
648
  /* istanbul ignore if */
568
649
  if (end > this.len) throw indexOutOfRange(this, len);
569
650
  var count = len >>> 2, i = array.length, pos = this.pos;
@@ -587,7 +668,7 @@ Reader.prototype.fixed32s = function read_fixed32s(array) {
587
668
  */
588
669
  Reader.prototype.sfixed32s = function read_sfixed32s(array) {
589
670
  if (array === undefined) array = [];
590
- var len = this.uint32(), end = this.pos + len;
671
+ var len = this.size(), end = this.pos + len;
591
672
  /* istanbul ignore if */
592
673
  if (end > this.len) throw indexOutOfRange(this, len);
593
674
  var count = len >>> 2, i = array.length, pos = this.pos;
@@ -611,7 +692,7 @@ Reader.prototype.sfixed32s = function read_sfixed32s(array) {
611
692
  */
612
693
  Reader.prototype.floats = function read_floats(array) {
613
694
  if (array === undefined) array = [];
614
- var len = this.uint32(), end = this.pos + len;
695
+ var len = this.size(), end = this.pos + len;
615
696
  /* istanbul ignore if */
616
697
  if (end > this.len) throw indexOutOfRange(this, len);
617
698
  var count = len >>> 2, i = array.length, pos = this.pos;
@@ -635,7 +716,7 @@ Reader.prototype.floats = function read_floats(array) {
635
716
  */
636
717
  Reader.prototype.doubles = function read_doubles(array) {
637
718
  if (array === undefined) array = [];
638
- var len = this.uint32(), end = this.pos + len;
719
+ var len = this.size(), end = this.pos + len;
639
720
  /* istanbul ignore if */
640
721
  if (end > this.len) throw indexOutOfRange(this, len);
641
722
  var count = len >>> 3, i = array.length, pos = this.pos;
@@ -659,9 +740,13 @@ Reader.prototype.doubles = function read_doubles(array) {
659
740
  */
660
741
  Reader.prototype.uint64s = function read_uint64s(array) {
661
742
  if (array === undefined) array = [];
662
- var end = this.uint32() + this.pos;
743
+ var end = this.size() + this.pos, len = this.len;
744
+ if (end > len) throw indexOutOfRange(this, end - this.pos);
745
+ this.len = end;
663
746
  while (this.pos < end)
664
747
  array.push(this.uint64());
748
+ if (this.pos !== end) throw RangeError("index out of range");
749
+ this.len = len;
665
750
  return array;
666
751
  };
667
752
 
@@ -672,9 +757,13 @@ Reader.prototype.uint64s = function read_uint64s(array) {
672
757
  */
673
758
  Reader.prototype.int64s = function read_int64s(array) {
674
759
  if (array === undefined) array = [];
675
- var end = this.uint32() + this.pos;
760
+ var end = this.size() + this.pos, len = this.len;
761
+ if (end > len) throw indexOutOfRange(this, end - this.pos);
762
+ this.len = end;
676
763
  while (this.pos < end)
677
764
  array.push(this.int64());
765
+ if (this.pos !== end) throw RangeError("index out of range");
766
+ this.len = len;
678
767
  return array;
679
768
  };
680
769
 
@@ -685,9 +774,13 @@ Reader.prototype.int64s = function read_int64s(array) {
685
774
  */
686
775
  Reader.prototype.sint64s = function read_sint64s(array) {
687
776
  if (array === undefined) array = [];
688
- var end = this.uint32() + this.pos;
777
+ var end = this.size() + this.pos, len = this.len;
778
+ if (end > len) throw indexOutOfRange(this, end - this.pos);
779
+ this.len = end;
689
780
  while (this.pos < end)
690
781
  array.push(this.sint64());
782
+ if (this.pos !== end) throw RangeError("index out of range");
783
+ this.len = len;
691
784
  return array;
692
785
  };
693
786
 
@@ -698,7 +791,7 @@ Reader.prototype.sint64s = function read_sint64s(array) {
698
791
  */
699
792
  Reader.prototype.fixed64s = function read_fixed64s(array) {
700
793
  if (array === undefined) array = [];
701
- var len = this.uint32(), end = this.pos + len, i = array.length;
794
+ var len = this.size(), end = this.pos + len, i = array.length;
702
795
  /* istanbul ignore if */
703
796
  if (end > this.len) throw indexOutOfRange(this, len);
704
797
  var count = len >>> 3;
@@ -716,7 +809,7 @@ Reader.prototype.fixed64s = function read_fixed64s(array) {
716
809
  */
717
810
  Reader.prototype.sfixed64s = function read_sfixed64s(array) {
718
811
  if (array === undefined) array = [];
719
- var len = this.uint32(), end = this.pos + len, i = array.length;
812
+ var len = this.size(), end = this.pos + len, i = array.length;
720
813
  /* istanbul ignore if */
721
814
  if (end > this.len) throw indexOutOfRange(this, len);
722
815
  var count = len >>> 3;
@@ -732,7 +825,7 @@ Reader.prototype.sfixed64s = function read_sfixed64s(array) {
732
825
  * @returns {Uint8Array} Value read
733
826
  */
734
827
  Reader.prototype.bytes = function read_bytes() {
735
- var length = this.uint32(),
828
+ var length = this.size(),
736
829
  start = this.pos,
737
830
  end = this.pos + length;
738
831
 
@@ -749,7 +842,7 @@ Reader.prototype.bytes = function read_bytes() {
749
842
  * @returns {string} Value read
750
843
  */
751
844
  Reader.prototype.string = function read_string() {
752
- var length = this.uint32(),
845
+ var length = this.size(),
753
846
  start = this.pos,
754
847
  end = this.pos + length;
755
848
 
@@ -766,7 +859,7 @@ Reader.prototype.string = function read_string() {
766
859
  * @returns {string} Value read
767
860
  */
768
861
  Reader.prototype.stringVerify = function read_string_verify() {
769
- var length = this.uint32(),
862
+ var length = this.size(),
770
863
  start = this.pos,
771
864
  end = this.pos + length;
772
865
 
@@ -832,7 +925,7 @@ Reader.prototype.skipType = function(wireType, depth, fieldNumber) {
832
925
  this.skip(8);
833
926
  break;
834
927
  case 2:
835
- this.skip(this.uint32());
928
+ this.skip(this.size());
836
929
  break;
837
930
  case 3:
838
931
  while (true) {
@@ -947,7 +1040,7 @@ BufferReader.prototype.raw = function read_raw_buffer(start, end) {
947
1040
  * @override
948
1041
  */
949
1042
  BufferReader.prototype.string = function read_string_buffer() {
950
- var len = this.uint32(), // modifies pos
1043
+ var len = this.size(), // modifies pos
951
1044
  start = this.pos,
952
1045
  end = this.pos + len;
953
1046