forked from OSchip/llvm-project
[analyzer] Add FIXMEs for alpha.unix.cstring.OutOfBounds false positives.
Caused by incorrect strlcat() modeling in r332303, cf. https://bugs.llvm.org/show_bug.cgi?id=37687#c8 llvm-svn: 359237
This commit is contained in:
parent
0c4dbf9ecd
commit
ecefce6a49
|
@ -1528,6 +1528,10 @@ void CStringChecker::evalStrlcat(CheckerContext &C, const CallExpr *CE) const {
|
|||
if (CE->getNumArgs() < 3)
|
||||
return;
|
||||
|
||||
// FIXME: strlcat() uses a different rule for bound checking, i.e. 'n' means
|
||||
// a different thing as compared to strncat(). This currently causes
|
||||
// false positives in the alpha string bound checker.
|
||||
|
||||
//char *strlcat(char *s1, const char *s2, size_t n);
|
||||
evalStrcpyCommon(C, CE,
|
||||
/* returnEnd = */ false,
|
||||
|
|
|
@ -15,6 +15,7 @@ void f1() {
|
|||
void f2() {
|
||||
char buf[5];
|
||||
strlcpy(buf, "abcd", sizeof(buf)); // expected-no-warning
|
||||
// FIXME: This should not warn. The string is safely truncated.
|
||||
strlcat(buf, "efgh", sizeof(buf)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue