|
@@ -123,6 +123,8 @@ int dccp_parse_options(struct sock *sk, struct dccp_request_sock *dreq,
|
|
case DCCPO_CHANGE_L ... DCCPO_CONFIRM_R:
|
|
case DCCPO_CHANGE_L ... DCCPO_CONFIRM_R:
|
|
if (pkt_type == DCCP_PKT_DATA) /* RFC 4340, 6 */
|
|
if (pkt_type == DCCP_PKT_DATA) /* RFC 4340, 6 */
|
|
break;
|
|
break;
|
|
|
|
+ if (len == 0)
|
|
|
|
+ goto out_invalid_option;
|
|
rc = dccp_feat_parse_options(sk, dreq, mandatory, opt,
|
|
rc = dccp_feat_parse_options(sk, dreq, mandatory, opt,
|
|
*value, value + 1, len - 1);
|
|
*value, value + 1, len - 1);
|
|
if (rc)
|
|
if (rc)
|