From: Arran Cudbard-Bell Date: Sat, 30 Oct 2021 21:42:16 +0000 (-0400) Subject: Just suppress the warnings... Stupid stupid GCC X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90a61222904a2cb270584a74c0c910586111f1f1;p=thirdparty%2Ffreeradius-server.git Just suppress the warnings... Stupid stupid GCC --- diff --git a/src/lib/server/log.c b/src/lib/server/log.c index 271373cfa10..49b73b847f1 100644 --- a/src/lib/server/log.c +++ b/src/lib/server/log.c @@ -956,8 +956,6 @@ void log_request_fd_event(UNUSED fr_event_list_t *el, int fd, UNUSED int flags, return; } - buffer[0] = '\0'; /* Fix GCC11 bug where it flags the buffer as uninitialised for no reason */ - fr_sbuff_init_out(&sbuff, buffer, sizeof(buffer)); fr_sbuff_marker(&m_start, &sbuff); fr_sbuff_marker(&m_end, &sbuff); diff --git a/src/lib/util/base_16_32_64_tests.c b/src/lib/util/base_16_32_64_tests.c index 182471a5e2a..cd68b5a770f 100644 --- a/src/lib/util/base_16_32_64_tests.c +++ b/src/lib/util/base_16_32_64_tests.c @@ -60,7 +60,7 @@ static const test_vector base64_vectors[] = { static void test_base16_encode(void) { - char buffer[17] = { '\0' }; + char buffer[17]; fr_sbuff_t out; size_t i; @@ -104,7 +104,7 @@ static void test_base16_decode(void) static void test_base32_encode(void) { - char buffer[17] = { '\0' }; + char buffer[17]; fr_sbuff_t out; size_t i; @@ -151,7 +151,7 @@ static void test_base32_decode(void) static void test_base32_hex_encode(void) { - char buffer[17] = { '\0' }; + char buffer[17]; fr_sbuff_t out; size_t i; @@ -198,7 +198,7 @@ static void test_base32_hex_decode(void) static void test_base64_encode(void) { - char buffer[17] = { '\0' }; + char buffer[17]; fr_sbuff_t out; size_t i; diff --git a/src/lib/util/cursor.h b/src/lib/util/cursor.h index b8cdea16b74..97328ad280e 100644 --- a/src/lib/util/cursor.h +++ b/src/lib/util/cursor.h @@ -135,6 +135,13 @@ void *fr_cursor_replace(fr_cursor_t *cursor, void *r) CC_HINT(nonnull); /** @hidecallergraph */ void fr_cursor_free_list(fr_cursor_t *cursor) CC_HINT(nonnull); +/* + * GCC is stupid and will warn about output variables + * being unnitialised, even if they're not dereferenced. + */ +#if defined(__GNUC__) && __GNUC__ >= 11 +DIAG_OFF(maybe-uninitialized) +#endif /** Initialise a cursor with runtime talloc type safety checks and a custom iterator * * @param[in] _cursor to initialise. @@ -189,6 +196,9 @@ void fr_cursor_free_list(fr_cursor_t *cursor) CC_HINT(nonnull); void *_fr_cursor_init(fr_cursor_t *cursor, void * const *head, size_t offset, fr_cursor_iter_t iter, void const *ctx, char const *type); +#if defined(__GNUC__) && __GNUC__ >= 11 +DIAG_ON(maybe-uninitialized) +#endif /** talloc_free the current item * diff --git a/src/lib/util/dbuff.h b/src/lib/util/dbuff.h index cdb8bc2f89e..bd2950d52b8 100644 --- a/src/lib/util/dbuff.h +++ b/src/lib/util/dbuff.h @@ -317,6 +317,13 @@ do { \ */ #define FR_DBUFF_MAX_BIND_CURRENT(_dbuff_or_marker, _max) _FR_DBUFF_MAX(_dbuff_or_marker, _max, FR_DBUFF_ADV_PARENT_CURRENT) +/* + * GCC is stupid and will warn about output variables + * being unnitialised, even if they're not dereferenced. + */ +#if defined(__GNUC__) && __GNUC__ >= 11 +DIAG_OFF(maybe-uninitialized) +#endif /** Does the actual work of initialising a dbuff * @private */ @@ -359,6 +366,9 @@ _fr_dbuff_init(_out, \ char * : false, \ char const * : true \ )) +#if defined(__GNUC__) && __GNUC__ >= 11 +DIAG_ON(maybe-uninitialized) +#endif size_t _fr_dbuff_extend_talloc(fr_dbuff_t *dbuff, size_t extension); diff --git a/src/lib/util/log.c b/src/lib/util/log.c index 12f62dbf3ab..f91f352e6f2 100644 --- a/src/lib/util/log.c +++ b/src/lib/util/log.c @@ -189,8 +189,6 @@ void fr_log_fd_event(UNUSED fr_event_list_t *el, int fd, UNUSED int flags, void return; } - buffer[0] = '\0'; /* Fix GCC11 bug where it flags the buffer as uninitialised for no reason */ - fr_sbuff_init_out(&sbuff, buffer, sizeof(buffer)); fr_sbuff_marker(&m_start, &sbuff); fr_sbuff_marker(&m_end, &sbuff); diff --git a/src/lib/util/pair_print.c b/src/lib/util/pair_print.c index fb86ef24144..1b7bb5cb3f4 100644 --- a/src/lib/util/pair_print.c +++ b/src/lib/util/pair_print.c @@ -201,8 +201,6 @@ void _fr_pair_list_log(fr_log_t const *log, int lvl, fr_pair_t *parent, fr_pair_ fr_sbuff_t sbuff; char buffer[1024]; - buffer[0] = '\0'; /* Fix GCC11 bug where it flags the buffer as uninitialised for no reason */ - fr_sbuff_init_out(&sbuff, buffer, sizeof(buffer)); fr_pair_list_log_sbuff(log, lvl, parent, list, file, line, &sbuff); @@ -225,8 +223,6 @@ void fr_pair_debug(fr_pair_t const *pair) fr_sbuff_t sbuff; char buffer[1024]; - buffer[0] = '\0'; /* Fix GCC11 bug where it flags the buffer as uninitialised for no reason */ - fr_sbuff_init_out(&sbuff, buffer, sizeof(buffer)); fr_pair_print(&sbuff, NULL, pair); diff --git a/src/lib/util/sbuff.h b/src/lib/util/sbuff.h index 5be27d94783..fae4119f4d4 100644 --- a/src/lib/util/sbuff.h +++ b/src/lib/util/sbuff.h @@ -594,6 +594,14 @@ static inline void _fr_sbuff_init(fr_sbuff_t *out, char const *start, char const if (nul_term) *out->start = '\0'; } +/* + * GCC is stupid and will warn about output variables + * being unnitialised, even if they're not dereferenced. + */ +#if defined(__GNUC__) && __GNUC__ >= 11 +DIAG_OFF(maybe-uninitialized) +#endif + /** Initialise an sbuff around a stack allocated buffer for printing * * Will \0 terminate the output buffer. @@ -614,6 +622,11 @@ _Generic((_len_or_end), \ ), \ IS_CONST(char *, _start), true) +#if defined(__GNUC__) && __GNUC__ >= 11 +DIAG_ON(maybe-uninitialized) +#endif + + /** Initialise an sbuff around a stack allocated buffer for parsing * * @param[out] _out Pointer to buffer.