while (this->count)
{
- if (!reader->read_data8(reader, &name))
+ if (!reader->read_data8(reader, &name) ||
+ !reader->read_data8(reader, &version))
{
goto end;
}
status = FAILED;
goto end;
}
- this->offset += 1 + name.len;
-
- if (!reader->read_data8(reader, &version))
- {
- goto end;
- }
pos = memchr(version.ptr, '\0', version.len);
if (pos)
{
DBG1(DBG_TNC, "nul termination in IETF installed package version");
- *offset = this->offset + 1 + (pos - version.ptr);
+ *offset = this->offset + 1 + name.len + 1 + (pos - version.ptr);
status = FAILED;
goto end;
}
- this->offset += 1 + version.len;
+ this->offset += this->value.len - reader->remaining(reader);
this->value = reader->peek(reader);
entry = malloc_thing(package_entry_t);
{
package_entry_t *entry;
- while (this->packages->remove_first(this->packages,(void**)&entry))
+ while (this->packages->remove_first(this->packages,(void**)&entry) == SUCCESS)
{
free_package_entry(entry);
}
{
if (this->length < TCG_SWID_TAG_INV_MIN_SIZE)
{
- DBG1(DBG_TNC, "insufficient data for %N", tcg_attr_names,
- this->type.type);
+ DBG1(DBG_TNC, "insufficient data for %N/%N", pen_names, PEN_TCG,
+ tcg_attr_names, this->type.type);
*offset = this->offset;
return FAILED;
}
if (this->length != this->offset)
{
- DBG1(DBG_TNC, "inconsistent length for %N", tcg_attr_names,
- this->type.type);
+ DBG1(DBG_TNC, "inconsistent length for %N/%N", pen_names, PEN_TCG,
+ tcg_attr_names, this->type.type);
*offset = this->offset;
status = FAILED;
}