diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2025-12-26 13:37:47 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2025-12-26 13:37:53 +0000 |
| commit | cd880010c49a5d4ec529f4204d4e88cd27727255 (patch) | |
| tree | 76531843ae1ff0404f883fd554fa4861c4b651af | |
| parent | 3054e22e4524df24908d7e9379681c1ccf829b93 (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.c | 8 |
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; |
