diff options
-rw-r--r-- | security/integrity/ima/ima.h | 2 | ||||
-rw-r--r-- | security/integrity/ima/ima_fs.c | 2 | ||||
-rw-r--r-- | security/integrity/ima/ima_template_lib.c | 10 |
3 files changed, 10 insertions, 4 deletions
diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h index 0356e1d437ca..f79fa8be203c 100644 --- a/security/integrity/ima/ima.h +++ b/security/integrity/ima/ima.h | |||
@@ -27,7 +27,7 @@ | |||
27 | #include "../integrity.h" | 27 | #include "../integrity.h" |
28 | 28 | ||
29 | enum ima_show_type { IMA_SHOW_BINARY, IMA_SHOW_BINARY_NO_FIELD_LEN, | 29 | enum ima_show_type { IMA_SHOW_BINARY, IMA_SHOW_BINARY_NO_FIELD_LEN, |
30 | IMA_SHOW_ASCII }; | 30 | IMA_SHOW_BINARY_OLD_STRING_FMT, IMA_SHOW_ASCII }; |
31 | enum tpm_pcrs { TPM_PCR0 = 0, TPM_PCR8 = 8 }; | 31 | enum tpm_pcrs { TPM_PCR0 = 0, TPM_PCR8 = 8 }; |
32 | 32 | ||
33 | /* digest size for IMA, fits SHA1 or MD5 */ | 33 | /* digest size for IMA, fits SHA1 or MD5 */ |
diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c index db01125926bd..468a3ba3c539 100644 --- a/security/integrity/ima/ima_fs.c +++ b/security/integrity/ima/ima_fs.c | |||
@@ -160,6 +160,8 @@ static int ima_measurements_show(struct seq_file *m, void *v) | |||
160 | 160 | ||
161 | if (is_ima_template && strcmp(field->field_id, "d") == 0) | 161 | if (is_ima_template && strcmp(field->field_id, "d") == 0) |
162 | show = IMA_SHOW_BINARY_NO_FIELD_LEN; | 162 | show = IMA_SHOW_BINARY_NO_FIELD_LEN; |
163 | if (is_ima_template && strcmp(field->field_id, "n") == 0) | ||
164 | show = IMA_SHOW_BINARY_OLD_STRING_FMT; | ||
163 | field->field_show(m, show, &e->template_data[i]); | 165 | field->field_show(m, show, &e->template_data[i]); |
164 | } | 166 | } |
165 | return 0; | 167 | return 0; |
diff --git a/security/integrity/ima/ima_template_lib.c b/security/integrity/ima/ima_template_lib.c index 1683bbf289a4..e8592e7bfc21 100644 --- a/security/integrity/ima/ima_template_lib.c +++ b/security/integrity/ima/ima_template_lib.c | |||
@@ -109,13 +109,16 @@ static void ima_show_template_data_binary(struct seq_file *m, | |||
109 | enum data_formats datafmt, | 109 | enum data_formats datafmt, |
110 | struct ima_field_data *field_data) | 110 | struct ima_field_data *field_data) |
111 | { | 111 | { |
112 | u32 len = (show == IMA_SHOW_BINARY_OLD_STRING_FMT) ? | ||
113 | strlen(field_data->data) : field_data->len; | ||
114 | |||
112 | if (show != IMA_SHOW_BINARY_NO_FIELD_LEN) | 115 | if (show != IMA_SHOW_BINARY_NO_FIELD_LEN) |
113 | ima_putc(m, &field_data->len, sizeof(u32)); | 116 | ima_putc(m, &len, sizeof(len)); |
114 | 117 | ||
115 | if (!field_data->len) | 118 | if (!len) |
116 | return; | 119 | return; |
117 | 120 | ||
118 | ima_putc(m, field_data->data, field_data->len); | 121 | ima_putc(m, field_data->data, len); |
119 | } | 122 | } |
120 | 123 | ||
121 | static void ima_show_template_field_data(struct seq_file *m, | 124 | static void ima_show_template_field_data(struct seq_file *m, |
@@ -129,6 +132,7 @@ static void ima_show_template_field_data(struct seq_file *m, | |||
129 | break; | 132 | break; |
130 | case IMA_SHOW_BINARY: | 133 | case IMA_SHOW_BINARY: |
131 | case IMA_SHOW_BINARY_NO_FIELD_LEN: | 134 | case IMA_SHOW_BINARY_NO_FIELD_LEN: |
135 | case IMA_SHOW_BINARY_OLD_STRING_FMT: | ||
132 | ima_show_template_data_binary(m, show, datafmt, field_data); | 136 | ima_show_template_data_binary(m, show, datafmt, field_data); |
133 | break; | 137 | break; |
134 | default: | 138 | default: |