Coverity reported an Uninitialized pointer read. Upon further digging it appears that there is a code path where incoming packets can come in out of order, so this section of code tries to see if it can find the missed packets. As per FS-5202 there is a case where under heavy load the packet exists, and has most of the packet parsed, but still has a NULL pointer for the packet buffer. These two lines would at least help detect the edge case.

This commit is contained in:
William King 2013-05-18 17:34:16 -07:00
parent 45803e38e7
commit 291244c099
1 changed files with 5 additions and 1 deletions

View File

@ -74,6 +74,10 @@ static int decode_open_type(const uint8_t *buf, int limit, int *len, const uint8
if ((*len + octet_cnt) > limit)
return -1;
/* Was told the buffer was large enough, but in reality it didn't exist. FS-5202 */
if ( buf[*len] == NULL )
return -1;
*pbuf = &buf[*len];
*len += octet_cnt;
}
@ -159,7 +163,7 @@ int udptl_rx_packet(udptl_state_t *s, const uint8_t buf[], int len)
const uint8_t *data;
int msg_len;
int repaired[16];
const uint8_t *bufs[16];
const uint8_t *bufs[16] = {0};
int lengths[16];
int span;
int entries;