SCTP: Fix to encode PROTOCOL VIOLATION error cause correctly
authorWei Yongjun <yjwei@cn.fujitsu.com>
Tue, 21 Aug 2007 07:50:01 +0000 (15:50 +0800)
committerVlad Yasevich <vladislav.yasevich@hp.com>
Thu, 30 Aug 2007 17:50:48 +0000 (13:50 -0400)
commit00f1c2df2a1c4903f4daa1333bafeb6dcbc9591d
tree61e9da42f580f7f120bac8c7cbeab39f2a0311ab
parent8d614ade511fef11f992d6a73e538d33b3b81f12
SCTP: Fix to encode PROTOCOL VIOLATION error cause correctly

PROTOCOL VIOLATION error cause in ABORT is bad encode when make abort
chunk. When SCTP encode ABORT chunk with PROTOCOL VIOLATION error cause,
it just add the error messages to PROTOCOL VIOLATION error cause, the
rest four bytes(struct sctp_paramhdr) is just add to the chunk, not
change the length of error cause. This cause the ABORT chunk to be a bad
format. The chunk is like this:

ABORT chunk
  Chunk type: ABORT (6)
  Chunk flags: 0x00
  Chunk length: 72 (*1)
  Protocol violation cause
    Cause code: Protocol violation (0x000d)
    Cause length: 62 (*2)
    Cause information: 5468652063756D756C61746976652074736E2061636B2062...
    Cause padding: 0000
[Needless] 00030010
Chunk Length(*1) = 72 but Cause length(*2) only 62, not include the
extend 4 bytes.
((72 - sizeof(chunk_hdr)) = 68) != (62 +3) / 4 * 4

Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
include/net/sctp/sm.h
include/net/sctp/structs.h
net/sctp/sm_make_chunk.c
net/sctp/sm_statefuns.c