aboutsummaryrefslogtreecommitdiff
path: root/pyasn1
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-09-20 22:18:12 +0200
committerIlya Etingof <etingof@gmail.com>2017-09-20 22:20:33 +0200
commit4e00eba76716cb4c546b1d81b1357927ca6e5a93 (patch)
treeddf680f8109bcca74c61abac192b880f271e30e7 /pyasn1
parentfc87382dd490810c6a4ba2cf803703b7f557dee2 (diff)
downloadpyasn1-4e00eba76716cb4c546b1d81b1357927ca6e5a93.tar.gz
fixed crash on exp tagged Sequence component encoding (#79)
Also EOO encoder call replaced with a constant outcome
Diffstat (limited to 'pyasn1')
-rw-r--r--pyasn1/codec/ber/encoder.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/pyasn1/codec/ber/encoder.py b/pyasn1/codec/ber/encoder.py
index ef12bb4..838d446 100644
--- a/pyasn1/codec/ber/encoder.py
+++ b/pyasn1/codec/ber/encoder.py
@@ -16,6 +16,10 @@ __all__ = ['encode']
class AbstractItemEncoder(object):
supportIndefLenMode = 1
+ # An outcome of otherwise legit call `encodeFun(eoo.endOfOctets)`
+ eooIntegerSubstrate = (0, 0)
+ eooOctetsSubstrate = ints2octs(eooIntegerSubstrate)
+
# noinspection PyMethodMayBeStatic
def encodeTag(self, singleTag, isConstructed):
tagClass, tagFormat, tagId = singleTag
@@ -88,11 +92,18 @@ class AbstractItemEncoder(object):
if isOctets:
substrate = ints2octs(header) + substrate
+
+ if not defModeOverride:
+ substrate += self.eooOctetsSubstrate
+
else:
- substrate = ints2octs(header + substrate)
+ substrate = header + substrate
+
+ if not defModeOverride:
+ substrate += self.eooIntegerSubstrate
- if not defModeOverride:
- substrate += encodeFun(eoo.endOfOctets, defMode=defModeOverride)
+ if not isOctets:
+ substrate = ints2octs(substrate)
return substrate