diff options
author | Anders Svensson <[email protected]> | 2015-02-16 11:32:53 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2015-03-04 08:56:33 +0100 |
commit | a63a93e6f16368fb82d24b8efd8f8ff9aabf8013 (patch) | |
tree | 841a0c6b99971b5b7931dbc1e0a8d6bcb4da256f /lib/diameter/src/base/diameter_codec.erl | |
parent | ebe60da137dafe659d9577e1c6411bcc1ea431af (diff) | |
download | otp-a63a93e6f16368fb82d24b8efd8f8ff9aabf8013.tar.gz otp-a63a93e6f16368fb82d24b8efd8f8ff9aabf8013.tar.bz2 otp-a63a93e6f16368fb82d24b8efd8f8ff9aabf8013.zip |
Fix handling of length errors on Grouped AVPs
The decode of a Grouped AVP ignored the case that extracting component
AVPs with diameter_codec:collect_avps/1 returned a tuple, in the case of
a truncated AVP header.
Diffstat (limited to 'lib/diameter/src/base/diameter_codec.erl')
-rw-r--r-- | lib/diameter/src/base/diameter_codec.erl | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/diameter/src/base/diameter_codec.erl b/lib/diameter/src/base/diameter_codec.erl index a2b04bfd63..dd9039d7dc 100644 --- a/lib/diameter/src/base/diameter_codec.erl +++ b/lib/diameter/src/base/diameter_codec.erl @@ -561,14 +561,14 @@ split_data(Bin, Len) -> <<Data:Len/binary, _:Pad/binary, Rest/binary>> -> {Data, Rest}; _ -> - %% Header length points past the end of the message. As - %% stated in the 6733 text above, it's sufficient to - %% return a zero-filled minimal payload if this is a - %% request. Do this (in cases that we know the type) by - %% inducing a decode failure and letting the dictionary's - %% decode (in diameter_gen) deal with it. Here we don't - %% know type. If the type isn't known, then the decode - %% just strips the extra bit. + %% Header length points past the end of the message, or + %% doesn't span the header. As stated in the 6733 text + %% above, it's sufficient to return a zero-filled minimal + %% payload if this is a request. Do this (in cases that we + %% know the type) by inducing a decode failure and letting + %% the dictionary's decode (in diameter_gen) deal with it. + %% Here we don't know type. If the type isn't known, then + %% the decode just strips the extra bit. {<<0:1, Bin/binary>>, <<>>} end. |