aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libimcv/ietf/ietf_attr_installed_packages.c15
-rw-r--r--src/libimcv/tcg/swid/tcg_swid_attr_tag_inv.c8
2 files changed, 9 insertions, 14 deletions
diff --git a/src/libimcv/ietf/ietf_attr_installed_packages.c b/src/libimcv/ietf/ietf_attr_installed_packages.c
index 155a7826c..39eea555a 100644
--- a/src/libimcv/ietf/ietf_attr_installed_packages.c
+++ b/src/libimcv/ietf/ietf_attr_installed_packages.c
@@ -203,7 +203,8 @@ METHOD(pa_tnc_attr_t, process, status_t,
while (this->count)
{
- if (!reader->read_data8(reader, &name))
+ if (!reader->read_data8(reader, &name) ||
+ !reader->read_data8(reader, &version))
{
goto end;
}
@@ -215,21 +216,15 @@ METHOD(pa_tnc_attr_t, process, status_t,
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);
@@ -326,7 +321,7 @@ METHOD(ietf_attr_installed_packages_t, clear_packages, void,
{
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);
}
diff --git a/src/libimcv/tcg/swid/tcg_swid_attr_tag_inv.c b/src/libimcv/tcg/swid/tcg_swid_attr_tag_inv.c
index ade0ca8a0..013482441 100644
--- a/src/libimcv/tcg/swid/tcg_swid_attr_tag_inv.c
+++ b/src/libimcv/tcg/swid/tcg_swid_attr_tag_inv.c
@@ -189,8 +189,8 @@ METHOD(pa_tnc_attr_t, process, status_t,
{
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;
}
@@ -230,8 +230,8 @@ METHOD(pa_tnc_attr_t, process, status_t,
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;
}