diff options
author | Björn Gustavsson <[email protected]> | 2014-01-31 12:56:05 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2014-01-31 16:04:30 +0100 |
commit | 3cff534f38d9600ae6e02d8dc361c6e35826ab43 (patch) | |
tree | 37f32b43a41fc983106af7734a636bca540d39d3 /lib/asn1/src | |
parent | 479198f91ce37547047250b0a654300aab8ed5f8 (diff) | |
download | otp-3cff534f38d9600ae6e02d8dc361c6e35826ab43.tar.gz otp-3cff534f38d9600ae6e02d8dc361c6e35826ab43.tar.bz2 otp-3cff534f38d9600ae6e02d8dc361c6e35826ab43.zip |
asn1ct_check: Correct error handling for illegal OCTET STRING values
The value for an OCTET STRING must be specified as either a bstring
or an hstring. Everything else (including character strings) is
illegal.
This correction also removes the offending code that caused an
unmatched return warning from dialyzer.
Diffstat (limited to 'lib/asn1/src')
-rw-r--r-- | lib/asn1/src/asn1ct_check.erl | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/lib/asn1/src/asn1ct_check.erl b/lib/asn1/src/asn1ct_check.erl index f94f3b56bc..46ed94bea4 100644 --- a/lib/asn1/src/asn1ct_check.erl +++ b/lib/asn1/src/asn1ct_check.erl @@ -2464,7 +2464,7 @@ normalize_value(S0, Type, {'DEFAULT',Value}, NameList) -> {'BIT STRING',CType,_} -> normalize_bitstring(S,Value,CType); {'OCTET STRING',CType,_} -> - normalize_octetstring(S,Value,CType); + normalize_octetstring(S0, Value, CType); {'NULL',_CType,_} -> %%normalize_null(Value); 'NULL'; @@ -2612,20 +2612,9 @@ normalize_octetstring(S,Value,CType) -> fun normalize_octetstring/3,[]); {Name,String} when is_atom(Name) -> normalize_octetstring(S,String,CType); - List when is_list(List) -> - %% check if list elements are valid octet values - lists:map(fun([])-> ok; - (H)when H > 255-> - asn1ct:warning("not legal octet value ~p in OCTET STRING, ~p~n", - [H,List],S, - "not legal octet value ~p in OCTET STRING"); - (_)-> ok - end, List), - List; - Other -> - asn1ct:warning("unknown default value ~p~n",[Other],S, - "unknown default value"), - Value + _ -> + Item = S#state.value, + throw(asn1_error(S, Item, illegal_octet_string_value)) end. normalize_objectidentifier(S, Value) -> @@ -6811,6 +6800,8 @@ asn1_error(#state{mname=Where}, Item, Error) -> format_error({already_defined,Name,PrevLine}) -> io_lib:format("the name ~p has already been defined at line ~p", [Name,PrevLine]); +format_error(illegal_octet_string_value) -> + "expecting a bstring or an hstring as value for an OCTET STRING"; format_error({invalid_fields,Fields,Obj}) -> io_lib:format("invalid ~s in ~p", [format_fields(Fields),Obj]); format_error({missing_mandatory_fields,Fields,Obj}) -> |