]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Remove CC_BOUNDED and use static array subscript for bounds enforcement
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 6 Jan 2019 02:48:20 +0000 (10:48 +0800)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 6 Jan 2019 02:48:20 +0000 (10:48 +0800)
Should work with any compiler supporting C99.

24 files changed:
configure
m4/ax_cc.m4
src/include/autoconf.h.in
src/include/build.h
src/lib/server/cf_file.c
src/lib/server/util.c
src/lib/server/util.h
src/lib/sim/base.h
src/lib/sim/comp128.c
src/lib/sim/comp128.h
src/lib/sim/fips186prf.c
src/lib/sim/milenage.h
src/lib/util/hmac_md5.c
src/lib/util/inet.c
src/lib/util/inet.h
src/lib/util/md4.c
src/lib/util/md4.h
src/lib/util/md5.c
src/lib/util/md5.h
src/lib/util/pair.h
src/lib/util/sha1.c
src/lib/util/sha1.h
src/protocols/dhcpv4/dhcpv4.h
src/protocols/dhcpv4/udp.c

index ca19724e5d6925bb93c6681b7c89c18ee08749b9..73fb4f6e4057a7887dda02db832308e1ce1e2da5 100755 (executable)
--- a/configure
+++ b/configure
@@ -2472,8 +2472,6 @@ ac_config_headers="$ac_config_headers src/include/autoconf.h"
 
 
 
-
-
 
 
 
@@ -13067,54 +13065,7 @@ $as_echo "#define HAVE_BUILTIN_BSWAP_64 1" >>confdefs.h
 
 fi
 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((__bounded__)) support in compiler" >&5
-$as_echo_n "checking for __attribute__((__bounded__)) support in compiler... " >&6; }
-if ${ax_cv_cc_bounded_attribute+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  CFLAGS_SAVED=$CFLAGS
-  CFLAGS="$CFLAGS -Werror"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        void test(char *buff) __attribute__ ((__bounded__ (__string__, 1, 1)));
-        int main(int argc, char **argv) {
-          if ((argc < 0) || !argv) return 1; /* -Werror=unused-parameter */
-          return 0;
-        }
-
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ax_cv_cc_bounded_attribute=yes
-else
-  ax_cv_cc_bounded_attribute=no
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  CFLAGS="$CFLAGS_SAVED"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cc_bounded_attribute" >&5
-$as_echo "$ax_cv_cc_bounded_attribute" >&6; }
-if test "x$ax_cv_cc_bounded_attribute" = "xyes"; then
-
-$as_echo "#define HAVE_ATTRIBUTE_BOUNDED 1" >>confdefs.h
-
-fi
-
+AX_CC_HAVE_BOUNDED_ATTRIBUTE
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _Generic support in compiler" >&5
index c26937388d87d054660bd96e24d8b2842fd656bf..e230e670d64cff50986a62e5cce3f19b3d41c365 100644 (file)
@@ -311,33 +311,6 @@ if test "x$ax_cv_cc_builtin_bswap64" = "xyes"; then
 fi
 ])
 
-dnl #
-dnl #  Check if we have __attribute__((__bounded__)) (usually only OpenBSD with GCC)
-dnl #
-AC_DEFUN([AX_CC_HAVE_BOUNDED_ATTRIBUTE],[
-AC_CACHE_CHECK([for __attribute__((__bounded__)) support in compiler], [ax_cv_cc_bounded_attribute],[
-  CFLAGS_SAVED=$CFLAGS
-  CFLAGS="$CFLAGS -Werror"
-  AC_RUN_IFELSE(
-    [
-      AC_LANG_SOURCE([
-        void test(char *buff) __attribute__ ((__bounded__ (__string__, 1, 1)));
-        int main(int argc, char **argv) {
-          if ((argc < 0) || !argv) return 1; /* -Werror=unused-parameter */
-          return 0;
-        }
-      ])
-    ],
-    [ax_cv_cc_bounded_attribute=yes],
-    [ax_cv_cc_bounded_attribute=no]
-  )
-  CFLAGS="$CFLAGS_SAVED"
-])
-if test "x$ax_cv_cc_bounded_attribute" = "xyes"; then
-  AC_DEFINE(HAVE_ATTRIBUTE_BOUNDED, 1, [Define if your compiler supports the __bounded__ attribute (usually OpenBSD gcc).])
-fi
-])
-
 dnl #
 dnl # Determine the number of system cores we have
 dnl #
