Skip to content

Commit

Permalink
Removing strncpy() checking in CString checker for now. Some signific…
Browse files Browse the repository at this point in the history
…ant changes need to be made to properly support modeling of it since it potentially leaves strings non-null terminated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130758 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
ldm5180 committed May 3, 2011
1 parent 3477224 commit 094ea0a
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 69 deletions.
2 changes: 1 addition & 1 deletion lib/StaticAnalyzer/Checkers/CStringChecker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1241,7 +1241,7 @@ bool CStringChecker::evalCall(const CallExpr *CE, CheckerContext &C) const {
.Cases("memcmp", "bcmp", &CStringChecker::evalMemcmp)
.Cases("memmove", "__memmove_chk", &CStringChecker::evalMemmove)
.Cases("strcpy", "__strcpy_chk", &CStringChecker::evalStrcpy)
.Cases("strncpy", "__strncpy_chk", &CStringChecker::evalStrncpy)
//.Cases("strncpy", "__strncpy_chk", &CStringChecker::evalStrncpy)
.Cases("stpcpy", "__stpcpy_chk", &CStringChecker::evalStpcpy)
.Cases("strcat", "__strcat_chk", &CStringChecker::evalStrcat)
.Cases("strncat", "__strncat_chk", &CStringChecker::evalStrncat)
Expand Down
68 changes: 0 additions & 68 deletions test/Analysis/string.c
Original file line number Diff line number Diff line change
Expand Up @@ -327,74 +327,6 @@ void strcpy_no_overflow(char *y) {
strcpy(x, y); // no-warning
}

//===----------------------------------------------------------------------===
// strncpy()
//===----------------------------------------------------------------------===

#ifdef VARIANT

#define __strncpy_chk BUILTIN(__strncpy_chk)
char *__strncpy_chk(char *restrict s1, const char *restrict s2, size_t n, size_t destlen);

#define strncpy(a,b,c) __strncpy_chk(a,b,c, (size_t)-1)

#else /* VARIANT */

#define strncpy BUILTIN(strncpy)
char *strncpy(char *restrict s1, const char *restrict s2, size_t n);

#endif /* VARIANT */


void strncpy_null_dst(char *x) {
strncpy(NULL, x, 1); // expected-warning{{Null pointer argument in call to byte string function}}
}

void strncpy_null_src(char *x) {
strncpy(x, NULL, 1); // expected-warning{{Null pointer argument in call to byte string function}}
}

void strncpy_fn(char *x) {
strncpy(x, (char*)&strncpy_fn, 1); // expected-warning{{Argument to byte string function is the address of the function 'strncpy_fn', which is not a null-terminated string}}
}

void strncpy_effects(char *x, char *y) {
char a = x[0];

if (strncpy(x, y, strlen(y)) != x)
(void)*(char*)0; // no-warning

if (strlen(x) != strlen(y))
(void)*(char*)0; // no-warning

if (a != x[0])
(void)*(char*)0; // expected-warning{{null}}
}

void strncpy_overflow(char *y) {
char x[4];
if (strlen(y) == 4)
strncpy(x, y, strlen(y)); // expected-warning{{Byte string function overflows destination buffer}}
}

void strncpy_len_overflow(char *y) {
char x[4];
if (strlen(y) == 3)
strncpy(x, y, sizeof(x)); // no-warning
}

void strncpy_no_overflow(char *y) {
char x[4];
if (strlen(y) == 3)
strncpy(x, y, strlen(y)); // no-warning
}

void strncpy_no_len_overflow(char *y) {
char x[4];
if (strlen(y) == 4)
strncpy(x, y, sizeof(x)-1); // no-warning
}

//===----------------------------------------------------------------------===
// stpcpy()
//===----------------------------------------------------------------------===
Expand Down

0 comments on commit 094ea0a

Please sign in to comment.