Fix use of snprintf() in IETF attributes to string conversion

This commit is contained in:
Martin Willi
2010-07-28 10:54:48 +02:00
parent 018543f3a8
commit c118559afe
@@ -159,7 +159,7 @@ static char* get_string(private_ietf_attributes_t *this)
enumerator = this->list->create_enumerator(this->list); enumerator = this->list->create_enumerator(this->list);
while (enumerator->enumerate(enumerator, &attr)) while (enumerator->enumerate(enumerator, &attr))
{ {
int written = 0; int written;
if (first) if (first)
{ {
@@ -168,8 +168,12 @@ static char* get_string(private_ietf_attributes_t *this)
else else
{ {
written = snprintf(pos, len, ", "); written = snprintf(pos, len, ", ");
if (written < 0 || written >= len)
{
break;
}
pos += written; pos += written;
len -= written; len -= written;
} }
switch (attr->type) switch (attr->type)
@@ -194,8 +198,13 @@ static char* get_string(private_ietf_attributes_t *this)
break; break;
} }
default: default:
written = 0;
break; break;
} }
if (written < 0 || written >= len)
{
break;
}
pos += written; pos += written;
len -= written; len -= written;
} }