clang -cc1 -cc1 -triple amd64-unknown-openbsd7.0 -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name conftest.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 1 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/gnu/lib/libiberty/obj -resource-dir /usr/local/lib/clang/13.0.0 -internal-isystem /usr/local/lib/clang/13.0.0/include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/usr/src/gnu/lib/libiberty/obj -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /home/ben/Projects/vmm/scan-build/2022-01-12-194120-40624-1 -x c conftest.c
1 | |
2 | |
3 | #define PACKAGE_NAME "" |
4 | #define PACKAGE_TARNAME "" |
5 | #define PACKAGE_VERSION "" |
6 | #define PACKAGE_STRING "" |
7 | #define PACKAGE_BUGREPORT "" |
8 | #define HAVE_SYS_FILE_H 1 |
9 | #define HAVE_SYS_PARAM_H 1 |
10 | #define HAVE_LIMITS_H 1 |
11 | #define HAVE_STDLIB_H 1 |
12 | #define HAVE_STRING_H 1 |
13 | #define HAVE_UNISTD_H 1 |
14 | #define HAVE_STRINGS_H 1 |
15 | #define HAVE_SYS_TIME_H 1 |
16 | #define HAVE_TIME_H 1 |
17 | #define HAVE_SYS_RESOURCE_H 1 |
18 | #define HAVE_SYS_STAT_H 1 |
19 | #define HAVE_SYS_MMAN_H 1 |
20 | #define HAVE_FCNTL_H 1 |
21 | #define HAVE_SYS_SYSCTL_H 1 |
22 | #define HAVE_STDINT_H 1 |
23 | #define HAVE_SYS_WAIT_H 1 |
24 | #define TIME_WITH_SYS_TIME 1 |
25 | #define STDC_HEADERS 1 |
26 | #define HAVE_SYS_TYPES_H 1 |
27 | #define HAVE_SYS_STAT_H 1 |
28 | #define HAVE_STDLIB_H 1 |
29 | #define HAVE_STRING_H 1 |
30 | #define HAVE_MEMORY_H 1 |
31 | #define HAVE_STRINGS_H 1 |
32 | #define HAVE_INTTYPES_H 1 |
33 | #define HAVE_STDINT_H 1 |
34 | #define HAVE_UNISTD_H 1 |
35 | #define SIZEOF_INT 4 |
36 | #define UNSIGNED_64BIT_TYPE uint64_t |
37 | #define HAVE_UINTPTR_T 1 |
38 | #define HAVE_ASPRINTF 1 |
39 | #define HAVE_ATEXIT 1 |
40 | #define HAVE_BASENAME 1 |
41 | #define HAVE_BCMP 1 |
42 | #define HAVE_BCOPY 1 |
43 | #define HAVE_BSEARCH 1 |
44 | #define HAVE_BZERO 1 |
45 | #define HAVE_CALLOC 1 |
46 | #define HAVE_CLOCK 1 |
47 | #define HAVE_FFS 1 |
48 | #define HAVE_GETCWD 1 |
49 | #define HAVE_GETPAGESIZE 1 |
50 | #define HAVE_GETTIMEOFDAY 1 |
51 | #define HAVE_INDEX 1 |
52 | #define HAVE_INSQUE 1 |
53 | #define HAVE_MEMCHR 1 |
54 | #define HAVE_MEMCMP 1 |
55 | #define HAVE_MEMCPY 1 |
56 | #define HAVE_MEMMOVE 1 |
57 | #define HAVE_MEMSET 1 |
58 | #define HAVE_MKSTEMPS 1 |
59 | #define HAVE_PUTENV 1 |
60 | #define HAVE_RANDOM 1 |
61 | #define HAVE_RENAME 1 |
62 | #define HAVE_RINDEX 1 |
63 | #define HAVE_SETENV 1 |
64 | #define HAVE_SNPRINTF 1 |
65 | #define HAVE_SIGSETMASK 1 |
66 | #define HAVE_STPCPY 1 |
67 | #define HAVE_STPNCPY 1 |
68 | #define HAVE_STRCASECMP 1 |
69 | #define HAVE_STRCHR 1 |
70 | #define HAVE_STRDUP 1 |
71 | #define HAVE_STRNCASECMP 1 |
72 | #define HAVE_STRNDUP 1 |
73 | #define HAVE_STRRCHR 1 |
74 | #define HAVE_STRSTR 1 |
75 | #define HAVE_STRTOD 1 |
76 | #define HAVE_STRTOL 1 |
77 | #define HAVE_STRTOUL 1 |
78 | #define HAVE_TMPNAM 1 |
79 | #define HAVE_VASPRINTF 1 |
80 | #define HAVE_VFPRINTF 1 |
81 | #define HAVE_VPRINTF 1 |
82 | #define HAVE_VSNPRINTF 1 |
83 | #define HAVE_VSPRINTF 1 |
84 | #define HAVE_WAITPID 1 |
85 | |
86 | find_stack_direction () |
87 | { |
88 | static char *addr = 0; |
89 | auto char dummy; |
90 | if (addr == 0) |
| |
91 | { |
92 | addr = &dummy; |
93 | return find_stack_direction (); |
| 3 | | Address of stack memory associated with local variable 'dummy' is still referred to by the static variable 'addr' upon returning to the caller. This will be a dangling reference |
|
94 | } |
95 | else |
96 | return (&dummy > addr) ? 1 : -1; |
97 | } |
98 | main () |
99 | { |
100 | exit (find_stack_direction() < 0); |
| 1 | Calling 'find_stack_direction' | |
|
101 | } |