summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-01-24 22:58:01 +0100
committerHarald Welte <laforge@gnumonks.org>2012-01-24 22:58:01 +0100
commitcbddf84dde7ca74a55cfd10da7d58d799080d651 (patch)
tree5fab9fc719cd30318fb15f7c9dffee9264a919a7 /src
parent5208c29a52efe42dc909d2ca993e34da59a6e6ef (diff)
SCCP codec: fix parsing of CC message option part
Diffstat (limited to 'src')
-rw-r--r--src/sccp_codec.erl5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/sccp_codec.erl b/src/sccp_codec.erl
index 4cf0973..5a80e5d 100644
--- a/src/sccp_codec.erl
+++ b/src/sccp_codec.erl
@@ -145,9 +145,10 @@ parse_sccp_msgt(?SCCP_MSGT_CR, DataBin) ->
{called_party_addr, CalledPartyDec} | OptList];
parse_sccp_msgt(?SCCP_MSGT_CC, DataBin) ->
% first get the fixed part
- <<_:8, DstLocalRef:24/big, SrcLocalRef:24/big, PCOpt:4, ProtoClass:4, Remain/binary >> = DataBin,
+ <<_:8, DstLocalRef:24/big, SrcLocalRef:24/big, PCOpt:4, ProtoClass:4, PtrOpt:8, Remain/binary >> = DataBin,
% optional part
- OptList = parse_sccp_opts(Remain, []),
+ OptBin = binary:part(Remain, PtrOpt-1, byte_size(Remain)-(PtrOpt-1)),
+ OptList = parse_sccp_opts(OptBin, []),
% build parsed list of message
[{dst_local_ref, DstLocalRef},{src_local_ref, SrcLocalRef},
{protocol_class, {ProtoClass, PCOpt}} | OptList];