aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2025-12-26 13:37:47 +0000
committerDimitry Andric <dim@FreeBSD.org>2025-12-26 13:37:53 +0000
commitcd880010c49a5d4ec529f4204d4e88cd27727255 (patch)
tree76531843ae1ff0404f883fd554fa4861c4b651af
parent3054e22e4524df24908d7e9379681c1ccf829b93 (diff)
pmcannotate: avoid accessing uninitialized local variables
Initialize `tbfl` and `tofl` to NULL, and check whether they are non-NULL before calling remove(3) on them, to avoid warnings from clang 21 similar to: usr.sbin/pmcannotate/pmcannotate.c:746:3: error: variable 'tbfl' is uninitialized when used here [-Werror,-Wuninitialized] 746 | FATAL(exec, "%s: Impossible to locate the binary file\n", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 747 | exec); | ~~~~~ usr.sbin/pmcannotate/pmcannotate.c:57:9: note: expanded from macro 'FATAL' 57 | remove(tbfl); \ | ^~~~ usr.sbin/pmcannotate/pmcannotate.c:695:12: note: initialize the variable 'tbfl' to silence this warning 695 | char *tbfl, *tofl, *tmpdir; | ^ | = NULL usr.sbin/pmcannotate/pmcannotate.c:746:3: error: variable 'tofl' is uninitialized when used here [-Werror,-Wuninitialized] 746 | FATAL(exec, "%s: Impossible to locate the binary file\n", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 747 | exec); | ~~~~~ usr.sbin/pmcannotate/pmcannotate.c:58:9: note: expanded from macro 'FATAL' 58 | remove(tofl); \ | ^~~~ usr.sbin/pmcannotate/pmcannotate.c:695:19: note: initialize the variable 'tofl' to silence this warning 695 | char *tbfl, *tofl, *tmpdir; | ^ | = NULL MFC after: 3 days
-rw-r--r--usr.sbin/pmcannotate/pmcannotate.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.sbin/pmcannotate/pmcannotate.c b/usr.sbin/pmcannotate/pmcannotate.c
index 5958ff615e4b..6f3e121b4729 100644
--- a/usr.sbin/pmcannotate/pmcannotate.c
+++ b/usr.sbin/pmcannotate/pmcannotate.c
@@ -54,8 +54,10 @@
if ((ptr) != NULL) \
perror(ptr); \
fprintf(stderr, ##x); \
- remove(tbfl); \
- remove(tofl); \
+ if (tbfl != NULL) \
+ remove(tbfl); \
+ if (tofl != NULL) \
+ remove(tofl); \
exit(EXIT_FAILURE); \
} while (0)
@@ -702,6 +704,8 @@ main(int argc, char *argv[])
uintptr_t tmppc, ostart, oend;
int cget, asmsrc;
+ tbfl = NULL;
+ tofl = NULL;
exec = argv[0];
ofile = NULL;
bin = NULL;