Horms
2006-Mar-06 10:09 UTC
[Xen-devel] [PATCH] libxc: Verify Magic number when reading dump
libxc: Verify Magic number when reading dump The xen core files record a magic number, but when they are loaded it isn''t checked. This patch resolves this. Signed-Off-By: Horms <horms@verge.net.au> diff -r e3e7f3d900ae -r 213695460d71 tools/libxc/xc_core.c --- a/tools/libxc/xc_core.c Wed Mar 1 15:26:43 2006 +0900 +++ b/tools/libxc/xc_core.c Wed Mar 1 17:09:17 2006 +0900 @@ -61,7 +61,7 @@ xc_domain_dumpcore(int xc_handle, nr_pages = info.nr_pages; - header.xch_magic = 0xF00FEBED; + header.xch_magic = XC_CORE_MAGIC; header.xch_nr_vcpus = nr_vcpus; header.xch_nr_pages = nr_pages; header.xch_ctxt_offset = sizeof(struct xc_core_header); diff -r e3e7f3d900ae -r 213695460d71 tools/libxc/xc_ptrace_core.c --- a/tools/libxc/xc_ptrace_core.c Wed Mar 1 15:26:43 2006 +0900 +++ b/tools/libxc/xc_ptrace_core.c Wed Mar 1 17:09:17 2006 +0900 @@ -186,6 +186,13 @@ xc_waitdomain_core( if (read(domfd, &header, sizeof(header)) != sizeof(header)) return -1; + if (header.xch_magic != XC_CORE_MAGIC) { + printf("Magic number missmatch: 0x%08x (file) != " + " 0x%08x (code)\n", header.xch_magic, + XC_CORE_MAGIC); + return -1; + } + nr_pages = header.xch_nr_pages; nr_vcpus = header.xch_nr_vcpus; pages_offset = header.xch_pages_offset; diff -r e3e7f3d900ae -r 213695460d71 tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Wed Mar 1 15:26:43 2006 +0900 +++ b/tools/libxc/xenctrl.h Wed Mar 1 17:09:17 2006 +0900 @@ -92,6 +92,7 @@ typedef struct xc_core_header { unsigned int xch_pages_offset; } xc_core_header_t; +#define XC_CORE_MAGIC 0xF00FEBED long xc_ptrace_core( int xc_handle, _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel