[DTrace-devel] [PATCH 1/2] Possible uninitialized 'last' variable in usdt_copyin_data()
Kris Van Hees
kris.van.hees at oracle.com
Fri Aug 15 15:25:44 UTC 2025
On Tue, Aug 12, 2025 at 06:46:05PM -0400, eugene.loh at oracle.com wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
>
> Some compilers warn:
>
> libcommon/usdt_parser.c: In function ???usdt_copyin_data???:
> libcommon/usdt_parser.c:191:15: warning:
> ???last??? may be used uninitialized in this function [-Wmaybe-uninitialized]
> last->next = blk;
> ~~~~~~~~~~~^~~~~
>
> Change the "if" check to make it easier for compilers to recognize
> that "last" will be initialized (and non-NULL even!).
I disagree... What compiler version reported this as a warning? The warning
shows a limitation of the compiler to see that last can actually never be
used uninitialized.
I don't think we should make changes like these to accomodate compielrs that
are less advanced. We generally expect systems to be updated to the most
recent version of packages so that would include the compiler.
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> ---
> libcommon/usdt_parser.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libcommon/usdt_parser.c b/libcommon/usdt_parser.c
> index 864198098..d8cb9b7ba 100644
> --- a/libcommon/usdt_parser.c
> +++ b/libcommon/usdt_parser.c
> @@ -163,7 +163,7 @@ usdt_destroy_data(usdt_data_t *data)
> usdt_data_t *
> usdt_copyin_data(int in, int out, int *ok)
> {
> - usdt_data_t *first = NULL, *last;
> + usdt_data_t *first = NULL, *last = NULL;
> size_t cnt;
>
> *ok = 1;
> @@ -185,7 +185,7 @@ usdt_copyin_data(int in, int out, int *ok)
> if ((blk = usdt_copyin_block(in, out, ok)) == NULL)
> goto err;
>
> - if (first == NULL)
> + if (last == NULL)
> first = last = blk;
> else {
> last->next = blk;
> --
> 2.47.3
>
More information about the DTrace-devel
mailing list