mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-29 18:06:06 +00:00

This change modernizes, improves and promotes the chroot checker from alpha to the Unix family of checkers. This checker covers the POS05 recommendations for use of chroot. The improvements included modeling of a success or failure from chroot and not falsely reporting a warning along an error path. This was made possible through modernizing the checker to be flow sensitive. --------- Co-authored-by: einvbri <vince.a.bridgers@ericsson.com> Co-authored-by: Balazs Benics <benicsbalazs@gmail.com>
72 lines
2.7 KiB
C
72 lines
2.7 KiB
C
// Here we test the order of the Checkers when StdCLibraryFunctions is
|
|
// enabled.
|
|
|
|
// RUN: %clang --analyze %s --target=x86_64-pc-linux-gnu \
|
|
// RUN: -Xclang -analyzer-checker=core \
|
|
// RUN: -Xclang -analyzer-checker=unix.StdCLibraryFunctions \
|
|
// RUN: -Xclang -analyzer-config \
|
|
// RUN: -Xclang unix.StdCLibraryFunctions:ModelPOSIX=true \
|
|
// RUN: -Xclang -analyzer-checker=unix.Stream \
|
|
// RUN: -Xclang -analyzer-list-enabled-checkers \
|
|
// RUN: -Xclang -analyzer-display-progress \
|
|
// RUN: 2>&1 | FileCheck %s --implicit-check-not=ANALYZE \
|
|
// RUN: --implicit-check-not=\.
|
|
|
|
// CHECK: OVERVIEW: Clang Static Analyzer Enabled Checkers List
|
|
// CHECK-EMPTY:
|
|
// CHECK-NEXT: apiModeling.Errno
|
|
// CHECK-NEXT: apiModeling.TrustNonnull
|
|
// CHECK-NEXT: apiModeling.TrustReturnsNonnull
|
|
// CHECK-NEXT: apiModeling.llvm.CastValue
|
|
// CHECK-NEXT: apiModeling.llvm.ReturnValue
|
|
// CHECK-NEXT: core.BitwiseShift
|
|
// CHECK-NEXT: core.CallAndMessageModeling
|
|
// CHECK-NEXT: core.CallAndMessage
|
|
// CHECK-NEXT: core.DivideZero
|
|
// CHECK-NEXT: core.DynamicTypePropagation
|
|
// CHECK-NEXT: core.NonNullParamChecker
|
|
// CHECK-NEXT: core.NonnilStringConstants
|
|
// CHECK-NEXT: core.NullDereference
|
|
// CHECK-NEXT: core.StackAddrEscapeBase
|
|
// CHECK-NEXT: core.StackAddressEscape
|
|
// CHECK-NEXT: core.UndefinedBinaryOperatorResult
|
|
// CHECK-NEXT: core.VLASize
|
|
// CHECK-NEXT: core.builtin.BuiltinFunctions
|
|
// CHECK-NEXT: core.builtin.NoReturnFunctions
|
|
// CHECK-NEXT: core.uninitialized.ArraySubscript
|
|
// CHECK-NEXT: core.uninitialized.Assign
|
|
// CHECK-NEXT: core.uninitialized.Branch
|
|
// CHECK-NEXT: core.uninitialized.CapturedBlockVariable
|
|
// CHECK-NEXT: core.uninitialized.UndefReturn
|
|
// CHECK-NEXT: deadcode.DeadStores
|
|
// CHECK-NEXT: nullability.NullabilityBase
|
|
// CHECK-NEXT: nullability.NullPassedToNonnull
|
|
// CHECK-NEXT: nullability.NullReturnedFromNonnull
|
|
// CHECK-NEXT: security.insecureAPI.SecuritySyntaxChecker
|
|
// CHECK-NEXT: security.insecureAPI.UncheckedReturn
|
|
// CHECK-NEXT: security.insecureAPI.getpw
|
|
// CHECK-NEXT: security.insecureAPI.gets
|
|
// CHECK-NEXT: security.insecureAPI.mkstemp
|
|
// CHECK-NEXT: security.insecureAPI.mktemp
|
|
// CHECK-NEXT: security.insecureAPI.vfork
|
|
// CHECK-NEXT: unix.API
|
|
// CHECK-NEXT: unix.BlockInCriticalSection
|
|
// CHECK-NEXT: unix.Chroot
|
|
// CHECK-NEXT: unix.cstring.CStringModeling
|
|
// CHECK-NEXT: unix.DynamicMemoryModeling
|
|
// CHECK-NEXT: unix.Errno
|
|
// CHECK-NEXT: unix.Malloc
|
|
// CHECK-NEXT: unix.MallocSizeof
|
|
// CHECK-NEXT: unix.MismatchedDeallocator
|
|
// CHECK-NEXT: unix.Stream
|
|
// CHECK-NEXT: unix.StdCLibraryFunctions
|
|
// CHECK-NEXT: unix.Vfork
|
|
// CHECK-NEXT: unix.cstring.BadSizeArg
|
|
// CHECK-NEXT: unix.cstring.NotNullTerminated
|
|
// CHECK-NEXT: unix.cstring.NullArg
|
|
|
|
int main() {
|
|
int i;
|
|
(void)(10 / i);
|
|
}
|