From a63a93e6f16368fb82d24b8efd8f8ff9aabf8013 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Mon, 16 Feb 2015 11:32:53 +0100
Subject: 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.
---
 lib/diameter/src/base/diameter_codec.erl | 16 ++++++++--------
 lib/diameter/src/base/diameter_types.erl |  2 +-
 2 files changed, 9 insertions(+), 9 deletions(-)

(limited to 'lib/diameter/src')

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.
 
diff --git a/lib/diameter/src/base/diameter_types.erl b/lib/diameter/src/base/diameter_types.erl
index ca3338be5f..442d90c98b 100644
--- a/lib/diameter/src/base/diameter_types.erl
+++ b/lib/diameter/src/base/diameter_types.erl
@@ -75,7 +75,7 @@
 %%      message indicating this error MUST include the offending AVPs
 %%      within a Failed-AVP AVP.
 %%
--define(INVALID_LENGTH(Bin), erlang:error({'DIAMETER', 5014, Bin})).
+-define(INVALID_LENGTH(Bitstr), erlang:error({'DIAMETER', 5014, Bitstr})).
 
 %% -------------------------------------------------------------------------
 %% 3588, 4.2.  Basic AVP Data Formats
-- 
cgit v1.2.3