]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - pyderasn.py
Check if tag's long form used in expected way
[pyderasn.git] / pyderasn.py
index 15ca386b89894c7c4278fc2914f5ca9c3b44e199..505f3baafac8516084242256bb12f2633f02ace0 100755 (executable)
@@ -1201,7 +1201,7 @@ except ImportError:  # pragma: no cover
     def colored(what, *args, **kwargs):
         return what
 
-__version__ = "7.6"
+__version__ = "7.7"
 
 __all__ = (
     "agg_octet_string",
@@ -1558,6 +1558,10 @@ def tag_strip(data):
             raise DecodeError("unfinished tag")
         if indexbytes(data, i) & 0x80 == 0:
             break
+    if i == 1 and indexbytes(data, 1) < 0x1F:
+        raise DecodeError("unexpected long form")
+    if i > 1 and indexbytes(data, 1) & 0x7F == 0:
+        raise DecodeError("leading zero byte in tag value")
     i += 1
     return data[:i], i, data[i:]