@@ -51,6 +51,7 @@ def getvalue(self):
5151 OutOfData ,
5252 UnpackValueError ,
5353 PackValueError ,
54+ PackOverflowError ,
5455 ExtraData )
5556
5657from msgpack import ExtType
@@ -363,17 +364,17 @@ def _read_header(self, execute=EX_CONSTRUCT, write_bytes=None):
363364 obj = self ._fb_read (n , write_bytes )
364365 typ = TYPE_RAW
365366 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 )
367368 elif b & 0b11110000 == 0b10010000 :
368369 n = b & 0b00001111
369370 typ = TYPE_ARRAY
370371 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 )
372373 elif b & 0b11110000 == 0b10000000 :
373374 n = b & 0b00001111
374375 typ = TYPE_MAP
375376 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 )
377378 elif b == 0xc0 :
378379 obj = None
379380 elif b == 0xc2 :
@@ -384,37 +385,37 @@ def _read_header(self, execute=EX_CONSTRUCT, write_bytes=None):
384385 typ = TYPE_BIN
385386 n = struct .unpack ("B" , self ._fb_read (1 , write_bytes ))[0 ]
386387 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 ))
388389 obj = self ._fb_read (n , write_bytes )
389390 elif b == 0xc5 :
390391 typ = TYPE_BIN
391392 n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
392393 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 ))
394395 obj = self ._fb_read (n , write_bytes )
395396 elif b == 0xc6 :
396397 typ = TYPE_BIN
397398 n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
398399 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 ))
400401 obj = self ._fb_read (n , write_bytes )
401402 elif b == 0xc7 : # ext 8
402403 typ = TYPE_EXT
403404 L , n = struct .unpack ('Bb' , self ._fb_read (2 , write_bytes ))
404405 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 ))
406407 obj = self ._fb_read (L , write_bytes )
407408 elif b == 0xc8 : # ext 16
408409 typ = TYPE_EXT
409410 L , n = struct .unpack ('>Hb' , self ._fb_read (3 , write_bytes ))
410411 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 ))
412413 obj = self ._fb_read (L , write_bytes )
413414 elif b == 0xc9 : # ext 32
414415 typ = TYPE_EXT
415416 L , n = struct .unpack ('>Ib' , self ._fb_read (5 , write_bytes ))
416417 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 ))
418419 obj = self ._fb_read (L , write_bytes )
419420 elif b == 0xca :
420421 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):
439440 elif b == 0xd4 : # fixext 1
440441 typ = TYPE_EXT
441442 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 ))
443444 n , obj = struct .unpack ('b1s' , self ._fb_read (2 , write_bytes ))
444445 elif b == 0xd5 : # fixext 2
445446 typ = TYPE_EXT
446447 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 ))
448449 n , obj = struct .unpack ('b2s' , self ._fb_read (3 , write_bytes ))
449450 elif b == 0xd6 : # fixext 4
450451 typ = TYPE_EXT
451452 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 ))
453454 n , obj = struct .unpack ('b4s' , self ._fb_read (5 , write_bytes ))
454455 elif b == 0xd7 : # fixext 8
455456 typ = TYPE_EXT
456457 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 ))
458459 n , obj = struct .unpack ('b8s' , self ._fb_read (9 , write_bytes ))
459460 elif b == 0xd8 : # fixext 16
460461 typ = TYPE_EXT
461462 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 ))
463464 n , obj = struct .unpack ('b16s' , self ._fb_read (17 , write_bytes ))
464465 elif b == 0xd9 :
465466 typ = TYPE_RAW
466467 n = struct .unpack ("B" , self ._fb_read (1 , write_bytes ))[0 ]
467468 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 )
469470 obj = self ._fb_read (n , write_bytes )
470471 elif b == 0xda :
471472 typ = TYPE_RAW
472473 n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
473474 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 )
475476 obj = self ._fb_read (n , write_bytes )
476477 elif b == 0xdb :
477478 typ = TYPE_RAW
478479 n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
479480 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 )
481482 obj = self ._fb_read (n , write_bytes )
482483 elif b == 0xdc :
483484 n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
484485 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 )
486487 typ = TYPE_ARRAY
487488 elif b == 0xdd :
488489 n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
489490 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 )
491492 typ = TYPE_ARRAY
492493 elif b == 0xde :
493494 n = struct .unpack (">H" , self ._fb_read (2 , write_bytes ))[0 ]
494495 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 )
496497 typ = TYPE_MAP
497498 elif b == 0xdf :
498499 n = struct .unpack (">I" , self ._fb_read (4 , write_bytes ))[0 ]
499500 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 )
501502 typ = TYPE_MAP
502503 else :
503504 raise UnpackValueError ("Unknown header: 0x%x" % b )
@@ -683,7 +684,7 @@ def _pack(self, obj, nest_limit=DEFAULT_RECURSE_LIMIT,
683684 obj = self ._default (obj )
684685 default_used = True
685686 continue
686- raise PackValueError ("Integer value out of range" )
687+ raise PackOverflowError ("Integer value out of range" )
687688 if self ._use_bin_type and check (obj , (bytes , memoryview )):
688689 n = len (obj )
689690 if n <= 0xff :
@@ -778,7 +779,7 @@ def pack_map_pairs(self, pairs):
778779
779780 def pack_array_header (self , n ):
780781 if n >= 2 ** 32 :
781- raise ValueError
782+ raise PackValueError
782783 self ._fb_pack_array_header (n )
783784 ret = self ._buffer .getvalue ()
784785 if self ._autoreset :
@@ -789,7 +790,7 @@ def pack_array_header(self, n):
789790
790791 def pack_map_header (self , n ):
791792 if n >= 2 ** 32 :
792- raise ValueError
793+ raise PackValueError
793794 self ._fb_pack_map_header (n )
794795 ret = self ._buffer .getvalue ()
795796 if self ._autoreset :
@@ -807,7 +808,7 @@ def pack_ext_type(self, typecode, data):
807808 raise TypeError ("data must have bytes type" )
808809 L = len (data )
809810 if L > 0xffffffff :
810- raise ValueError ("Too large data" )
811+ raise PackValueError ("Too large data" )
811812 if L == 1 :
812813 self ._buffer .write (b'\xd4 ' )
813814 elif L == 2 :
0 commit comments