Skip to content
Snippets Groups Projects
Commit 71f68cc4 authored by Niels Möller's avatar Niels Möller
Browse files

Avoid cast between incompatible function types.

parent f3bbc422
Branches
Tags
No related merge requests found
2018-08-09 Niels Möller <nisse@lysator.liu.se> 2018-08-09 Niels Möller <nisse@lysator.liu.se>
* nettle-internal.c (des_set_key_wrapper, des3_set_key_wrapper)
(blowfish128_set_key_wrapper): Wrapper functions, to avoid cast
between incompatible function types (which gcc-8 warns about).
Wrappers are expected to compile to a single jmp instruction.
* des-compat.c (des_compat_des3_encrypt) * des-compat.c (des_compat_des3_encrypt)
(des_compat_des3_decrypt): Change length argument type to size_t. (des_compat_des3_decrypt): Change length argument type to size_t.
......
...@@ -46,14 +46,32 @@ ...@@ -46,14 +46,32 @@
#include "chacha.h" #include "chacha.h"
#include "salsa20.h" #include "salsa20.h"
/* NOTE: A bit ugly. Ignores weak keys, and pretends the set_key /* Wrapper functions discarding the return value. Needed for the
functions have no return value. */ ciphers with weak keys. */
static void
des_set_key_wrapper (void *ctx, const uint8_t *key)
{
des_set_key (ctx, key);
}
static void
des3_set_key_wrapper (void *ctx, const uint8_t *key)
{
des3_set_key (ctx, key);
}
static void
blowfish128_set_key_wrapper (void *ctx, const uint8_t *key)
{
blowfish128_set_key (ctx, key);
}
const struct nettle_cipher const struct nettle_cipher
nettle_des = { nettle_des = {
"des", sizeof(struct des_ctx), "des", sizeof(struct des_ctx),
DES_BLOCK_SIZE, DES_KEY_SIZE, DES_BLOCK_SIZE, DES_KEY_SIZE,
(nettle_set_key_func *) des_set_key, des_set_key_wrapper,
(nettle_set_key_func *) des_set_key, des_set_key_wrapper,
(nettle_cipher_func *) des_encrypt, (nettle_cipher_func *) des_encrypt,
(nettle_cipher_func *) des_decrypt (nettle_cipher_func *) des_decrypt
}; };
...@@ -62,20 +80,18 @@ const struct nettle_cipher ...@@ -62,20 +80,18 @@ const struct nettle_cipher
nettle_des3 = { nettle_des3 = {
"des3", sizeof(struct des3_ctx), "des3", sizeof(struct des3_ctx),
DES3_BLOCK_SIZE, DES3_KEY_SIZE, DES3_BLOCK_SIZE, DES3_KEY_SIZE,
(nettle_set_key_func *) des3_set_key, des3_set_key_wrapper,
(nettle_set_key_func *) des3_set_key, des3_set_key_wrapper,
(nettle_cipher_func *) des3_encrypt, (nettle_cipher_func *) des3_encrypt,
(nettle_cipher_func *) des3_decrypt (nettle_cipher_func *) des3_decrypt
}; };
/* NOTE: This is not as nice as one might think, as we pretend
blowfish_set_key has no return value. */
const struct nettle_cipher const struct nettle_cipher
nettle_blowfish128 = nettle_blowfish128 =
{ "blowfish128", sizeof(struct blowfish_ctx), { "blowfish128", sizeof(struct blowfish_ctx),
BLOWFISH_BLOCK_SIZE, BLOWFISH128_KEY_SIZE, BLOWFISH_BLOCK_SIZE, BLOWFISH128_KEY_SIZE,
(nettle_set_key_func *) blowfish128_set_key, blowfish128_set_key_wrapper,
(nettle_set_key_func *) blowfish128_set_key, blowfish128_set_key_wrapper,
(nettle_cipher_func *) blowfish_encrypt, (nettle_cipher_func *) blowfish_encrypt,
(nettle_cipher_func *) blowfish_decrypt (nettle_cipher_func *) blowfish_decrypt
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment