Commit 3df5ec89 authored by Niels Möller's avatar Niels Möller
Browse files

Avoid cast between incompatible function types.

(cherry picked from commit 71f68cc4)
parent c2fa92f5
...@@ -7,6 +7,11 @@ ...@@ -7,6 +7,11 @@
2018-08-09 Niels Möller <nisse@lysator.liu.se> 2018-08-09 Niels Möller <nisse@lysator.liu.se>
Backported from master branch. Backported from master branch.
* 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
}; };
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment