From mboxrd@z Thu Jan 1 00:00:00 1970 From: Larry Finger Date: Fri, 07 Feb 2014 02:50:29 +0000 Subject: Re: [patch 1/2] staging: r8188eu: array overflow in rtw_mp_ioctl_hdl() Message-Id: <52F449F5.7050005@lwfinger.net> List-Id: References: <20140203223803.GA28874@elgon.mountain> In-Reply-To: <20140203223803.GA28874@elgon.mountain> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: kernel-janitors@vger.kernel.org On 02/03/2014 04:38 PM, Dan Carpenter wrote: > MAX_MP_IOCTL_SUBCODE (35) and mp_ioctl_hdl (32 elements) are no longer > in sync. It leads to a bogus pointer dereference. > > Signed-off-by: Dan Carpenter Acked-by: Larry Finger Larry > > diff --git a/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c b/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c > index dec992569476..684bc8107a48 100644 > --- a/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c > +++ b/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c > @@ -2500,7 +2500,7 @@ static int rtw_mp_ioctl_hdl(struct net_device *dev, struct iw_request_info *info > ("rtw_mp_ioctl_hdl: subcode [%d], len[%d], buffer_len[%d]\r\n", > poidparam->subcode, poidparam->len, len)); > > - if (poidparam->subcode >= MAX_MP_IOCTL_SUBCODE) { > + if (poidparam->subcode >= ARRAY_SIZE(mp_ioctl_hdl)) { > RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, ("no matching drvext subcodes\r\n")); > ret = -EINVAL; > goto _rtw_mp_ioctl_hdl_exit; >