[PATCH] tpm: bios log parsing fixes
From: Seiji Munetoh <seiji.munetoh@gmail.com> Fix "tcpa_pc_event" misalignment between enum, strings and TCG PC spec and output of the event which contains a hash data. Signed-off-by: Seiji Munetoh <seiji.munetoh@gmail.com> Acked-by: Kylene Hall <kjhall@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
25a6df9525
commit
de66a695be
1 changed files with 25 additions and 16 deletions
|
@ -105,6 +105,12 @@ static const char* tcpa_event_type_strings[] = {
|
|||
"Non-Host Info"
|
||||
};
|
||||
|
||||
struct tcpa_pc_event {
|
||||
u32 event_id;
|
||||
u32 event_size;
|
||||
u8 event_data[0];
|
||||
};
|
||||
|
||||
enum tcpa_pc_event_ids {
|
||||
SMBIOS = 1,
|
||||
BIS_CERT,
|
||||
|
@ -114,14 +120,15 @@ enum tcpa_pc_event_ids {
|
|||
NVRAM,
|
||||
OPTION_ROM_EXEC,
|
||||
OPTION_ROM_CONFIG,
|
||||
OPTION_ROM_MICROCODE,
|
||||
OPTION_ROM_MICROCODE = 10,
|
||||
S_CRTM_VERSION,
|
||||
S_CRTM_CONTENTS,
|
||||
POST_CONTENTS,
|
||||
HOST_TABLE_OF_DEVICES,
|
||||
};
|
||||
|
||||
static const char* tcpa_pc_event_id_strings[] = {
|
||||
""
|
||||
"",
|
||||
"SMBIOS",
|
||||
"BIS Certificate",
|
||||
"POST BIOS ",
|
||||
|
@ -130,11 +137,12 @@ static const char* tcpa_pc_event_id_strings[] = {
|
|||
"NVRAM",
|
||||
"Option ROM",
|
||||
"Option ROM config",
|
||||
"Option ROM microcode",
|
||||
"",
|
||||
"Option ROM microcode ",
|
||||
"S-CRTM Version",
|
||||
"S-CRTM Contents",
|
||||
"S-CRTM POST Contents",
|
||||
"POST Contents",
|
||||
"S-CRTM Contents ",
|
||||
"POST Contents ",
|
||||
"Table of Devices",
|
||||
};
|
||||
|
||||
/* returns pointer to start of pos. entry of tcg log */
|
||||
|
@ -206,7 +214,7 @@ static int get_event_name(char *dest, struct tcpa_event *event,
|
|||
const char *name = "";
|
||||
char data[40] = "";
|
||||
int i, n_len = 0, d_len = 0;
|
||||
u32 event_id;
|
||||
struct tcpa_pc_event *pc_event;
|
||||
|
||||
switch(event->event_type) {
|
||||
case PREBOOT:
|
||||
|
@ -235,31 +243,32 @@ static int get_event_name(char *dest, struct tcpa_event *event,
|
|||
}
|
||||
break;
|
||||
case EVENT_TAG:
|
||||
event_id = be32_to_cpu(*((u32 *)event_entry));
|
||||
pc_event = (struct tcpa_pc_event *)event_entry;
|
||||
|
||||
/* ToDo Row data -> Base64 */
|
||||
|
||||
switch (event_id) {
|
||||
switch (pc_event->event_id) {
|
||||
case SMBIOS:
|
||||
case BIS_CERT:
|
||||
case CMOS:
|
||||
case NVRAM:
|
||||
case OPTION_ROM_EXEC:
|
||||
case OPTION_ROM_CONFIG:
|
||||
case OPTION_ROM_MICROCODE:
|
||||
case S_CRTM_VERSION:
|
||||
case S_CRTM_CONTENTS:
|
||||
case POST_CONTENTS:
|
||||
name = tcpa_pc_event_id_strings[event_id];
|
||||
name = tcpa_pc_event_id_strings[pc_event->event_id];
|
||||
n_len = strlen(name);
|
||||
break;
|
||||
/* hash data */
|
||||
case POST_BIOS_ROM:
|
||||
case ESCD:
|
||||
name = tcpa_pc_event_id_strings[event_id];
|
||||
case OPTION_ROM_MICROCODE:
|
||||
case S_CRTM_CONTENTS:
|
||||
case POST_CONTENTS:
|
||||
name = tcpa_pc_event_id_strings[pc_event->event_id];
|
||||
n_len = strlen(name);
|
||||
for (i = 0; i < 20; i++)
|
||||
d_len += sprintf(data, "%02x",
|
||||
event_entry[8 + i]);
|
||||
d_len += sprintf(&data[2*i], "%02x",
|
||||
pc_event->event_data[i]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue