diff options
author | Harald Welte <laforge@gnumonks.org> | 2012-01-24 22:58:01 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2012-01-24 22:58:01 +0100 |
commit | cbddf84dde7ca74a55cfd10da7d58d799080d651 (patch) | |
tree | 5fab9fc719cd30318fb15f7c9dffee9264a919a7 /src | |
parent | 5208c29a52efe42dc909d2ca993e34da59a6e6ef (diff) |
SCCP codec: fix parsing of CC message option part
Diffstat (limited to 'src')
-rw-r--r-- | src/sccp_codec.erl | 5 |
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]; |