Handle case where v6stat.zero_pos == 0 correctly.
Reported by: Kurt Roeckx <kurt@roeckx.be>, Tobias Ginzler <ginzler@fgan.de> (Debian bug #506111)
This commit is contained in:
parent
ae381fef5c
commit
1d4e879106
@ -739,17 +739,20 @@ static int ipv6_from_asc(unsigned char *v6, const char *in)
|
|||||||
|
|
||||||
/* Format result */
|
/* Format result */
|
||||||
|
|
||||||
/* Copy initial part */
|
|
||||||
if (v6stat.zero_pos > 0)
|
if (v6stat.zero_pos > 0)
|
||||||
|
{
|
||||||
|
/* Copy initial part */
|
||||||
memcpy(v6, v6stat.tmp, v6stat.zero_pos);
|
memcpy(v6, v6stat.tmp, v6stat.zero_pos);
|
||||||
/* Zero middle */
|
/* Zero middle */
|
||||||
if (v6stat.total != 16)
|
|
||||||
memset(v6 + v6stat.zero_pos, 0, 16 - v6stat.total);
|
memset(v6 + v6stat.zero_pos, 0, 16 - v6stat.total);
|
||||||
/* Copy final part */
|
/* Copy final part */
|
||||||
if (v6stat.total != v6stat.zero_pos)
|
if (v6stat.total != v6stat.zero_pos)
|
||||||
memcpy(v6 + v6stat.zero_pos + 16 - v6stat.total,
|
memcpy(v6 + v6stat.zero_pos + 16 - v6stat.total,
|
||||||
v6stat.tmp + v6stat.zero_pos,
|
v6stat.tmp + v6stat.zero_pos,
|
||||||
v6stat.total - v6stat.zero_pos);
|
v6stat.total - v6stat.zero_pos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
memcpy(v6, v6stat.tmp, 16);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user