If STCP is started while /proc/sys/net/sctp/auth_enable is set 0 and association is established between endpoints. Then if /proc/sys/net/sctp/auth_enable is set 1, a received AUTH chunk will cause kernel panic.

Test as following:
step 1: echo 0> /proc/sys/net/sctp/auth_enable
step 2:

  SCTP client                  SCTP server
     INIT          --------->
                   <---------   INIT-ACK
     COOKIE-ECHO   --------->
                   <---------   COOKIE-ACK
step 3:
   echo 1> /proc/sys/net/sctp/auth_enable
step 4:
  SCTP client                  SCTP server
      AUTH        ----------->  Kernel Panic


This patch fix this probleam to treat AUTH chunk as unknow chunk if peer has initialized with no auth capable.

Sorry for the delay.  Was on vacation without net access.

Wei Yongjun wrote:


This patch fix this probleam to treat AUTH chunk as unknow chunk if peer has initialized with no auth capable.

Signed-off-by: Wei Yongjun <[EMAIL PROTECTED]>

Acked-by: Vlad Yasevich <[EMAIL PROTECTED]>



Signed-off-by: Wei Yongjun <[EMAIL PROTECTED]>
Acked-by: Vlad Yasevich <[EMAIL PROTECTED]>

--- a/net/sctp/sm_statefuns.c   2008-01-21 00:03:25.000000000 -0500
+++ b/net/sctp/sm_statefuns.c   2008-01-21 05:14:08.000000000 -0500
@@ -3785,6 +3785,10 @@ sctp_disposition_t sctp_sf_eat_auth(cons
        struct sctp_chunk *err_chunk;
        sctp_ierror_t error;

+       /* Make sure that the peer has AUTH capable */
+       if (!asoc->peer.auth_capable)
+               return sctp_sf_unk_chunk(ep, asoc, type, arg, commands);
+
        if (!sctp_vtag_verify(chunk, asoc)) {
                sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_BAD_TAG,
                                SCTP_NULL());




--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to