diff options
author | elie <elie> | 2012-11-23 13:14:04 +0000 |
---|---|---|
committer | elie <elie> | 2012-11-23 13:14:04 +0000 |
commit | cf0f53e2f4a1cb7b9ff3051f0a535177c507aada (patch) | |
tree | 9422da7fc27a8bf5eb044029506c2dca0cf4b88b | |
parent | 773673723501942cd72423b65c0be374a964a16e (diff) | |
download | pyasn1-cf0f53e2f4a1cb7b9ff3051f0a535177c507aada.tar.gz |
support empty-payload REAL values decoding
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | pyasn1/codec/ber/decoder.py | 2 | ||||
-rw-r--r-- | test/codec/ber/decoder.py | 5 |
3 files changed, 11 insertions, 1 deletions
@@ -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): |