mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-21 20:45:53 -04:00

For the following code snippet: void builtin_function_call_crash_fixes(char *c) { __builtin_strncpy(c, "", 6); __builtin_memset(c, '\0', (0)); __builtin_memcpy(c, c, 0); } security.insecureAPI.DeprecatedOrUnsafeBufferHandling caused a regression, as it didn't recognize functions starting with __builtin_. Fixed exactly that. I wanted to modify an existing test file, but the two I found didn't seem like perfect candidates. While I was there, I prettified their RUN: lines. Differential Revision: https://reviews.llvm.org/D59812 llvm-svn: 358609
38 lines
1.0 KiB
C
38 lines
1.0 KiB
C
// RUN: %clang_analyze_cc1 -triple i686-pc-linux-gnu %s -verify \
|
|
// RUN: -analyzer-checker=security.insecureAPI \
|
|
// RUN: -analyzer-checker=security.FloatLoopCounter
|
|
|
|
// expected-no-diagnostics
|
|
|
|
// This file complements 'security-syntax-checks.m', but tests that we omit
|
|
// specific checks on platforms where they don't make sense.
|
|
|
|
// Omit the 'rand' check since 'arc4random' is not available on Linux.
|
|
int rand(void);
|
|
double drand48(void);
|
|
double erand48(unsigned short[3]);
|
|
long jrand48(unsigned short[3]);
|
|
void lcong48(unsigned short[7]);
|
|
long lrand48(void);
|
|
long mrand48(void);
|
|
long nrand48(unsigned short[3]);
|
|
long random(void);
|
|
int rand_r(unsigned *);
|
|
|
|
void test_rand()
|
|
{
|
|
unsigned short a[7];
|
|
unsigned b;
|
|
|
|
rand(); // no-warning
|
|
drand48(); // no-warning
|
|
erand48(a); // no-warning
|
|
jrand48(a); // no-warning
|
|
lcong48(a); // no-warning
|
|
lrand48(); // no-warning
|
|
mrand48(); // no-warning
|
|
nrand48(a); // no-warning
|
|
rand_r(&b); // no-warning
|
|
random(); // no-warning
|
|
}
|