Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79279
b: refs/heads/master
c: 5d780cd
h: refs/heads/master
i:
  79277: 69a70f4
  79275: eb6e00d
  79271: 06225ff
  79263: 9452601
v: v3
  • Loading branch information
Robie Basak authored and David S. Miller committed Jan 28, 2008
1 parent 890cbca commit a5f40e1
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6d97b53e92af822890b87818c99820df47fc589b
refs/heads/master: 5d780cd6585d242d9592a479fe75a007fd75155d
12 changes: 12 additions & 0 deletions trunk/net/irda/ircomm/ircomm_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,18 @@ void ircomm_process_data(struct ircomm_cb *self, struct sk_buff *skb)

clen = skb->data[0];

/*
* Input validation check: a stir4200/mcp2150 combinations sometimes
* results in frames with clen > remaining packet size. These are
* illegal; if we throw away just this frame then it seems to carry on
* fine
*/
if (unlikely(skb->len < (clen + 1))) {
IRDA_DEBUG(2, "%s() throwing away illegal frame\n",
__FUNCTION__ );
return;
}

/*
* If there are any data hiding in the control channel, we must
* deliver it first. The side effect is that the control channel
Expand Down
13 changes: 13 additions & 0 deletions trunk/net/irda/irlap_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -1199,6 +1199,19 @@ static int irlap_state_nrm_p(struct irlap_cb *self, IRLAP_EVENT event,

switch (event) {
case RECV_I_RSP: /* Optimize for the common case */
if (unlikely(skb->len <= LAP_ADDR_HEADER + LAP_CTRL_HEADER)) {
/*
* Input validation check: a stir4200/mcp2150
* combination sometimes results in an empty i:rsp.
* This makes no sense; we can just ignore the frame
* and send an rr:cmd immediately. This happens before
* changing nr or ns so triggers a retransmit
*/
irlap_wait_min_turn_around(self, &self->qos_tx);
irlap_send_rr_frame(self, CMD_FRAME);
/* Keep state */
break;
}
/* FIXME: must check for remote_busy below */
#ifdef CONFIG_IRDA_FAST_RR
/*
Expand Down

0 comments on commit a5f40e1

Please sign in to comment.