https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88835
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |85741 --- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> --- The case in comment #2 is entirely dissimilar to the the one in comment #0 so it would be better deal with under its own bug. But unless I'm misreading the code in the translation unit, the warning looks justified: filename is cleared by the assignment from the result of mfree() but then used as an argument to log_internal_realm() right after it. The function is declared with attribute printf. I copied the context of the warning from the translation unit below. It doesn't seem to correspond to the code pointed to in the discussion (https://github.com/systemd/systemd/issues/11369#issuecomment-453044884): the mfree() call appears after the test for filename being null. If I'm missing something please open a new bug for it. filename = path_make_absolute(path, *p); if (!filename) return - 12 ; ... if (r >= 0) break; filename = mfree(filename); if (r == - 13 ) ({ int _level = (( 7 )), _e = ((r)), _realm = (LOG_REALM_SYSTEMD); (log_get_max_level_realm(_realm) >= (( _level ) & 0x07) ) ? log_internal_realm(((_realm) << 10 | (_level)), _e, "../src/core/load-fragment.c", 4301, __func__, "Cannot access \"%s\": %m", filename) : -abs(_e); }); Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85741 [Bug 85741] [meta-bug] bogus/missing -Wformat-overflow