Issue 55009
Summary clang-tidy false positive va_arg is called on an uninitialized va_list when passing a pointer to va_list
Labels
Assignees
Reporter Kamilcuk
    The following MCVE that passes a pointer to `va_list` vauses `clang-tidy` to display an error message that the `va_list` is uninitialized. This is a false positive. `va` is a _pointer_ to `va_list` - it is just getting initialized by the caller.

```
#include <stdarg.h>
int va_list_get_int(va_list *va) {
	return va_arg(*va, int);
}
```

when run against `clang-tidy` outputs:

```
$ clang-tidy example.c 
Error while trying to load a compilation database:
Could not auto-detect compilation database for file "example.c"
No compilation database found in /dev/shm/.1000.home.tmp.dir or any parent directory
json-compilation-database: Error while opening JSON database: No such file or directory
fixed-compilation-database: Error while opening fixed database: No such file or directory
Running without flags.
1 warning generated.
example.c:3:9: warning: va_arg() is called on an uninitialized va_list [clang-analyzer-valist.Uninitialized]
        return va_arg(*va, int);
               ^
/usr/lib/clang/13.0.1/include/stdarg.h:19:29: note: expanded from macro 'va_arg'
#define va_arg(ap, type)    __builtin_va_arg(ap, type)
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~
example.c:3:9: note: va_arg() is called on an uninitialized va_list
        return va_arg(*va, int);
               ^
/usr/lib/clang/13.0.1/include/stdarg.h:19:29: note: expanded from macro 'va_arg'
#define va_arg(ap, type)    __builtin_va_arg(ap, type)
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~
```

Environment:

```
$ clang-tidy --version
LLVM (http://llvm.org/):
  LLVM version 13.0.1
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: amdfam10
$ clang --version
clang version 13.0.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
$ uname -a
Linux leonidas 5.17.1-zen1-1-zen #1 ZEN SMP PREEMPT Mon, 28 Mar 2022 21:56:46 +0000 x86_64 GNU/Linux
$ cat /etc/arch-release 
Arch Linux release
```

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to