diff options
author | Alexandre Snarskii <snar@snar.spb.ru> | 2021-08-23 13:44:08 +0300 |
---|---|---|
committer | Alexandre Snarskii <snar@snar.spb.ru> | 2021-08-23 13:44:08 +0300 |
commit | e61baae9fb990f6456f1f76474cf0851cb5d2a7d (patch) | |
tree | 228bbdc0e2e94d8da9274007c15bfee8b8d367f4 | |
parent | 715e883337236d4d7d14e5f1905cd458572e8c90 (diff) | |
download | erlang-e61baae9fb990f6456f1f76474cf0851cb5d2a7d.tar.gz |
Malformed DNS RRs shall result in parse errors
-rw-r--r-- | lib/kernel/src/inet_dns.erl | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/kernel/src/inet_dns.erl b/lib/kernel/src/inet_dns.erl index 7a9444ba74..8f63dfdf11 100644 --- a/lib/kernel/src/inet_dns.erl +++ b/lib/kernel/src/inet_dns.erl @@ -500,6 +500,13 @@ decode_data(<<Flags:8,Data0/binary>>, _, ?S_CAA, _) -> orelse throw(?DECODE_ERROR), Value = binary_to_list(Data1), {Flags,inet_db:tolower(Tag),Value}; +%% malformed known RR in inet domain +decode_data(_, in, T, _) when T == ?S_A; T == ?S_AAAA; T == ?S_WKS -> + throw(?DECODE_ERROR); +%% malormed known RR in any domain +decode_data(_, _, T, _) when T == ?S_HINFO; T == ?S_MX; T == ?S_SRV; + T == ?S_NAPTR; T == ?S_URI; T == ?S_CAA -> + throw(?DECODE_ERROR); %% sofar unknown or non standard decode_data(Data, _, _, _) -> Data. |