diff options
author | Björn Gustavsson <[email protected]> | 2013-02-28 15:09:06 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2013-05-31 14:52:17 +0200 |
commit | 95af544936f9b6d7b8d03f3f49effaf5c314513d (patch) | |
tree | e77cf30cb449c76c4587dcc5e41697a7c3835add /lib/asn1/src/asn1rtt_uper.erl | |
parent | 902b51b8b43fe66fd4488c7fa10c05c3b9da59b4 (diff) | |
download | otp-95af544936f9b6d7b8d03f3f49effaf5c314513d.tar.gz otp-95af544936f9b6d7b8d03f3f49effaf5c314513d.tar.bz2 otp-95af544936f9b6d7b8d03f3f49effaf5c314513d.zip |
Correct encoding (decoding) of lengths less than the root range
Given the type:
S ::= IA5String (SIZE (5, ...))
attempting to encode (to PER/UPER) a string shorter than 5 characters
would fail. Similarly, attempting to decode such string in the BER
format would fail.
In the case of BER, we can do no range checks if the size constraint
is extensible.
Diffstat (limited to 'lib/asn1/src/asn1rtt_uper.erl')
-rw-r--r-- | lib/asn1/src/asn1rtt_uper.erl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/asn1/src/asn1rtt_uper.erl b/lib/asn1/src/asn1rtt_uper.erl index 3f362d227e..0a543ea6d7 100644 --- a/lib/asn1/src/asn1rtt_uper.erl +++ b/lib/asn1/src/asn1rtt_uper.erl @@ -355,7 +355,7 @@ encode_length({Lb,Ub}=Vr, Len) when Ub =< 65535, Lb >= 0 -> % constrained encode_length({Lb,_Ub}, Len) when is_integer(Lb), Lb >= 0 -> % Ub > 65535 encode_length(Len); encode_length({{Lb,Ub}=Vr,Ext},Len) - when Ub =< 65535, Lb >= 0, Len =< Ub, is_list(Ext) -> + when Ub =< 65535, Lb =< Len, Len =< Ub, is_list(Ext) -> %% constrained extensible [<<0:1>>,encode_constrained_number(Vr,Len)]; encode_length({{_Lb,_Ub},Ext}, Len) when is_list(Ext) -> |