# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1195728045 0
# Node ID 7186e9611d55dc5ab6fd9c6a8bd6e5c674be8c10
# Parent 93d129d27f6998302874afba3367c9f28affa23e
libxc: Minor clean up of xc_core, and fix for -fstrict-overflow.
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
tools/libxc/xc_core.c | 16 +++++++++++-----
tools/libxc/xc_core_x86.c | 4 ++--
2 files changed, 13 insertions(+), 7 deletions(-)
diff -r 93d129d27f69 -r 7186e9611d55 tools/libxc/xc_core.c
--- a/tools/libxc/xc_core.c Thu Nov 22 10:33:10 2007 +0000
+++ b/tools/libxc/xc_core.c Thu Nov 22 10:40:45 2007 +0000
@@ -107,16 +107,22 @@ xc_core_strtab_get(struct xc_core_strtab
uint16_t ret = 0;
uint16_t len = strlen(name) + 1;
+ if ( strtab->current > UINT16_MAX - len )
+ {
+ PERROR("too long string table");
+ errno = E2BIG;
+ return ret;
+ }
+
if ( strtab->current + len > strtab->max )
{
char *tmp;
- if ( strtab->max * 2 < strtab->max )
+ if ( strtab->max > UINT16_MAX / 2 )
{
PERROR("too long string table");
errno = ENOMEM;
return ret;
}
-
tmp = realloc(strtab->strings, strtab->max * 2);
if ( tmp == NULL )
@@ -143,8 +149,8 @@ struct xc_core_section_headers {
Elf64_Shdr *shdrs;
};
-#define SHDR_INIT 16
-#define SHDR_INC 4U
+#define SHDR_INIT ((uint16_t)16)
+#define SHDR_INC ((uint16_t)4)
static struct xc_core_section_headers*
xc_core_shdr_init(void)
@@ -180,7 +186,7 @@ xc_core_shdr_get(struct xc_core_section_
if ( sheaders->num == sheaders->num_max )
{
Elf64_Shdr *shdrs;
- if ( sheaders->num_max + SHDR_INC < sheaders->num_max )
+ if ( sheaders->num_max > UINT16_MAX - SHDR_INC )
{
errno = E2BIG;
return NULL;
diff -r 93d129d27f69 -r 7186e9611d55 tools/libxc/xc_core_x86.c
--- a/tools/libxc/xc_core_x86.c Thu Nov 22 10:33:10 2007 +0000
+++ b/tools/libxc/xc_core_x86.c Thu Nov 22 10:40:45 2007 +0000
@@ -89,7 +89,7 @@ xc_core_arch_map_p2m(int xc_handle, xc_d
}
live_p2m_frame_list =
- xc_map_foreign_batch(xc_handle, dom, PROT_READ,
+ xc_map_foreign_pages(xc_handle, dom, PROT_READ,
live_p2m_frame_list_list,
P2M_FLL_ENTRIES);
@@ -99,7 +99,7 @@ xc_core_arch_map_p2m(int xc_handle, xc_d
goto out;
}
- *live_p2m = xc_map_foreign_batch(xc_handle, dom, PROT_READ,
+ *live_p2m = xc_map_foreign_pages(xc_handle, dom, PROT_READ,
live_p2m_frame_list,
P2M_FL_ENTRIES);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|