Fix a type cast bug
Subsystems (3)
PATCH 1/1 Fix a type cast bug
Vlad,
event_arg can never be the type of "struct sctp_chunk *" if the event_type is SCTP_EVENT_T_OTHER. This fix prevents from potential kernel crash by some misuse.
--- net/sctp/sm_sideeffect.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
net/sctp/sm_sideeffect.c +2 -1
@@ -1072,7 +1072,8 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,struct sctp_sackhdr sackh;int local_cork =0 ; -if (SCTP_EVENT_T_TIMEOUT != event_type) +if (SCTP_EVENT_T_TIMEOUT != event_type && +SCTP_EVENT_T_OTHER != event_type) chunk = (struct sctp_chunk *) event_arg;/* Note: This whole file is a huge candidate for rework.
Signature · 5 lines
1.5.3 -- Regards Gui Jianfeng
Gui
Quoted 16 lines · Gui Jianfeng
Vlad,
event_argcan never be the type of "structsctp_chunk*" if theevent_typeisSCTP_EVENT_T_OTHER. This fix prevents from potential kernel crash by some misuse.Signed-off-by Gui Jianfeng <[email protected]>--- net/sctp/sm_sideeffect.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)net/sctp/sm_sideeffect.c +0
-0
net/sctp/sm_sideeffect.c static int sctp_cmd_interpreter(sctp_event_t event_type, · line 1079
Quoted 9 lines
net/sctp/sm_sideeffect.c +2
-1@@ -1072,7 +1072,8 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,struct sctp_sackhdr sackh;int local_cork =0 ; -if (SCTP_EVENT_T_TIMEOUT != event_type) +if (SCTP_EVENT_T_TIMEOUT != event_type && +SCTP_EVENT_T_OTHER != event_type) chunk = (struct sctp_chunk *) event_arg;/* Note: This whole file is a huge candidate for rework.
This doesn't really fix the bug since the event_arg can be something else during primitive events and you would still have a typecast issue.
This code is rather ugly, but if we are going to clean it up, we need to do right and not band-aid to death.
As it is, NACK on this patch, since it doesn't solve the problem.
-vlad