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: <20121031104520.45391yrgl3tgaza8@www.dalek.fi>
Date:	Wed, 31 Oct 2012 10:45:20 +0200
From:	Jussi Kivilinna <jussi.kivilinna@...et.fi>
To:	Behan Webster <behanw@...verseincode.com>
Cc:	herbert@...dor.apana.org.au, davem@...emloft.net,
	linux-crypto@...r.kernel.org, linux-kernel@...r.kernel.org,
	Jan-Simon Möller <dl9pf@....de>,
	pageexec@...email.hu
Subject: Re: [PATCH 2/2] Remove VLAIS usage from crypto/testmgr.c

Quoting Behan Webster <behanw@...verseincode.com>:

> From: Jan-Simon Möller <dl9pf@....de>
>
> The use of variable length arrays in structs (VLAIS) in the Linux Kernel code
> precludes the use of compilers which don't implement VLAIS (for instance the
> Clang compiler). This patch instead allocates the appropriate amount  
> of memory
> using an char array.
>
> Patch from series at
> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120507/142707.html
> by PaX Team.
>
> Signed-off-by: Jan-Simon Möller <dl9pf@....de>
> Cc: pageexec@...email.hu
> Signed-off-by: Behan Webster <behanw@...verseincode.com>
> ---
>  crypto/testmgr.c |   23 +++++++++++++----------
>  1 file changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/crypto/testmgr.c b/crypto/testmgr.c
> index 941d75c..5b7b3a6 100644
> --- a/crypto/testmgr.c
> +++ b/crypto/testmgr.c
> @@ -1578,16 +1578,19 @@ static int alg_test_crc32c(const struct  
> alg_test_desc *desc,
>  	}
>
>  	do {
> -		struct {
> -			struct shash_desc shash;
> -			char ctx[crypto_shash_descsize(tfm)];
> -		} sdesc;
> -
> -		sdesc.shash.tfm = tfm;
> -		sdesc.shash.flags = 0;
> -
> -		*(u32 *)sdesc.ctx = le32_to_cpu(420553207);
> -		err = crypto_shash_final(&sdesc.shash, (u8 *)&val);
> +		char sdesc[sizeof(struct shash_desc)
> +			+ crypto_shash_descsize(tfm)
> +			+ CRYPTO_MINALIGN] CRYPTO_MINALIGN_ATTR;
> +		struct shash_desc *shash = (struct shash_desc *)sdesc;
> +		u32 *ctx = (u32 *)((unsigned long)(sdesc
> +			+ sizeof(struct shash_desc) + CRYPTO_MINALIGN - 1)
> +			& ~(CRYPTO_MINALIGN - 1));

I think you should use '(u32 *)shash_desc_ctx(shash)' instead of  
getting ctx pointer manually.

> +
> +		shash->tfm = tfm;
> +		shash->flags = 0;
> +
> +		*ctx = le32_to_cpu(420553207);
> +		err = crypto_shash_final(shash, (u8 *)&val);
>  		if (err) {
>  			printk(KERN_ERR "alg: crc32c: Operation failed for "
>  			       "%s: %d\n", driver, err);



--
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