@@ -51,6 +51,7 @@ def getvalue(self):
51
51
OutOfData ,
52
52
UnpackValueError ,
53
53
PackValueError ,
54
+ PackOverflowError ,
54
55
ExtraData )
55
56
56
57
from msgpack import ExtType
@@ -363,17 +364,17 @@ def _read_header(self, execute=EX_CONSTRUCT, write_bytes=None):
363
364
obj = self ._fb_read (n , write_bytes )
364
365
typ = TYPE_RAW
365
366
if n > self ._max_str_len :
366
- raise ValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
367
+ raise UnpackValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
367
368
elif b & 0b11110000 == 0b10010000 :
10000
368
369
n = b & 0b00001111
369
370
typ = TYPE_ARRAY
370
371
if n > self ._max_array_len :
371
- raise ValueError ("%s exceeds max_array_len(%s)" , n , self ._max_array_len )
372
+ raise UnpackValueError ("%s exceeds max_array_len(%s)" , n , self ._max_array_len )
372
373
elif b & 0b11110000 == 0b10000000 :
373
374
n = b & 0b00001111
374
375
typ = TYPE_MAP
375
376
if n > self ._max_map_len :
376
- raise ValueError ("%s exceeds max_map_len(%s)" , n , self ._max_map_len )
377
+ raise UnpackValueError ("%s exceeds max_map_len(%s)" , n , self ._max_map_len )
377
378
elif b == 0xc0 :
378
379
obj = None
379
380
elif b == 0xc2 :
@@ -384,37 +385,37 @@ def _read_header(self, execute=EX_CONSTRUCT, write_bytes=None):
384
385
typ = TYPE_BIN
385
386
n = struct .unpack ("B" , self ._fb_read (1 , write_bytes ))[0 ]
386
387
if n > self ._max_bin_len :
387
- raise ValueError ("%s exceeds max_bin_len(%s)" % (n , self ._max_bin_len ))
388
+ raise UnpackValueError ("%s exceeds max_bin_len(%s)" % (n , self ._max_bin_len ))
388
389
obj = self ._fb_read (n , write_bytes )
389
390
elif b == 0xc5 :
390
391
typ = TYPE_BIN
391
392
n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
392
393
if n > self ._max_bin_len :
393
- raise ValueError ("%s exceeds max_bin_len(%s)" % (n , self ._max_bin_len ))
394
+ raise UnpackValueError ("%s exceeds max_bin_len(%s)" % (n , self ._max_bin_len ))
394
395
obj = self ._fb_read (n , write_bytes )
395
396
elif b == 0xc6 :
396
397
typ = TYPE_BIN
397
398
n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
398
399
if n > self ._max_bin_len :
399
- raise ValueError ("%s exceeds max_bin_len(%s)" % (n , self ._max_bin_len ))
400
+ raise UnpackValueError ("%s exceeds max_bin_len(%s)" % (n , self ._max_bin_len ))
400
401
obj = self ._fb_read (n , write_bytes )
401
402
elif b == 0xc7 : # ext 8
402
403
typ = TYPE_EXT
403
404
L , n = struct .unpack ('Bb' , self ._fb_read (2 , write_bytes ))
404
405
if L > self ._max_ext_len :
405
- raise ValueError ("%s exceeds max_ext_len(%s)" % (L , self ._max_ext_len ))
406
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (L , self ._max_ext_len ))
406
407
obj = self ._fb_read (L , write_bytes )
407
408
elif b == 0xc8 : # ext 16
408
409
typ = TYPE_EXT
409
410
L , n = struct .unpack ('>Hb' , self ._fb_read (3 , write_bytes ))
410
411
if L > self ._max_ext_len :
411
- raise ValueError ("%s exceeds max_ext_len(%s)" % (L , self ._max_ext_len ))
412
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (L , self ._max_ext_len ))
412
413
obj = self ._fb_read (L , write_bytes )
413
414
elif b == 0xc9 : # ext 32
414
415
typ = TYPE_EXT
415
416
L , n = struct .unpack ('>Ib' , self ._fb_read (5 , write_bytes ))
416
417
if L > self ._max_ext_len :
417
- raise ValueError ("%s exceeds max_ext_len(%s)" % (L , self ._max_ext_len ))
418
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (L , self ._max_ext_len ))
418
419
obj = self ._fb_read (L , write_bytes )
419
420
elif b == 0xca :
420
421
obj = struct .unpack (">f" , self ._fb_read (4 , write_bytes ))[0 ]
@@ -439,65 +440,65 @@ def _read_header(self, execute=EX_CONSTRUCT, write_bytes=None):
439
440
elif b == 0xd4 : # fixext 1
440
441
typ = TYPE_EXT
441
442
if self ._max_ext_len < 1 :
442
- raise ValueError ("%s exceeds max_ext_len(%s)" % (1 , self ._max_ext_len ))
443
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (1 , self ._max_ext_len ))
443
444
n , obj = struct .unpack ('b1s' , self ._fb_read (2 , write_bytes ))
444
445
elif b == 0xd5 : # fixext 2
445
446
typ = TYPE_EXT
446
447
if self ._max_ext_len < 2 :
447
- raise ValueError ("%s exceeds max_ext_len(%s)" % (2 , self ._max_ext_len ))
448
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (2 , self ._max_ext_len ))
448
449
n , obj = struct .unpack ('b2s' , self ._fb_read (3 , write_bytes ))
449
450
elif b == 0xd6 : # fixext 4
450
451
typ = TYPE_EXT
451
452
if self ._max_ext_len < 4 :
452
- raise ValueError ("%s exceeds max_ext_len(%s)" % (4 , self ._max_ext_len ))
453
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (4 , self ._max_ext_len ))
453
454
n , obj = struct .unpack ('b4s' , self ._fb_read (5 , write_bytes ))
454
455
elif b == 0xd7 : # fixext 8
455
456
typ = TYPE_EXT
456
457
if self ._max_ext_len < 8 :
457
- raise ValueError ("%s exceeds max_ext_len(%s)" % (8 , self ._max_ext_len ))
458
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (8 , self ._max_ext_len ))
458
459
n , obj = struct .unpack ('b8s' , self ._fb_read (9 , write_bytes ))
459
460
elif b == 0xd8 : # fixext 16
460
461
typ = TYPE_EXT
461
462
if self ._max_ext_len < 16 :
462
- raise ValueError ("%s exceeds max_ext_len(%s)" % (16 , self ._max_ext_len ))
463
+ raise UnpackValueError ("%s exceeds max_ext_len(%s)" % (16 , self ._max_ext_len ))
463
464
n , obj = struct .unpack ('b16s' , self ._fb_read (17 , write_bytes ))
464
465
elif b == 0xd9 :
465
466
typ = TYPE_RAW
466
467
n = struct .unpack ("B" , self ._fb_read (1 , write_bytes ))[0 ]
467
468
if n > self ._max_str_len :
468
- raise ValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
469
+ raise UnpackValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
469
470
obj = self ._fb_read (n , write_bytes )
470
471
elif b == 0xda :
471
472
typ = TYPE_RAW
472
473
n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
473
474
if n > self ._max_str_len :
474
- raise ValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
475
+ raise UnpackValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
475
476
obj = self ._fb_read (n , write_bytes )
476
477
elif b == 0xdb :
477
478
typ = TYPE_RAW
478
479
n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
479
480
if n > self ._max_str_len :
480
- raise ValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
481
+ raise UnpackValueError ("%s exceeds max_str_len(%s)" , n , self ._max_str_len )
481
482
obj = self ._fb_read (n , write_bytes )
482
483
elif b == 0xdc :
483
484
n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
484
485
if n > self ._max_array_len :
485
- raise ValueError ("%s exceeds max_array_len(%s)" , n , self ._max_array_len )
486
+ raise UnpackValueError ("%s exceeds max_array_len(%s)" , n , self ._max_array_len )
486
487
typ = TYPE_ARRAY
487
488
elif b == 0xdd :
488
489
n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
489
490
if n > self ._max_array_len :
490
- raise ValueError ("%s exceeds max_array_len(%s)" , n , self ._max_array_len )
491
+ raise UnpackValueError ("%s exceeds max_array_len(%s)" , n , self ._max_array_len )
491
492
typ = TYPE_ARRAY
492
493
elif b == 0xde :
493
494
n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
494
495
if n > self ._max_map_len :
495
- raise ValueError ("%s exceeds max_map_len(%s)" , n , self ._max_map_len )
496
+ raise UnpackValueError ("%s exceeds max_map_len(%s)" , n , self ._max_map_len )
496
497
typ = TYPE_MAP
497
498
elif b == 0xdf :
498
499
n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
499
500
if n > self ._max_map_len :
500
- raise ValueError ("%s exceeds max_map_len(%s)" , n , self ._max_map_len )
501
+ raise UnpackValueError ("%s exceeds max_map_len(%s)" , n , self ._max_map_len )
501
502
typ = TYPE_MAP
502
503
else :
503
504
raise UnpackValueError ("Unknown header: 0x%x" % b )
@@ -683,7 +684,7 @@ def _pack(self, obj, nest_limit=DEFAULT_RECURSE_LIMIT,
683
684
obj = self ._default (obj )
684
685
default_used = True
685
686
continue
686
- raise PackValueError ("Integer value out of range" )
687
+ raise PackOverflowError ("Integer value out of range" )
687
688
if self ._use_bin_type and check (obj , (bytes , memoryview )):
688
689
n = len (obj )
689
690
if n <= 0xff :
@@ -778,7 +779,7 @@ def pack_map_pairs(self, pairs):
778
779
779
780
def pack_array_header (self , n ):
780
781
if n >= 2 ** 32 :
781
- raise ValueError
782
+ raise PackValueError
782
783
self ._fb_pack_array_header (n )
783
784
ret = self ._buffer .getvalue ()
784
785
if self ._autoreset :
@@ -789,7 +790,7 @@ def pack_array_header(self, n):
789
790
790
791
def pack_map_header (self , n ):
791
792
if n >= 2 ** 32 :
792
- raise ValueError
793
+ raise PackValueError
793
794
self ._fb_pack_map_header (n )
794
795
ret = self ._buffer .getvalue ()
795
796
if self ._autoreset :
@@ -807,7 +808,7 @@ def pack_ext_type(self, typecode, data):
807
808
raise TypeError ("data must have bytes type" )
808
809
L = len (data )
809
810
if L > 0xffffffff :
810
- raise ValueError ("Too large data" )
811
+ raise PackValueError ("Too large data" )
811
812
if L == 1 :
812
813
self ._buffer .write (b'\xd4 ' )
813
814
elif L == 2 :
0 commit comments