diff options
-rw-r--r-- | ConfigureChecks.cmake | 5 | ||||
-rw-r--r-- | config.h.cmake | 2 | ||||
-rw-r--r-- | include/libssh/chacha.h | 15 | ||||
-rw-r--r-- | include/libssh/poly1305.h | 5 |
4 files changed, 23 insertions, 4 deletions
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 2e1348f1..fd8ff136 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -327,6 +327,11 @@ int main(void) { }" HAVE_COMPILER__FUNCTION__) +check_c_source_compiles(" +void chacha_keysetup(struct chacha_ctx *x, const u_char *k, u_int kbits) + __attribute__((__bounded__(__minbytes__, 2, CHACHA_MINKEYLEN))); +int main(void) { return 0; }" HAVE_GCC_BOUNDED_ATTRIBUTE) + if (WITH_DEBUG_CRYPTO) set(DEBUG_CRYPTO 1) endif (WITH_DEBUG_CRYPTO) diff --git a/config.h.cmake b/config.h.cmake index e8786b1e..61d20acb 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -199,6 +199,8 @@ #cmakedefine HAVE_COMPILER__FUNC__ 1 #cmakedefine HAVE_COMPILER__FUNCTION__ 1 +#cmakedefine HAVE_GCC_BOUNDED_ATTRIBUTE 1 + /* Define to 1 if you want to enable GSSAPI */ #cmakedefine WITH_GSSAPI 1 diff --git a/include/libssh/chacha.h b/include/libssh/chacha.h index 84ff66a2..bac78c67 100644 --- a/include/libssh/chacha.h +++ b/include/libssh/chacha.h @@ -20,13 +20,22 @@ struct chacha_ctx { #define CHACHA_BLOCKLEN 64 void chacha_keysetup(struct chacha_ctx *x, const uint8_t *k, uint32_t kbits) - __attribute__((__bounded__(__minbytes__, 2, CHACHA_MINKEYLEN))); +#ifdef HAVE_GCC_BOUNDED_ATTRIBUTE + __attribute__((__bounded__(__minbytes__, 2, CHACHA_MINKEYLEN))) +#endif + ; void chacha_ivsetup(struct chacha_ctx *x, const uint8_t *iv, const uint8_t *ctr) +#ifdef HAVE_GCC_BOUNDED_ATTRIBUTE __attribute__((__bounded__(__minbytes__, 2, CHACHA_NONCELEN))) - __attribute__((__bounded__(__minbytes__, 3, CHACHA_CTRLEN))); + __attribute__((__bounded__(__minbytes__, 3, CHACHA_CTRLEN))) +#endif + ; void chacha_encrypt_bytes(struct chacha_ctx *x, const uint8_t *m, uint8_t *c, uint32_t bytes) +#ifdef HAVE_GCC_BOUNDED_ATTRIBUTE __attribute__((__bounded__(__buffer__, 2, 4))) - __attribute__((__bounded__(__buffer__, 3, 4))); + __attribute__((__bounded__(__buffer__, 3, 4))) +#endif + ; #endif /* CHACHA_H */ diff --git a/include/libssh/poly1305.h b/include/libssh/poly1305.h index 7126ecbf..9174bd17 100644 --- a/include/libssh/poly1305.h +++ b/include/libssh/poly1305.h @@ -11,8 +11,11 @@ void poly1305_auth(uint8_t out[POLY1305_TAGLEN], const uint8_t *m, size_t inlen, const uint8_t key[POLY1305_KEYLEN]) +#ifdef HAVE_GCC_BOUNDED_ATTRIBUTE __attribute__((__bounded__(__minbytes__, 1, POLY1305_TAGLEN))) __attribute__((__bounded__(__buffer__, 2, 3))) - __attribute__((__bounded__(__minbytes__, 4, POLY1305_KEYLEN))); + __attribute__((__bounded__(__minbytes__, 4, POLY1305_KEYLEN))) +#endif + ; #endif /* POLY1305_H */ |