All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Sommer <AndiDog@web.de>
To: xen-devel@lists.xensource.com
Subject: libxc: Question on kernel image unzipping
Date: Thu, 09 Jul 2009 13:34:38 +0100	[thread overview]
Message-ID: <4A55E3DE.103@web.de> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 1340 bytes --]

Hi,

libxc contains the following function which is used when uncompressing 
zipped kernel images:

/* 
------------------------------------------------------------------------ */
/* read files, copy memory blocks, with transparent 
gunzip                  */

size_t xc_dom_check_gzip(void *blob, size_t ziplen)
{
    unsigned char *gzlen;
    size_t unziplen;

    if ( strncmp(blob, "\037\213", 2) )
        /* not gzipped */
        return 0;

    gzlen = blob + ziplen - 4;
    unziplen = gzlen[3] << 24 | gzlen[2] << 16 | gzlen[1] << 8 | gzlen[0];
    if ( (unziplen < 0) || (unziplen > (1024*1024*1024)) ) /* 1GB limit */
    {
        xc_dom_printf
            ("%s: size (zip %zd, unzip %zd) looks insane, skip gunzip\n",
             __FUNCTION__, ziplen, unziplen);
        return 0;
    }

    return unziplen + 16;
}


The returned unziplen+16 is used for the size of the destination buffer 
given to inflate. But it is then also written to the kernel_size 
attribute of the xc_dom_image struct. Hence kernel_size does not contain 
the uncompressed kernel size but that /plus/ 16.
So why do you always add 16 bytes to the *real* uncompressed kernel 
size?? That doesn't make much sense to me but I need to know it because 
it is related to my current work.

Thanks in advance.

P.S.: Anybody heard of "code documentation"? ;-)

[-- Attachment #1.2: Type: text/html, Size: 2241 bytes --]

[-- Attachment #2: Type: text/plain, Size: 138 bytes --]

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

             reply	other threads:[~2009-07-09 12:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-09 12:34 Andreas Sommer [this message]
2009-07-09 13:53 ` libxc: Question on kernel image unzipping Keir Fraser
2009-07-09 14:03   ` Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A55E3DE.103@web.de \
    --to=andidog@web.de \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.