From: Darrick J. Wong <djwong@xxxxxxxxxx> gcc 12.2 with ubsan and fortify turned on complains about this: In file included from /usr/include/stdio.h:906, from ../include/platform_defs.h:9, from ../include/libxfs.h:16, from progress.c:3: In function ‘sprintf’, inlined from ‘duration’ at progress.c:443:4: /usr/include/x86_64-linux-gnu/bits/stdio2.h:30:10: error: null destination pointer [-Werror=format-overflow=] 30 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 | __glibc_objsize (__s), __fmt, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 | __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~ I think this is a false negative since all callers are careful not to pass in a null pointer. Unfortunately the compiler cannot detect that since this isn't a static function and complains. Fix this by adding an explicit declaration that buf isn't null. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- repair/progress.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repair/progress.h b/repair/progress.h index 0b06b2c4f43f..c09aa69413ac 100644 --- a/repair/progress.h +++ b/repair/progress.h @@ -38,7 +38,7 @@ extern void summary_report(void); extern int set_progress_msg(int report, uint64_t total); extern uint64_t print_final_rpt(void); extern char *timestamp(struct xfs_mount *mp, int end, int phase, char *buf); -extern char *duration(time_t val, char *buf); +char *duration(time_t val, char *buf) __attribute__((nonnull(2))); extern int do_parallel; #define PROG_RPT_INC(a,b) if (ag_stride && prog_rpt_done) (a) += (b)