index 336dac8eb70904bfe4e2083bcb1bf533623ad82a..139e61858fcdc29257df57fcc182331e79444673 100644 (file)
 /* Define to 1 if you have the <arpa/inet.h> header file. */
 #undef HAVE_ARPA_INET_H
 
-/* Define if your compiler supports the __bounded__ attribute (usually OpenBSD
-   gcc). */
-#undef HAVE_ATTRIBUTE_BOUNDED
-
 /* Define to 1 if you have the `bindat' function. */
 #undef HAVE_BINDAT
 
index 3152693bf849c6ab4ac100b32d966a5a8e050d16..6ec6180e2608043ccdcf25e7f70f97e6547a42b6 100644 (file)
@@ -99,12 +99,6 @@ extern "C" {
 #  define unlikely(_x) _x
 #endif
 
-#ifdef HAVE_ATTRIBUTE_BOUNDED
-#  define CC_BOUNDED(_x, ...) CC_HINT(__bounded__(_x, ## __VA_ARGS__))
-#else
-#  define CC_BOUNDED(...)
-#endif
-
 /*
  *     Macros to add pragmas
  */
index 8f8aecac946282a98295d32018ffd3041d88911d..74f8908315038f80284e6e7a7be56fb5d38301ef 100644 (file)
@@ -73,7 +73,8 @@ static const FR_NAME_NUMBER conf_property_name[] = {
        {  NULL , -1 }
 };
 
-static int cf_file_include(CONF_SECTION *cs, char const *filename_in, CONF_INCLUDE_TYPE file_type, char *buff[7], bool from_dir);
+static int cf_file_include(CONF_SECTION *cs, char const *filename_in, CONF_INCLUDE_TYPE file_type,
+                          char *buff[static 7], bool from_dir);
 
 /*
  *     Expand the variables in an input string.
index f84c1077f8627012ddc7ab94ba6ada6149303d77..f3ae13d9d363cdf0a4bc55ec5c2347b86e1e4840 100644 (file)
@@ -840,7 +840,7 @@ char const *rad_default_radacct_dir(void)
  * @param mode to convert.
  * @param out Where to write the string to, must be exactly 10 bytes long.
  */
-void rad_mode_to_str(char out[10], mode_t mode)
+void rad_mode_to_str(char out[static 10], mode_t mode)
 {
        static char const *rwx[] = {"---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"};
 
@@ -853,7 +853,7 @@ void rad_mode_to_str(char out[10], mode_t mode)
        out[9] = '\0';
 }
 
-void rad_mode_to_oct(char out[5], mode_t mode)
+void rad_mode_to_oct(char out[static 5], mode_t mode)
 {
        out[0] = '0' + ((mode >> 9) & 0x07);
        out[1] = '0' + ((mode >> 6) & 0x07);
index d6cbad141a955df1a48be4d716b1205c56d3a921..76182c39644a537da4bfb9bf368d181187f9a701 100644 (file)
@@ -57,8 +57,8 @@ char const    *rad_default_run_dir(void);
 char const     *rad_default_sbin_dir(void);
 char const     *rad_default_radacct_dir(void);
 
-void           rad_mode_to_str(char out[10], mode_t mode);
-void           rad_mode_to_oct(char out[5], mode_t mode);
+void           rad_mode_to_str(char out[static 10], mode_t mode);
+void           rad_mode_to_oct(char out[static 5], mode_t mode);
 int            rad_getpwuid(TALLOC_CTX *ctx, struct passwd **out, uid_t uid);
 int            rad_getpwnam(TALLOC_CTX *ctx, struct passwd **out, char const *name);
 int            rad_getgrgid(TALLOC_CTX *ctx, struct group **out, gid_t gid);
index d6b738158c63b1cf7ad7224ccb5a5c8041f27704..c06cd8b9e0a99cd9abe7dcc8cac366fd0cdd33d7 100644 (file)
@@ -288,9 +288,7 @@ int         fr_sim_vector_umts_from_attrs(eap_session_t *eap_session, VALUE_PAIR *vps,
 /*
  *     fips186prf.c
  */
-void           fr_sim_fips186_2prf(uint8_t out[160], uint8_t mk[20])
-                                   CC_BOUNDED(__size__, 2, 160, 160)
-                                   CC_BOUNDED(__size__, 1, 20, 20);
+void           fr_sim_fips186_2prf(uint8_t out[static 160], uint8_t mk[static 20]);
 
 /*
  *     xlat.c
index 47d66dec90f84291bae769093212d2311b6e9d0c..52b176f559a57eb45386b15ee35920b41a6be8c1 100644 (file)
@@ -238,7 +238,8 @@ static inline void _comp128_permutation(uint8_t *x, uint8_t *bits)
  * @param[in] ki       known only by the SIM and AuC (us in this case).
  * @param[in] rand     16 bytes of randomness.
  */
-void comp128v1(uint8_t sres[4], uint8_t kc[8], uint8_t const ki[16], uint8_t const rand[16])
+void comp128v1(uint8_t sres[static 4], uint8_t kc[static 8],
+              uint8_t const ki[static 16], uint8_t const rand[static 16])
 {
        int i;
        uint8_t x[32], bits[128];
@@ -332,7 +333,8 @@ static void _comp128v23(uint8_t *rand, uint8_t const *kxor)
  * @param[in] rand     16 bytes of randomness.
  * @param[in] v2       if true we use version comp128-2 else we use comp128-3.
  */
-void comp128v23(uint8_t sres[4], uint8_t kc[8], uint8_t const ki[16], uint8_t const rand[16], bool v2)
+void comp128v23(uint8_t sres[static 4], uint8_t kc[static 8],
+               uint8_t const ki[static 16], uint8_t const rand[static 16], bool v2)
 {
        uint8_t k_mix[16];
        uint8_t rand_mix[16];
index b7da8023be0b8c903d272797f5410bc83e62ff4e..698724d367f400baea821a87c1836802483906c2 100644 (file)
@@ -30,5 +30,5 @@
 #include <stdint.h>
 #include <stdbool.h>
 
-void comp128v1(uint8_t sres[4], uint8_t kc[8], uint8_t const ki[16], uint8_t const rand[16]);
-void comp128v23(uint8_t sres[4], uint8_t kc[8], uint8_t const ki[16], uint8_t const rand[16], bool v2);
+void comp128v1(uint8_t sres[static 4], uint8_t kc[static 8], uint8_t const ki[static 16], uint8_t const rand[static 16]);
+void comp128v23(uint8_t sres[static 4], uint8_t kc[static 8], uint8_t const ki[static 16], uint8_t const rand[static 16], bool v2);
index 6115419de8e23a35a23a34f3ee69e4d19bf0f069..3cca1a4beba4fef750b4683da70abd3bf5a4a438 100644 (file)
@@ -88,7 +88,7 @@ static void onesixty_add_mod(onesixty *sum, onesixty *a, onesixty *b)
  * @param[in] mk       The master key we use to derive all other keying
  *                     data.
  */
-void fr_sim_fips186_2prf(uint8_t out[160], uint8_t mk[20])
+void fr_sim_fips186_2prf(uint8_t out[static 160], uint8_t mk[static 20])
 {
        fr_sha1_ctx     context;
        int             j;
index 64689703599deddad055994ae9631454f494af96..e6aa9c208b7b6db7e4f97f75d434d4c0d2cd6d0b 100644 (file)
@@ -55,7 +55,7 @@
  * @param[in] i                integer value.
  * @return pointer to out.
  */
-static inline uint8_t *uint48_to_buff(uint8_t out[6], uint64_t i)
+static inline uint8_t *uint48_to_buff(uint8_t out[static 6], uint64_t i)
 {
        out[0] = (i & 0xff0000000000) >> 40;
        out[1] = (i & 0x00ff00000000) >> 32;
index 1d468da05ac250ec36a1131982ec167c04230557..789f2094024fdbbadf6cdbdcbadb22abed4ce0e0 100644 (file)
@@ -47,13 +47,13 @@ static void _hmac_md5_ctx_free_on_exit(void *arg)
 /** Calculate HMAC using OpenSSL's MD5 implementation
  *
  * @param digest Caller digest to be filled in.
- * @param text Pointer to data stream.
- * @param text_len length of data stream.
+ * @param in Pointer to data stream.
+ * @param inlen length of data stream.
  * @param key Pointer to authentication key.
  * @param key_len Length of authentication key.
  *
  */
-void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *text, size_t text_len,
+void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *in, size_t inlen,
                 uint8_t const *key, size_t key_len)
 {
        HMAC_CTX *ctx;
@@ -72,7 +72,7 @@ void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *text, size_t
 #endif /* EVP_MD_CTX_FLAG_NON_FIPS_ALLOW */
 
        HMAC_Init_ex(ctx, key, key_len, EVP_md5(), NULL);
-       HMAC_Update(ctx, text, text_len);
+       HMAC_Update(ctx, in, inlen);
        HMAC_Final(ctx, digest, NULL);
        HMAC_CTX_reset(ctx);
 }
@@ -80,16 +80,16 @@ void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *text, size_t
 /** Calculate HMAC using internal MD5 implementation
  *
  * @param digest Caller digest to be filled in.
- * @param text Pointer to data stream.
- * @param text_len length of data stream.
+ * @param in Pointer to data stream.
+ * @param inlen length of data stream.
  * @param key Pointer to authentication key.
  * @param key_len Length of authentication key.
  *
  */
-void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *text, size_t text_len,
+void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *in, size_t inlen,
                 uint8_t const *key, size_t key_len)
 {
-       FR_MD5_CTX context;
+       FR_MD5_CTX conin;
        uint8_t k_ipad[65];    /* inner padding - key XORd with ipad */
        uint8_t k_opad[65];    /* outer padding - key XORd with opad */
        uint8_t tk[16];
@@ -110,13 +110,13 @@ void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *text, size_t
        /*
         * the HMAC_MD5 transform looks like:
         *
-        * MD5(K XOR opad, MD5(K XOR ipad, text))
+        * MD5(K XOR opad, MD5(K XOR ipad, in))
         *
         * where K is an n byte key
         * ipad is the byte 0x36 repeated 64 times
 
         * opad is the byte 0x5c repeated 64 times
-        * and text is the data being protected
+        * and in is the data being protected
         */
 
        /* start out by storing key in pads */
@@ -133,20 +133,20 @@ void fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *text, size_t
        /*
         * perform inner MD5
         */
-       fr_md5_init(&context);             /* init context for 1st
+       fr_md5_init(&conin);               /* init conin for 1st
                                              * pass */
-       fr_md5_update(&context, k_ipad, 64);      /* start with inner pad */
-       fr_md5_update(&context, text, text_len); /* then text of datagram */
-       fr_md5_final(digest, &context);   /* finish up 1st pass */
+       fr_md5_update(&conin, k_ipad, 64);      /* start with inner pad */
+       fr_md5_update(&conin, in, inlen); /* then in of datagram */
+       fr_md5_final(digest, &conin);     /* finish up 1st pass */
        /*
         * perform outer MD5
         */
-       fr_md5_init(&context);             /* init context for 2nd
+       fr_md5_init(&conin);               /* init conin for 2nd
                                              * pass */
-       fr_md5_update(&context, k_opad, 64);     /* start with outer pad */
-       fr_md5_update(&context, digest, 16);     /* then results of 1st
+       fr_md5_update(&conin, k_opad, 64);     /* start with outer pad */
+       fr_md5_update(&conin, digest, 16);     /* then results of 1st
                                              * hash */
-       fr_md5_final(digest, &context);   /* finish up 2nd pass */
+       fr_md5_final(digest, &conin);     /* finish up 2nd pass */
 }
 #endif /* HAVE_OPENSSL_EVP_H */
 
index 761f945fd47d32abafb6a58f7bbc8a0a11ba113c..f582aea98f7ce21c31a394bbcc9fe1fc0c2a79c9 100644 (file)
@@ -976,7 +976,7 @@ char *fr_inet_ifid_ntop(char *out, size_t outlen, uint8_t const *ifid)
  * @param[in] ifid_str to parse.
  * @return a pointer to out.
  */
-uint8_t *fr_inet_ifid_pton(uint8_t out[8], char const *ifid_str)
+uint8_t *fr_inet_ifid_pton(uint8_t out[static 8], char const *ifid_str)
 {
        static char const xdigits[] = "0123456789abcdef";
        char const *p, *pch;
index 8021e0c0bc0329fbd4672198aab0a80b7d8f04cc..d68bc306a6773e3f53999a374c000dbdd44a7578 100644 (file)
@@ -122,7 +122,7 @@ char        *fr_inet_ntop_prefix(char out[FR_IPADDR_PREFIX_STRLEN], size_t outlen, fr_i
 
 char   *fr_inet_ifid_ntop(char *out, size_t outlen, uint8_t const *ifid);
 
-uint8_t        *fr_inet_ifid_pton(uint8_t out[8], char const *ifid_str);
+uint8_t        *fr_inet_ifid_pton(uint8_t out[static 8], char const *ifid_str);
 
 /*
  *     if_index and if_name resolution
index a87ec27cf6efadbd5eeef275f26cdbc10d1d53d2..17bb1c99aec20b8b8421323fb22c838ad234bfbf 100644 (file)
@@ -237,7 +237,7 @@ void fr_md4_final(uint8_t out[MD4_DIGEST_LENGTH], FR_MD4_CTX *ctx)
  * @param[in] state 16 bytes of data to feed into the hashing function.
  * @param[in,out] block MD4 digest block to update.
  */
-void fr_md4_transform(uint32_t state[4], uint8_t const block[MD4_BLOCK_LENGTH])
+void fr_md4_transform(uint32_t state[static 4], uint8_t const block[static MD4_BLOCK_LENGTH])
 {
        uint32_t a, b, c, d;
        uint32_t const *in = (uint32_t const *)block;
index d997b10b532a33136c0b51e8a8eebf42402cc9ef..943d57acd405ce13fdaf9459811172f922c48ca9 100644 (file)
@@ -64,13 +64,9 @@ typedef struct {
 } FR_MD4_CTX;
 
 void   fr_md4_init(FR_MD4_CTX *ctx);
-void   fr_md4_update(FR_MD4_CTX *ctx, uint8_t const *in, size_t inlen)
-       CC_BOUNDED(__string__, 2, 3);
-void   fr_md4_final(uint8_t out[MD4_DIGEST_LENGTH], FR_MD4_CTX *ctx)
-       CC_BOUNDED(__minbytes__, 1, MD4_DIGEST_LENGTH);
-void   fr_md4_transform(uint32_t buf[4], uint8_t const inc[MD4_BLOCK_LENGTH])
-       CC_BOUNDED(__size__, 1, 4, 4)
-       CC_BOUNDED(__minbytes__, 2, MD4_BLOCK_LENGTH);
+void   fr_md4_update(FR_MD4_CTX *ctx, uint8_t const *in, size_t inlen);
+void   fr_md4_final(uint8_t out[static MD4_DIGEST_LENGTH], FR_MD4_CTX *ctx)
+void   fr_md4_transform(uint32_t buf[static 4], uint8_t const inc[static MD4_BLOCK_LENGTH]);
 #else  /* HAVE_OPENSSL_EVP_H */
 USES_APPLE_DEPRECATED_API
 #include <openssl/md4.h>
@@ -82,7 +78,7 @@ USES_APPLE_DEPRECATED_API
 #endif
 
 /* md4.c */
-void fr_md4_calc(uint8_t out[MD4_DIGEST_LENGTH], uint8_t const *in, size_t inlen);
+void fr_md4_calc(uint8_t out[static MD4_DIGEST_LENGTH], uint8_t const *in, size_t inlen);
 
 #ifdef __cplusplus
 }
index 4c81bbad087863d64550519d8718fe1f08ec21dd..3583c1a1e9e48bd2c47346a3e36d8cb112e7b71f 100644 (file)
@@ -18,7 +18,7 @@ RCSID("$Id$")
  * @param[in] in Data to hash.
  * @param[in] inlen Length of the data.
  */
-void fr_md5_calc(uint8_t *out, uint8_t const *in, size_t inlen)
+void fr_md5_calc(uint8_t out[static MD5_DIGEST_LENGTH], uint8_t const *in, size_t inlen)
 {
        FR_MD5_CTX ctx;
 
@@ -177,7 +177,7 @@ void fr_md5_final(uint8_t out[MD5_DIGEST_LENGTH], FR_MD5_CTX *ctx)
  * @param[in] state 16 bytes of data to feed into the hashing function.
  * @param[in,out] block MD5 digest block to update.
  */
-void fr_md5_transform(uint32_t state[4], uint8_t const block[MD5_BLOCK_LENGTH])
+void fr_md5_transform(uint32_t state[static 4], uint8_t const block[static MD5_BLOCK_LENGTH])
 {
        uint32_t a, b, c, d, in[MD5_BLOCK_LENGTH / 4];
 
index 345e8eb8f6ff6dd2bafb61e45e04f9fbbeb48c71..62ba1340a25ccab87f28b8657bc1bfddc638b8d0 100644 (file)
@@ -59,13 +59,9 @@ typedef struct {
 } FR_MD5_CTX;
 
 void   fr_md5_init(FR_MD5_CTX *ctx);
-void   fr_md5_update(FR_MD5_CTX *ctx, uint8_t const *in, size_t inlen)
-       CC_BOUNDED(__string__, 2, 3);
-void   fr_md5_final(uint8_t out[MD5_DIGEST_LENGTH], FR_MD5_CTX *ctx)
-       CC_BOUNDED(__minbytes__, 1, MD5_DIGEST_LENGTH);
-void   fr_md5_transform(uint32_t state[4], uint8_t const block[MD5_BLOCK_LENGTH])
-       CC_BOUNDED(__size__, 1, 4, 4)
-       CC_BOUNDED(__minbytes__, 2, MD5_BLOCK_LENGTH);
+void   fr_md5_update(FR_MD5_CTX *ctx, uint8_t const *in, size_t inlen);
+void   fr_md5_final(uint8_t out[static MD5_DIGEST_LENGTH], FR_MD5_CTX *ctx);
+void   fr_md5_transform(uint32_t state[static 4], uint8_t const block[static MD5_BLOCK_LENGTH]);
 #  define fr_md5_copy(_out, _in)       memcpy(_out, _in, sizeof(*_out))
 #else  /* HAVE_OPENSSL_EVP_H */
 USES_APPLE_DEPRECATED_API
@@ -79,12 +75,10 @@ USES_APPLE_DEPRECATED_API
 #endif
 
 /* hmac.c */
-void   fr_hmac_md5(uint8_t digest[MD5_DIGEST_LENGTH], uint8_t const *text, size_t text_len,
-                   uint8_t const *key, size_t key_len)
-       CC_BOUNDED(__minbytes__, 1, MD5_DIGEST_LENGTH);
-
+void   fr_hmac_md5(uint8_t digest[static MD5_DIGEST_LENGTH], uint8_t const *in, size_t inlen,
+                   uint8_t const *key, size_t key_len);
 /* md5.c */
-void   fr_md5_calc(uint8_t *out, uint8_t const *in, size_t inlen);
+void   fr_md5_calc(uint8_t out[static MD5_DIGEST_LENGTH], uint8_t const *in, size_t inlen);
 
 #ifdef __cplusplus
 }
index a3cefbcc3914530ca9fb8246cc55a5bb977f9b05..d96dc127882c63f923309d380d6af5369be1b454 100644 (file)
@@ -318,7 +318,7 @@ void                fr_pair_value_snprintf(VALUE_PAIR *vp, char const *fmt, ...) CC_HINT(forma
 /* Printing functions */
 size_t         fr_pair_value_snprint(char *out, size_t outlen, VALUE_PAIR const *vp, char quote);
 char           *fr_pair_value_asprint(TALLOC_CTX *ctx, VALUE_PAIR const *vp, char quote);
-char const     *fr_pair_value_enum(VALUE_PAIR const *vp, char buff[20]);
+char const     *fr_pair_value_enum(VALUE_PAIR const *vp, char buff[static 20]);
 
 size_t         fr_pair_snprint(char *out, size_t outlen, VALUE_PAIR const *vp);
 void           fr_pair_fprint(FILE *, VALUE_PAIR const *vp);
index 76f336bafe16a43e6c7b7bdcd3a29fcd8d9d037e..f9d0601dfe4b80386d1bedc0fabd2c5819b318e0 100644 (file)
@@ -33,7 +33,7 @@ RCSID("$Id$")
 
 /* Hash a single 512-bit block. This is the core of the algorithm. */
 
-void fr_sha1_transform(uint32_t state[5], uint8_t const buffer[64])
+void fr_sha1_transform(uint32_t state[static 5], uint8_t const buffer[static 64])
 {
        uint32_t a, b, c, d, e;
        typedef union {
@@ -129,7 +129,7 @@ void fr_sha1_update(fr_sha1_ctx *context,uint8_t const *data, size_t len)
 
 /* Add padding and return the message digest. */
 
-void fr_sha1_final(uint8_t digest[20], fr_sha1_ctx *context)
+void fr_sha1_final(uint8_t digest[static 20], fr_sha1_ctx *context)
 {
        uint32_t i, j;
        uint8_t finalcount[8];
@@ -162,7 +162,7 @@ void fr_sha1_final(uint8_t digest[20], fr_sha1_ctx *context)
 #  endif
 }
 
-void fr_sha1_final_no_len(uint8_t digest[20], fr_sha1_ctx *context)
+void fr_sha1_final_no_len(uint8_t digest[static 20], fr_sha1_ctx *context)
 {
        uint32_t i, j;
 
index 8856a811acb6822cf67ba2227108eeea07f86828..ce6cbe0a54453453336de7caadf320ce49197248 100644 (file)
@@ -35,16 +35,16 @@ typedef struct {
     uint8_t buffer[64];
 } fr_sha1_ctx;
 
-void fr_sha1_transform(uint32_t state[5], uint8_t const buffer[64]);
+void fr_sha1_transform(uint32_t state[static 5], uint8_t const buffer[static 64]);
 void fr_sha1_init(fr_sha1_ctx *context);
 void fr_sha1_update(fr_sha1_ctx *context, uint8_t const *data, size_t len);
-void fr_sha1_final(uint8_t digest[20], fr_sha1_ctx *context);
+void fr_sha1_final(uint8_t digest[static 20], fr_sha1_ctx *context);
 
 /*
  * this version implements a raw SHA1 transform, no length is appended,
  * nor any 128s out to the block size.
  */
-void fr_sha1_final_no_len(uint8_t digest[20], fr_sha1_ctx* context);
+void fr_sha1_final_no_len(uint8_t digest[static 20], fr_sha1_ctx* context);
 
 #else  /* WITH_OPENSSL_SHA1 */
 USES_APPLE_DEPRECATED_API
index be19b61a0125dc0dd83886b21db845c9e3a85be9..1ec9ee3fc651115759b2ca83199cd5f653840f9d 100644 (file)
@@ -196,7 +196,8 @@ int         fr_dhcpv4_pcap_send(fr_pcap_t *pcap, uint8_t *dst_ether_addr, RADIUS_PACKET
 /*
  *     udp.c
  */
-int            fr_dhcpv4_udp_add_arp_entry(int fd, char const *interface, fr_ipaddr_t const *ip, uint8_t macaddr[6]);
+int            fr_dhcpv4_udp_add_arp_entry(int fd, char const *interface,
+                                           fr_ipaddr_t const *ip, uint8_t macaddr[static 6]);
 #ifdef __cplusplus
 }
 #endif
index 92b1b6a012156b9c2faa441559cc05f5cc226bf4..fd653468dd8d5340cd306cd41213debd78eddb77 100644 (file)
@@ -67,7 +67,7 @@
  *     - 0 on success.
  *     - -1 on failure.
  */
-int fr_dhcpv4_udp_add_arp_entry(int fd, char const *interface, fr_ipaddr_t const *ip, uint8_t macaddr[6])
+int fr_dhcpv4_udp_add_arp_entry(int fd, char const *interface, fr_ipaddr_t const *ip, uint8_t macaddr[static 6])
 {
        struct sockaddr_in *sin;
        struct arpreq req;
@@ -96,7 +96,7 @@ int fr_dhcpv4_udp_add_arp_entry(int fd, char const *interface, fr_ipaddr_t const
 }
 #else
 int fr_dhcpv4_udp_add_arp_entry(UNUSED int fd, UNUSED char const *interface,
-                               UNUSED fr_ipaddr_t const *ip, UNUSED uint8_t macaddr[6])
+                               UNUSED fr_ipaddr_t const *ip, UNUSED uint8_t macaddr[static 6])
 {
        fr_strerror_printf("Adding ARP entry is unsupported on this system");
        return -1;