kernel: udp: fix read of uninitialized array
CID 156231 (#1 of 1): Uninitialized scalar variable (UNINIT)6. uninit_use_in_call: Using uninitialized element of array laddr when calling memcmp.
This commit is contained in:
@ -199,8 +199,9 @@ udpkick(void *x, Block *bp)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
ucb = (Udpcb*)c->ptcl;
|
ucb = (Udpcb*)c->ptcl;
|
||||||
switch(ucb->headers) {
|
|
||||||
case 7:
|
/* ucb->headers can only be 0 or 7 (see udpctl) */
|
||||||
|
if(ucb->headers) {
|
||||||
/* get user specified addresses */
|
/* get user specified addresses */
|
||||||
bp = pullupblock(bp, UDP_USEAD7);
|
bp = pullupblock(bp, UDP_USEAD7);
|
||||||
if(bp == nil)
|
if(bp == nil)
|
||||||
@ -215,19 +216,14 @@ udpkick(void *x, Block *bp)
|
|||||||
bp->rp += IPaddrlen; /* Ignore ifc address */
|
bp->rp += IPaddrlen; /* Ignore ifc address */
|
||||||
rport = nhgets(bp->rp);
|
rport = nhgets(bp->rp);
|
||||||
bp->rp += 2+2; /* Ignore local port */
|
bp->rp += 2+2; /* Ignore local port */
|
||||||
break;
|
|
||||||
default:
|
|
||||||
rport = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ucb->headers) {
|
|
||||||
if(memcmp(laddr, v4prefix, IPv4off) == 0
|
if(memcmp(laddr, v4prefix, IPv4off) == 0
|
||||||
|| ipcmp(laddr, IPnoaddr) == 0)
|
|| ipcmp(laddr, IPnoaddr) == 0)
|
||||||
version = 4;
|
version = 4;
|
||||||
else
|
else
|
||||||
version = 6;
|
version = 6;
|
||||||
} else {
|
} else {
|
||||||
|
rport = 0;
|
||||||
if( (memcmp(c->raddr, v4prefix, IPv4off) == 0 &&
|
if( (memcmp(c->raddr, v4prefix, IPv4off) == 0 &&
|
||||||
memcmp(c->laddr, v4prefix, IPv4off) == 0)
|
memcmp(c->laddr, v4prefix, IPv4off) == 0)
|
||||||
|| ipcmp(c->raddr, IPnoaddr) == 0)
|
|| ipcmp(c->raddr, IPnoaddr) == 0)
|
||||||
|
Reference in New Issue
Block a user