diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 9ee7a4af38..0ae330541d 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -1556,7 +1556,7 @@ int read_line(FILE *f, size_t limit, char **ret) { } { - _cleanup_(funlockfilep) FILE *flocked = f; + _unused_ _cleanup_(funlockfilep) FILE *flocked = f; flockfile(f); for (;;) { diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 28c8c35fe0..fdf2b098f6 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -245,7 +245,6 @@ int ask_string(char **ret, const char *text, ...) { int reset_terminal_fd(int fd, bool switch_to_text) { struct termios termios; - _cleanup_free_ char *utf8 = NULL; int r = 0; /* Set terminal to some sane defaults */ diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index 26c6e039b8..4dbd6b0f6f 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -1177,8 +1177,6 @@ int bus_exec_context_set_transient_property( return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid personality"); if (mode != UNIT_CHECK) { - _cleanup_free_ char *str = NULL; - c->personality = p; unit_write_drop_in_private_format(u, mode, name, "%s=%s", name, s); } diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index ae0a8da63a..f9a0a14d9e 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -56,7 +56,7 @@ static bool arg_root_enabled = true; static bool arg_root_rw = false; static int add_cryptsetup(const char *id, const char *what, bool rw, bool require, char **device) { - _cleanup_free_ char *e = NULL, *n = NULL, *p = NULL, *d = NULL, *to = NULL; + _cleanup_free_ char *e = NULL, *n = NULL, *p = NULL, *d = NULL; _cleanup_fclose_ FILE *f = NULL; char *ret; int r; diff --git a/src/import/importd.c b/src/import/importd.c index 22ac5fcc84..e23d6d0c80 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -251,7 +251,7 @@ static void transfer_send_logs(Transfer *t, bool flush) { n = strndup(t->log_message, e - t->log_message); /* Skip over NUL and newlines */ - while ((e < t->log_message + t->log_message_size) && IN_SET(*e, 0, '\n')) + while (e < t->log_message + t->log_message_size && (*e == 0 || *e == '\n')) e++; memmove(t->log_message, e, t->log_message + sizeof(t->log_message) - e); diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 3027801ab1..5d70421b76 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -90,6 +90,10 @@ /* The mmap context to use for the header we pick as one above the last defined typed */ #define CONTEXT_HEADER _OBJECT_TYPE_MAX +#ifdef __clang__ +# pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif + /* This may be called from a separate thread to prevent blocking the caller for the duration of fsync(). * As a result we use atomic operations on f->offline_state for inter-thread communications with * journal_file_set_offline() and journal_file_set_online(). */ diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c index d45c9c2270..1ff4e29849 100644 --- a/src/journal/journald-native.c +++ b/src/journal/journald-native.c @@ -332,7 +332,7 @@ void server_process_native_message( const char *label, size_t label_len) { size_t remaining = buffer_size; - ClientContext *context; + ClientContext *context = NULL; int r; assert(s); diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c index 6f0ca47df6..2bb435b976 100644 --- a/src/libsystemd/sd-bus/test-bus-benchmark.c +++ b/src/libsystemd/sd-bus/test-bus-benchmark.c @@ -228,7 +228,7 @@ int main(int argc, char *argv[]) { } mode = MODE_BISECT; Type type = TYPE_LEGACY; int i, pair[2] = { -1, -1 }; - _cleanup_free_ char *name = NULL, *bus_name = NULL, *address = NULL, *server_name = NULL; + _cleanup_free_ char *address = NULL, *server_name = NULL; _cleanup_close_ int bus_ref = -1; const char *unique; cpu_set_t cpuset; diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 730acd2978..db4dc45e05 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -1136,7 +1136,6 @@ void session_restore_vt(Session *s) { .mode = VT_AUTO, }; - _cleanup_free_ char *utf8 = NULL; int vt, old_fd; /* We need to get a fresh handle to the virtual terminal, diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 70039940bc..fd063e43d2 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -3573,7 +3573,8 @@ int link_save(Link *link) { if (r < 0) goto fail; - fprintf(f, "%s%s/%hhu/%hhu/%"PRIu32"/%hhu/"USEC_FMT, space ? " " : "", route_str, + fprintf(f, "%s%s/%hhu/%hhu/%"PRIu32"/%"PRIu32"/"USEC_FMT, + space ? " " : "", route_str, route->dst_prefixlen, route->tos, route->priority, route->table, route->lifetime); space = true; } diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 200d0f622d..574bd0f5cb 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -1142,8 +1142,12 @@ static int manager_save(Manager *m) { goto fail; } - fprintf(f, "from=%s%s/%hhu to=%s%s/%hhu tos=%hhu fwmark=%"PRIu32"/%"PRIu32" table=%hhu", space ? " " : "", from_str, - rule->from_prefixlen, space ? " " : "", to_str, rule->to_prefixlen, rule->tos, rule->fwmark, rule->fwmask, rule->table); + fprintf(f, "from=%s%s/%hhu to=%s%s/%hhu tos=%hhu fwmark=%"PRIu32"/%"PRIu32" table=%"PRIu32, + space ? " " : "", from_str, rule->from_prefixlen, + space ? " " : "", to_str, rule->to_prefixlen, + rule->tos, + rule->fwmark, rule->fwmask, + rule->table); fputc('\n', f); } diff --git a/src/network/networkd-routing-policy-rule.c b/src/network/networkd-routing-policy-rule.c index 6850135fc1..d37f31a4cf 100644 --- a/src/network/networkd-routing-policy-rule.c +++ b/src/network/networkd-routing-policy-rule.c @@ -672,7 +672,6 @@ int config_parse_routing_policy_rule_fwmark_mask( void *userdata) { _cleanup_routing_policy_rule_free_ RoutingPolicyRule *n = NULL; - _cleanup_free_ char *fwmark = NULL; Network *network = userdata; int r; @@ -751,7 +750,7 @@ int config_parse_routing_policy_rule_prefix( } static int routing_policy_rule_read_full_file(char *state_file, char **ret) { - _cleanup_free_ char *s = NULL, *p = NULL; + _cleanup_free_ char *s = NULL; size_t size; int r; diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 802e4b9c8d..26dbb482ef 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -245,7 +245,6 @@ static int acquire_generator_dirs( char **generator_early, char **generator_late) { - _cleanup_(rmdir_and_freep) char *t = NULL; _cleanup_free_ char *x = NULL, *y = NULL, *z = NULL; const char *prefix; diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c index 27495fa5be..c78eb51b42 100644 --- a/src/test/test-fileio.c +++ b/src/test/test-fileio.c @@ -704,7 +704,6 @@ static void test_read_line_one_file(FILE *f) { static void test_read_line(void) { _cleanup_fclose_ FILE *f = NULL; - _cleanup_free_ char *line = NULL; f = fmemopen((void*) buffer, sizeof(buffer), "re"); assert_se(f); diff --git a/src/test/test-util.c b/src/test/test-util.c index f8bf0cb875..0a0cb7b55e 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -104,6 +104,11 @@ static void test_max(void) { assert_se(CLAMP(CLAMP(0, -10, 10), CLAMP(-5, 10, 20), CLAMP(100, -5, 20)) == 10); } +#pragma GCC diagnostic push +#ifdef __clang__ +# pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif + static void test_container_of(void) { struct mytype { uint8_t pad1[3]; @@ -122,6 +127,8 @@ static void test_container_of(void) { v1) == &myval); } +#pragma GCC diagnostic pop + static void test_div_round_up(void) { int div;