[maint] batman-adv: check return value of pskb_trim_rcsum()
Commit Message
Reported-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---
network-coding.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Comments
On 2013-05-07 13:25, Marek Lindner wrote:
> Reported-by: Sven Eckelmann <sven@narfation.org>
> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Acked-by: Martin Hundebøll <martin@hundeboll.net>
> ---
> network-coding.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/network-coding.c b/network-coding.c
> index f7c5430..e84629e 100644
> --- a/network-coding.c
> +++ b/network-coding.c
> @@ -1514,6 +1514,7 @@ batadv_nc_skb_decode_packet(struct batadv_priv *bat_priv, struct sk_buff *skb,
> struct ethhdr *ethhdr, ethhdr_tmp;
> uint8_t *orig_dest, ttl, ttvn;
> unsigned int coding_len;
> + int err;
>
> /* Save headers temporarily */
> memcpy(&coded_packet_tmp, skb->data, sizeof(coded_packet_tmp));
> @@ -1568,8 +1569,11 @@ batadv_nc_skb_decode_packet(struct batadv_priv *bat_priv, struct sk_buff *skb,
> coding_len);
>
> /* Resize decoded skb if decoded with larger packet */
> - if (nc_packet->skb->len > coding_len + h_size)
> - pskb_trim_rcsum(skb, coding_len + h_size);
> + if (nc_packet->skb->len > coding_len + h_size) {
> + err = pskb_trim_rcsum(skb, coding_len + h_size);
> + if (err)
> + return NULL;
> + }
>
> /* Create decoded unicast packet */
> unicast_packet = (struct batadv_unicast_packet *)skb->data;
>
On Wednesday, May 08, 2013 12:46:53 Martin Hundebøll wrote:
> On 2013-05-07 13:25, Marek Lindner wrote:
> > Reported-by: Sven Eckelmann <sven@narfation.org>
> > Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
>
> Acked-by: Martin Hundebøll <martin@hundeboll.net>
Applied in revision d22ebef.
Regards,
Marek
@@ -1514,6 +1514,7 @@ batadv_nc_skb_decode_packet(struct batadv_priv *bat_priv, struct sk_buff *skb,
struct ethhdr *ethhdr, ethhdr_tmp;
uint8_t *orig_dest, ttl, ttvn;
unsigned int coding_len;
+ int err;
/* Save headers temporarily */
memcpy(&coded_packet_tmp, skb->data, sizeof(coded_packet_tmp));
@@ -1568,8 +1569,11 @@ batadv_nc_skb_decode_packet(struct batadv_priv *bat_priv, struct sk_buff *skb,
coding_len);
/* Resize decoded skb if decoded with larger packet */
- if (nc_packet->skb->len > coding_len + h_size)
- pskb_trim_rcsum(skb, coding_len + h_size);
+ if (nc_packet->skb->len > coding_len + h_size) {
+ err = pskb_trim_rcsum(skb, coding_len + h_size);
+ if (err)
+ return NULL;
+ }
/* Create decoded unicast packet */
unicast_packet = (struct batadv_unicast_packet *)skb->data;