|
@@ -120,6 +120,7 @@ static int ima_measurements_show(struct seq_file *m, void *v)
|
|
|
struct ima_template_entry *e;
|
|
|
int namelen;
|
|
|
u32 pcr = CONFIG_IMA_MEASURE_PCR_IDX;
|
|
|
+ bool is_ima_template = false;
|
|
|
int i;
|
|
|
|
|
|
/* get entry */
|
|
@@ -145,14 +146,21 @@ static int ima_measurements_show(struct seq_file *m, void *v)
|
|
|
ima_putc(m, e->template_desc->name, namelen);
|
|
|
|
|
|
/* 5th: template length (except for 'ima' template) */
|
|
|
- if (strcmp(e->template_desc->name, IMA_TEMPLATE_IMA_NAME) != 0)
|
|
|
+ if (strcmp(e->template_desc->name, IMA_TEMPLATE_IMA_NAME) == 0)
|
|
|
+ is_ima_template = true;
|
|
|
+
|
|
|
+ if (!is_ima_template)
|
|
|
ima_putc(m, &e->template_data_len,
|
|
|
sizeof(e->template_data_len));
|
|
|
|
|
|
/* 6th: template specific data */
|
|
|
for (i = 0; i < e->template_desc->num_fields; i++) {
|
|
|
- e->template_desc->fields[i]->field_show(m, IMA_SHOW_BINARY,
|
|
|
- &e->template_data[i]);
|
|
|
+ enum ima_show_type show = IMA_SHOW_BINARY;
|
|
|
+ struct ima_template_field *field = e->template_desc->fields[i];
|
|
|
+
|
|
|
+ if (is_ima_template && strcmp(field->field_id, "d") == 0)
|
|
|
+ show = IMA_SHOW_BINARY_NO_FIELD_LEN;
|
|
|
+ field->field_show(m, show, &e->template_data[i]);
|
|
|
}
|
|
|
return 0;
|
|
|
}
|