Re: [PATCH] staging: rtl8192u: r8192U_core: Fix for possible null pointer dereference

From: Rickard Strandqvist
Date: Thu Jan 29 2015 - 13:49:42 EST


2015-01-29 19:49 GMT+01:00 Rickard Strandqvist
<rickard_strandqvist@xxxxxxxxxxxxxxxxxx>:
> Fix a possible null pointer dereference, there is
> otherwise a risk of a possible null pointer dereference.
>
> This was found using a static code analysis program called cppcheck
>
> Signed-off-by: Rickard Strandqvist <rickard_strandqvist@xxxxxxxxxxxxxxxxxx>
> ---
> drivers/staging/rtl8192u/r8192U_core.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/rtl8192u/r8192U_core.c b/drivers/staging/rtl8192u/r8192U_core.c
> index e031a25..922fd8b 100644
> --- a/drivers/staging/rtl8192u/r8192U_core.c
> +++ b/drivers/staging/rtl8192u/r8192U_core.c
> @@ -963,6 +963,7 @@ static void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev,
> memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev));
> tcb_desc->bTxEnableFwCalcDur = 1;
> skb_push(skb, priv->ieee80211->tx_headroom);
> + // cppcheck-suppress unreadVariable CPPC_DONE
> ret = rtl8192_tx(dev, skb);
>
> spin_unlock_irqrestore(&priv->tx_lock, flags);
> @@ -2530,6 +2531,7 @@ static short rtl8192_init(struct net_device *dev)
> memset(priv->txqueue_to_outpipemap, 0, 9);
> #ifdef PIPE12
> {
> + // cppcheck-suppress unreadVariable CPPC_DONE
> int i = 0;
> u8 queuetopipe[] = {3, 2, 1, 0, 4, 8, 7, 6, 5};
> memcpy(priv->txqueue_to_outpipemap, queuetopipe, 9);
> @@ -3404,6 +3406,7 @@ void rtl8192_commit(struct net_device *dev)
> ieee80211_softmac_stop_protocol(priv->ieee80211);
>
> rtl8192_rtx_disable(dev);
> + // cppcheck-suppress unreadVariable CPPC_DONE
> reset_status = _rtl8192_up(dev);
>
> }
> @@ -3721,6 +3724,7 @@ static void rtl8192_process_phyinfo(struct r8192_priv *priv, u8 *buffer,
> unsigned int frag, seq;
> hdr = (struct ieee80211_hdr_3addr *)buffer;
> sc = le16_to_cpu(hdr->seq_ctl);
> + // cppcheck-suppress unreadVariable CPPC_DONE
> frag = WLAN_GET_SEQ_FRAG(sc);
> seq = WLAN_GET_SEQ_SEQ(sc);
> //cosa add 04292008 to record the sequence number
> @@ -4476,11 +4480,11 @@ static void query_rxdesc_status(struct sk_buff *skb,
>
> /* for debug 2008.5.29 */
>
> - //added by vivi, for MP, 20080108
> - stats->RxIs40MHzPacket = driver_info->BW;
> - if (stats->RxDrvInfoSize != 0)
> + if (driver_info && stats->RxDrvInfoSize != 0) {
> + //added by vivi, for MP, 20080108
> + stats->RxIs40MHzPacket = driver_info->BW;
> TranslateRxSignalStuff819xUsb(skb, stats, driver_info);
> -
> + }
> }
>
> static void rtl8192_rx_nomal(struct sk_buff *skb)
> @@ -4544,7 +4548,9 @@ static void rtl819xusb_process_received_packet(struct net_device *dev,
> // Get shifted bytes of Starting address of 802.11 header. 2006.09.28, by Emily
> //porting by amy 080508
> pstats->virtual_address += get_rxpacket_shiftbytes_819xusb(pstats);
> + // cppcheck-suppress unreadVariable CPPC_TODO
> frame = pstats->virtual_address;
> + // cppcheck-suppress unreadVariable CPPC_TODO
> frame_len = pstats->packetlength;
> #ifdef TODO // by amy about HCT
> if (!Adapter->bInHctTest)
> --
> 1.7.10.4
>


Hi

Sorry, for the cppcheck-suppress part.
New patch on the way.

Kind regards
Rickard Strandqvist
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/