1c5bb4e
From 4e46085972d2367dff2345a73361c1c17b47ce73 Mon Sep 17 00:00:00 2001
e2ce63b
From: Ian Jackson <ian.jackson@eu.citrix.com>
1c5bb4e
Date: Fri, 14 Jun 2013 16:45:38 +0100
1c5bb4e
Subject: [PATCH 07/21] tools/xcutils/readnotes: adjust print_l1_mfn_valid_note
e2ce63b
e2ce63b
Use the new PTRVAL macros and elf_access_unsigned in
e2ce63b
print_l1_mfn_valid_note.
e2ce63b
e2ce63b
No functional change unless the input is wrong, or we are reading a
e2ce63b
file for a different endianness.
e2ce63b
e2ce63b
Separated out from the previous patch because this change does produce
e2ce63b
a difference in the generated code.
e2ce63b
1c5bb4e
This is part of the fix to a security issue, XSA-55.
1c5bb4e
e2ce63b
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
e2ce63b
Acked-by: Ian Campbell <ian.campbell@citrix.com>
e2ce63b
---
e2ce63b
 tools/xcutils/readnotes.c |   11 ++++++-----
e2ce63b
 1 files changed, 6 insertions(+), 5 deletions(-)
e2ce63b
e2ce63b
diff --git a/tools/xcutils/readnotes.c b/tools/xcutils/readnotes.c
e2ce63b
index 15e5514..af8ea12 100644
e2ce63b
--- a/tools/xcutils/readnotes.c
e2ce63b
+++ b/tools/xcutils/readnotes.c
e2ce63b
@@ -35,22 +35,23 @@ static void print_numeric_note(const char *prefix, struct elf_binary *elf,
e2ce63b
 }
e2ce63b
 
e2ce63b
 static void print_l1_mfn_valid_note(const char *prefix, struct elf_binary *elf,
e2ce63b
-				    const elf_note *note)
e2ce63b
+				    ELF_HANDLE_DECL(elf_note) note)
e2ce63b
 {
e2ce63b
 	int descsz = elf_uval(elf, note, descsz);
e2ce63b
-	const uint32_t *desc32 = elf_note_desc(elf, note);
e2ce63b
-	const uint64_t *desc64 = elf_note_desc(elf, note);
e2ce63b
+	ELF_PTRVAL_CONST_VOID desc = elf_note_desc(elf, note);
e2ce63b
 
e2ce63b
 	/* XXX should be able to cope with a list of values. */
e2ce63b
 	switch ( descsz / 2 )
e2ce63b
 	{
e2ce63b
 	case 8:
e2ce63b
 		printf("%s: mask=%#"PRIx64" value=%#"PRIx64"\n", prefix,
e2ce63b
-		       desc64[0], desc64[1]);
e2ce63b
+		       elf_access_unsigned(elf, desc, 0, 8),
e2ce63b
+		       elf_access_unsigned(elf, desc, 8, 8));
e2ce63b
 		break;
e2ce63b
 	case 4:
e2ce63b
 		printf("%s: mask=%#"PRIx32" value=%#"PRIx32"\n", prefix,
e2ce63b
-		       desc32[0],desc32[1]);
e2ce63b
+		       (uint32_t)elf_access_unsigned(elf, desc, 0, 4),
e2ce63b
+		       (uint32_t)elf_access_unsigned(elf, desc, 4, 4));
e2ce63b
 		break;
e2ce63b
 	}
e2ce63b
 
e2ce63b
-- 
e2ce63b
1.7.2.5
e2ce63b