WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH 1 of 4] Fix off-by-one preventing the last elfnot

To: Brendan Cully <brendan@xxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH 1 of 4] Fix off-by-one preventing the last elfnote from being read in xc.c
From: Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>
Date: Wed, 28 Feb 2007 09:06:49 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Wed, 28 Feb 2007 01:06:10 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <a7afd4050ce3201044ac.1172644700@xxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <a7afd4050ce3201044ac.1172644700@xxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Tue, 2007-02-27 at 22:38 -0800, Brendan Cully wrote:
> # HG changeset patch
> # User Brendan Cully <brendan@xxxxxxxxx>
> # Date 1172644688 28800
> # Node ID a7afd4050ce3201044ac8fec1b4469d758a0fc80
> # Parent  1c5e6239a8d0381fdbf56d4926f986d7f0ec07c0
> Fix off-by-one preventing the last elfnote from being read in xc.c.
> 
> Signed-off-by: Brendan Cully <brendan@xxxxxxxxx>
> 
> diff -r 1c5e6239a8d0 -r a7afd4050ce3 tools/python/xen/lowlevel/xc/xc.c
> --- a/tools/python/xen/lowlevel/xc/xc.c       Sun Feb 25 23:58:33 2007 -0600
> +++ b/tools/python/xen/lowlevel/xc/xc.c       Tue Feb 27 22:38:08 2007 -0800
> @@ -411,7 +411,7 @@ static PyObject *pyxc_linux_build(XcObje
>  
>      if (!(elfnote_dict = PyDict_New()))
>       goto out;
> -    for (i = 0; i < XEN_ELFNOTE_MAX; i++) {
> +    for (i = 0; i <= XEN_ELFNOTE_MAX; i++) {
>       switch (dom->parms.elf_notes[i].type) {
>       case XEN_ENT_NONE:
>           continue;

I think we should rename XEN_ELFNOTE_MAX to XEN_ELFNOTE_NR (and +1)
which would be clearer IMHO. The only other place it used is
"XEN_ELFNOTE_MAX + 1" anyway:

--- 
Change XEN_ELFNOTE_MAX to XEN_ELFNOTE_NR and make it the number of ELF
notes rather than the index of the last ELF note.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxxxxx>
diff -r 5217185f7588 tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Tue Feb 27 20:27:18 2007 +0000
+++ b/tools/python/xen/lowlevel/xc/xc.c Wed Feb 28 08:59:41 2007 +0000
@@ -411,7 +411,7 @@ static PyObject *pyxc_linux_build(XcObje
 
     if (!(elfnote_dict = PyDict_New()))
        goto out;
-    for (i = 0; i < XEN_ELFNOTE_MAX; i++) {
+    for (i = 0; i < XEN_ELFNOTE_NR; i++) {
        switch (dom->parms.elf_notes[i].type) {
        case XEN_ENT_NONE:
            continue;
diff -r 5217185f7588 xen/include/public/elfnote.h
--- a/xen/include/public/elfnote.h      Tue Feb 27 20:27:18 2007 +0000
+++ b/xen/include/public/elfnote.h      Wed Feb 28 09:03:30 2007 +0000
@@ -157,9 +157,9 @@
 #define XEN_ELFNOTE_L1_MFN_VALID  13
 
 /*
- * The number of the highest elfnote defined.
- */
-#define XEN_ELFNOTE_MAX XEN_ELFNOTE_L1_MFN_VALID
+ * The number of elfnotes defined.
+ */
+#define XEN_ELFNOTE_NR (XEN_ELFNOTE_L1_MFN_VALID + 1)
 
 /*
  * System information exported through crash notes.
diff -r 5217185f7588 xen/include/public/libelf.h
--- a/xen/include/public/libelf.h       Tue Feb 27 20:27:18 2007 +0000
+++ b/xen/include/public/libelf.h       Wed Feb 28 08:59:23 2007 +0000
@@ -195,7 +195,7 @@ struct elf_dom_parms {
     const char *guest_info;
     const void *elf_note_start;
     const void *elf_note_end;
-    struct xen_elfnote elf_notes[XEN_ELFNOTE_MAX + 1];
+    struct xen_elfnote elf_notes[XEN_ELFNOTE_NR];
   
     /* parsed */
     char guest_os[16];



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel