Fixes possible buffer overflow when printing BGP attributes.
Thanks to Alexander V. Chernikov for the patch.
This commit is contained in:
parent
2918e61046
commit
6c4df70373
1 changed files with 4 additions and 2 deletions
|
@ -1576,16 +1576,18 @@ bgp_get_attr(eattr *a, byte *buf, int buflen)
|
||||||
{
|
{
|
||||||
unsigned int i = EA_ID(a->id);
|
unsigned int i = EA_ID(a->id);
|
||||||
struct attr_desc *d;
|
struct attr_desc *d;
|
||||||
|
int len;
|
||||||
|
|
||||||
if (ATTR_KNOWN(i))
|
if (ATTR_KNOWN(i))
|
||||||
{
|
{
|
||||||
d = &bgp_attr_table[i];
|
d = &bgp_attr_table[i];
|
||||||
buf += bsprintf(buf, "%s", d->name);
|
len = bsprintf(buf, "%s", d->name);
|
||||||
|
buf += len;
|
||||||
if (d->format)
|
if (d->format)
|
||||||
{
|
{
|
||||||
*buf++ = ':';
|
*buf++ = ':';
|
||||||
*buf++ = ' ';
|
*buf++ = ' ';
|
||||||
d->format(a, buf, buflen);
|
d->format(a, buf, buflen - len - 2);
|
||||||
return GA_FULL;
|
return GA_FULL;
|
||||||
}
|
}
|
||||||
return GA_NAME;
|
return GA_NAME;
|
||||||
|
|
Loading…
Reference in a new issue