diff options
Diffstat (limited to 'crypto/crypto_null.c')
| -rw-r--r-- | crypto/crypto_null.c | 28 | 
1 files changed, 15 insertions, 13 deletions
diff --git a/crypto/crypto_null.c b/crypto/crypto_null.c index f691d31fa9ee..3fcf6e887e87 100644 --- a/crypto/crypto_null.c +++ b/crypto/crypto_null.c @@ -21,6 +21,7 @@  #include <linux/mm.h>  #include <asm/scatterlist.h>  #include <linux/crypto.h> +#include <linux/string.h>  #define NULL_KEY_SIZE		0  #define NULL_BLOCK_SIZE		1 @@ -28,11 +29,13 @@  static int null_compress(void *ctx, const u8 *src, unsigned int slen,                           u8 *dst, unsigned int *dlen) -{ return 0; } - -static int null_decompress(void *ctx, const u8 *src, unsigned int slen, -                           u8 *dst, unsigned int *dlen) -{ return 0; } +{ +	if (slen > *dlen) +		return -EINVAL; +	memcpy(dst, src, slen); +	*dlen = slen; +	return 0; +}  static void null_init(void *ctx)  { } @@ -47,11 +50,10 @@ static int null_setkey(void *ctx, const u8 *key,                         unsigned int keylen, u32 *flags)  { return 0; } -static void null_encrypt(void *ctx, u8 *dst, const u8 *src) -{ } - -static void null_decrypt(void *ctx, u8 *dst, const u8 *src) -{ } +static void null_crypt(void *ctx, u8 *dst, const u8 *src) +{ +	memcpy(dst, src, NULL_BLOCK_SIZE); +}  static struct crypto_alg compress_null = {  	.cra_name		=	"compress_null", @@ -62,7 +64,7 @@ static struct crypto_alg compress_null = {  	.cra_list		=       LIST_HEAD_INIT(compress_null.cra_list),  	.cra_u			=	{ .compress = {  	.coa_compress 		=	null_compress, -	.coa_decompress		=	null_decompress } } +	.coa_decompress		=	null_compress } }  };  static struct crypto_alg digest_null = { @@ -90,8 +92,8 @@ static struct crypto_alg cipher_null = {  	.cia_min_keysize	=	NULL_KEY_SIZE,  	.cia_max_keysize	=	NULL_KEY_SIZE,  	.cia_setkey		= 	null_setkey, -	.cia_encrypt		=	null_encrypt, -	.cia_decrypt		=	null_decrypt } } +	.cia_encrypt		=	null_crypt, +	.cia_decrypt		=	null_crypt } }  };  MODULE_ALIAS("compress_null");  |