lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20070428162252.GZ11115@waste.org>
Date:	Sat, 28 Apr 2007 11:22:52 -0500
From:	Matt Mackall <mpm@...enic.com>
To:	Jeremy Fitzhardinge <jeremy@...p.org>
Cc:	Andrew Morton <akpm@...ux-foundation.org>, Andi Kleen <ak@...e.de>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] deflate inflate_dynamic too

On Fri, Apr 27, 2007 at 07:20:07PM -0700, Jeremy Fitzhardinge wrote:
> inflate_dynamic() has piggy stack usage too, so heap allocate it too.
> I'm not sure it actually gets used, but it shows up large in "make
> checkstack".

Might as well drop the PKZIP bit while we're at it. No one's ever
built a zimage with PKZIP.

> Signed-off-by: Jeremy Fitzhardinge <jeremy@...source.com>
> 
> ---
>  lib/inflate.c |   63 ++++++++++++++++++++++++++++++++++++++-------------------
>  1 file changed, 42 insertions(+), 21 deletions(-)
> 
> ===================================================================
> --- a/lib/inflate.c
> +++ b/lib/inflate.c
> @@ -798,15 +798,18 @@ STATIC int noinline INIT inflate_dynamic
>    unsigned nb;          /* number of bit length codes */
>    unsigned nl;          /* number of literal/length codes */
>    unsigned nd;          /* number of distance codes */
> -#ifdef PKZIP_BUG_WORKAROUND
> -  unsigned ll[288+32];  /* literal/length and distance code lengths */
> -#else
> -  unsigned ll[286+30];  /* literal/length and distance code lengths */
> -#endif
> +  unsigned *ll;         /* literal/length and distance code lengths */
>    register ulg b;       /* bit buffer */
>    register unsigned k;  /* number of bits in bit buffer */
> +  int ret;
>  
>  DEBG("<dyn");
> +
> +#ifdef PKZIP_BUG_WORKAROUND
> +  ll = malloc(sizeof(*ll) * (288+32));  /* literal/length and distance code lengths */
> +#else
> +  ll = malloc(sizeof(*ll) * (286+30));  /* literal/length and distance code lengths */
> +#endif
>  
>    /* make local bit buffer */
>    b = bb;
> @@ -828,7 +831,10 @@ DEBG("<dyn");
>  #else
>    if (nl > 286 || nd > 30)
>  #endif
> -    return 1;                   /* bad lengths */
> +  {
> +    ret = 1;             /* bad lengths */
> +    goto out;
> +  }
>  
>  DEBG("dyn1 ");
>  
> @@ -850,7 +856,8 @@ DEBG("dyn2 ");
>    {
>      if (i == 1)
>        huft_free(tl);
> -    return i;                   /* incomplete code set */
> +    ret = i;                   /* incomplete code set */
> +    goto out;
>    }
>  
>  DEBG("dyn3 ");
> @@ -872,8 +879,10 @@ DEBG("dyn3 ");
>        NEEDBITS(2)
>        j = 3 + ((unsigned)b & 3);
>        DUMPBITS(2)
> -      if ((unsigned)i + j > n)
> -        return 1;
> +      if ((unsigned)i + j > n) {
> +        ret = 1;
> +	goto out;

Heh. Anti-tab damage.

-- 
Mathematics is the supreme nostalgia of our time.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