summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2012-11-23 13:14:04 +0000
committerelie <elie>2012-11-23 13:14:04 +0000
commitcf0f53e2f4a1cb7b9ff3051f0a535177c507aada (patch)
tree9422da7fc27a8bf5eb044029506c2dca0cf4b88b
parent773673723501942cd72423b65c0be374a964a16e (diff)
downloadpyasn1-cf0f53e2f4a1cb7b9ff3051f0a535177c507aada.tar.gz
support empty-payload REAL values decoding
-rw-r--r--CHANGES5
-rw-r--r--pyasn1/codec/ber/decoder.py2
-rw-r--r--test/codec/ber/decoder.py5
3 files changed, 11 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 8276f70..1d99d0c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+Revision 0.1.5
+--------------
+
+- Fix to decoder to support empty-payload REAL values
+
Revision 0.1.4
--------------
diff --git a/pyasn1/codec/ber/decoder.py b/pyasn1/codec/ber/decoder.py
index f63ae8c..d721a4f 100644
--- a/pyasn1/codec/ber/decoder.py
+++ b/pyasn1/codec/ber/decoder.py
@@ -240,7 +240,7 @@ class RealDecoder(AbstractSimpleDecoder):
length, state, decodeFun, substrateFun):
head, tail = substrate[:length], substrate[length:]
if not head:
- raise error.SubstrateUnderrunError('Short substrate for Real')
+ return self._createComponent(asn1Spec, tagSet, 0.0), tail
fo = oct2int(head[0]); head = head[1:]
if fo & 0x40: # infinite value
value = fo & 0x01 and '-inf' or 'inf'
diff --git a/test/codec/ber/decoder.py b/test/codec/ber/decoder.py
index 04d6526..f56bb83 100644
--- a/test/codec/ber/decoder.py
+++ b/test/codec/ber/decoder.py
@@ -214,6 +214,11 @@ class RealDecoderTestCase(unittest.TestCase):
assert decoder.decode(
ints2octs((9, 1, 65))
) == (univ.Real('-inf'), null)
+
+ def testEmpty(self):
+ assert decoder.decode(
+ ints2octs((9, 0))
+ ) == (univ.Real(0.0), null)
class SequenceDecoderTestCase(unittest.TestCase):
def setUp(self):