: '< 0' and '>= 0' test on unsigned
Subsystems (3)
PATCH 1/1 : '< 0' and '>= 0' test on unsigned
struct sk_buff is located at vi include/linux/skbuff.h +357:
maybe a different test is needed in x25_rx_call_request()?
This patch wasn't tested in any way. ------------------------------>8-------------8<--------------------------------- skb->len is an unsigned int, so the test in x25_rx_call_request() always evaluates to true.
len in x25_sendmsg() is unsigned as well. so -ERRORS returned by x25_output() are not noticed.
---
net/x25/af_x25.c +5 -6
@@ -951,10 +951,8 @@ int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb,/* * Incoming Call User Data. */ -if (skb->len >=0 ) { -skb_copy_from_linear_data (skb, makex25->calluserdata.cuddata, skb->len); - makex25->calluserdata.cudlength = skb->len; - } +skb_copy_from_linear_data (skb, makex25->calluserdata.cuddata, skb->len); + makex25->calluserdata.cudlength = skb->len; sk->sk_ack_backlog++;
@@ -1122,8 +1120,9 @@ static int x25_sendmsg(struct kiocb *iocb, struct socket *sock,if (msg->msg_flags &MSG_OOB )skb_queue_tail (&x25->interrupt_out_queue, skb);else { - len =x25_output (sk, skb); -if (len <0 ) + rc =x25_output (sk, skb); + len = rc; +if (rc <0 )kfree_skb (skb);else if (x25->qbitincl) len++;
From: Roel Kluin <[email protected]>
Date: Sun, 01 Mar 2009 23:00:57 +0100
Quoted 8 lines
struct
sk_buffis located at viinclude/linux/skbuff.h+357:
maybe a different test is needed inx25_rx_call_request()?This patch wasn't tested in any way. ------------------------------>8-------------8<---------------------------------
skb->lenis an unsigned int, so the test inx25_rx_call_request()always evaluates to true.
Quoted 4 lines
len in
x25_sendmsg()is unsigned as well. so-ERRORSreturned byx25_output()are not noticed.Signed-off-by Roel Kluin <[email protected]>
Applied to net-next-2.6, thanks.