llvm-toolchain/debian/patches/23-strlcpy_strlcat_warning_removed.diff
2020-12-18 10:52:37 +01:00

210 lines
11 KiB
Diff

---
clang/include/clang/Basic/Builtins.def | 8 +-
clang/lib/AST/Decl.cpp | 12 +--
clang/lib/Sema/SemaChecking.cpp | 11 +-
clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp | 6 -
clang/test/Sema/builtins.c | 11 +-
clang/test/Sema/warn-strlcpycat-size.c | 55 --------------
6 files changed, 25 insertions(+), 78 deletions(-)
Index: llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/include/clang/Basic/Builtins.def
===================================================================
--- llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a.orig/clang/include/clang/Basic/Builtins.def
+++ llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/include/clang/Basic/Builtins.def
@@ -557,8 +557,8 @@ BUILTIN(__builtin___memset_chk, "v*v*izz
BUILTIN(__builtin___stpcpy_chk, "c*c*cC*z", "nF")
BUILTIN(__builtin___strcat_chk, "c*c*cC*z", "nF")
BUILTIN(__builtin___strcpy_chk, "c*c*cC*z", "nF")
-BUILTIN(__builtin___strlcat_chk, "zc*cC*zz", "nF")
-BUILTIN(__builtin___strlcpy_chk, "zc*cC*zz", "nF")
+//BUILTIN(__builtin___strlcat_chk, "zc*cC*zz", "nF")
+//BUILTIN(__builtin___strlcpy_chk, "zc*cC*zz", "nF")
BUILTIN(__builtin___strncat_chk, "c*c*cC*zz", "nF")
BUILTIN(__builtin___strncpy_chk, "c*c*cC*zz", "nF")
BUILTIN(__builtin___stpncpy_chk, "c*c*cC*zz", "nF")
@@ -1039,8 +1039,8 @@ LIBBUILTIN(getcontext, "iK*", "fjT",
LIBBUILTIN(_longjmp, "vJi", "frT", "setjmp.h", ALL_GNU_LANGUAGES)
LIBBUILTIN(siglongjmp, "vSJi", "frT", "setjmp.h", ALL_GNU_LANGUAGES)
// non-standard but very common
-LIBBUILTIN(strlcpy, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
-LIBBUILTIN(strlcat, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
+//LIBBUILTIN(strlcpy, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
+//LIBBUILTIN(strlcat, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES)
// id objc_msgSend(id, SEL, ...)
LIBBUILTIN(objc_msgSend, "GGH.", "f", "objc/message.h", OBJC_LANG)
// long double objc_msgSend_fpret(id self, SEL op, ...)
Index: llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/lib/AST/Decl.cpp
===================================================================
--- llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a.orig/clang/lib/AST/Decl.cpp
+++ llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/lib/AST/Decl.cpp
@@ -3913,13 +3913,13 @@ unsigned FunctionDecl::getMemoryFunction
case Builtin::BImemmove:
return Builtin::BImemmove;
- case Builtin::BIstrlcpy:
- case Builtin::BI__builtin___strlcpy_chk:
- return Builtin::BIstrlcpy;
+// case Builtin::BIstrlcpy:
+// case Builtin::BI__builtin___strlcpy_chk:
+// return Builtin::BIstrlcpy;
- case Builtin::BIstrlcat:
- case Builtin::BI__builtin___strlcat_chk:
- return Builtin::BIstrlcat;
+// case Builtin::BIstrlcat:
+// case Builtin::BI__builtin___strlcat_chk:
+// return Builtin::BIstrlcat;
case Builtin::BI__builtin_memcmp:
case Builtin::BImemcmp:
Index: llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/lib/Sema/SemaChecking.cpp
===================================================================
--- llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a.orig/clang/lib/Sema/SemaChecking.cpp
+++ llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/lib/Sema/SemaChecking.cpp
@@ -654,8 +654,8 @@ void Sema::checkFortifiedBuiltinMemoryFu
case Builtin::BI__builtin___memcpy_chk:
case Builtin::BI__builtin___memmove_chk:
case Builtin::BI__builtin___memset_chk:
- case Builtin::BI__builtin___strlcat_chk:
- case Builtin::BI__builtin___strlcpy_chk:
+// case Builtin::BI__builtin___strlcat_chk:
+// case Builtin::BI__builtin___strlcpy_chk:
case Builtin::BI__builtin___strncat_chk:
case Builtin::BI__builtin___strncpy_chk:
case Builtin::BI__builtin___stpncpy_chk:
@@ -4501,10 +4501,10 @@ bool Sema::CheckFunctionCall(FunctionDec
switch (CMId) {
case 0:
return false;
- case Builtin::BIstrlcpy: // fallthrough
+/* case Builtin::BIstrlcpy: // fallthrough
case Builtin::BIstrlcat:
CheckStrlcpycatArguments(TheCall, FnInfo);
- break;
+ break;*/
case Builtin::BIstrncat:
CheckStrncatArguments(TheCall, FnInfo);
break;
Index: llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
===================================================================
--- llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a.orig/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
+++ llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
@@ -478,9 +478,9 @@ GenericTaintChecker::TaintPropagationRul
case Builtin::BIstrncpy:
case Builtin::BIstrncat:
return {{1, 2}, {0, ReturnValueIndex}};
- case Builtin::BIstrlcpy:
+/* case Builtin::BIstrlcpy:
case Builtin::BIstrlcat:
- return {{1, 2}, {0}};
+ return {{1, 2}, {0}};*/
case Builtin::BIstrndup:
return {{0, 1}, {ReturnValueIndex}};
Index: llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/test/Sema/builtins.c
===================================================================
--- llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a.orig/clang/test/Sema/builtins.c
+++ llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/test/Sema/builtins.c
@@ -199,11 +199,9 @@ void test18() {
ptr = __builtin___memccpy_chk(dst, src, '\037', sizeof(src), sizeof(dst));
result = __builtin___strlcpy_chk(dst, src, sizeof(dst), sizeof(dst));
- result = __builtin___strlcat_chk(dst, src, sizeof(dst), sizeof(dst));
ptr = __builtin___memccpy_chk(dst, src, '\037', sizeof(src)); // expected-error {{too few arguments to function call}}
ptr = __builtin___strlcpy_chk(dst, src, sizeof(dst), sizeof(dst)); // expected-warning {{incompatible integer to pointer conversion}}
- ptr = __builtin___strlcat_chk(dst, src, sizeof(dst), sizeof(dst)); // expected-warning {{incompatible integer to pointer conversion}}
}
void no_ms_builtins() {
@@ -217,29 +215,6 @@ void unavailable() {
__builtin_operator_delete(0); // expected-error {{'__builtin_operator_delete' is only available in C++}}
}
-// rdar://18259539
-size_t strlcpy(char * restrict dst, const char * restrict src, size_t size);
-size_t strlcat(char * restrict dst, const char * restrict src, size_t size);
-
-void Test19(void)
-{
- static char b[40];
- static char buf[20];
-
- strlcpy(buf, b, sizeof(b)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} \\
- // expected-note {{change size argument to be the size of the destination}}
- __builtin___strlcpy_chk(buf, b, sizeof(b), __builtin_object_size(buf, 0)); // expected-warning {{size argument in '__builtin___strlcpy_chk' call appears to be size of the source; expected the size of the destination}} \
- // expected-note {{change size argument to be the size of the destination}} \
- // expected-warning {{'strlcpy' will always overflow; destination buffer has size 20, but size argument is 40}}
-
- strlcat(buf, b, sizeof(b)); // expected-warning {{size argument in 'strlcat' call appears to be size of the source; expected the size of the destination}} \
- // expected-note {{change size argument to be the size of the destination}}
-
- __builtin___strlcat_chk(buf, b, sizeof(b), __builtin_object_size(buf, 0)); // expected-warning {{size argument in '__builtin___strlcat_chk' call appears to be size of the source; expected the size of the destination}} \
- // expected-note {{change size argument to be the size of the destination}} \
- // expected-warning {{'strlcat' will always overflow; destination buffer has size 20, but size argument is 40}}
-}
-
// rdar://11076881
char * Test20(char *p, const char *in, unsigned n)
{
Index: llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a/clang/test/Sema/warn-strlcpycat-size.c
===================================================================
--- llvm-toolchain-snapshot_12~++20201029014435+d6d6fdb068a.orig/clang/test/Sema/warn-strlcpycat-size.c
+++ /dev/null
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -Wstrlcpy-strlcat-size -verify -fsyntax-only %s
-
-typedef __SIZE_TYPE__ size_t;
-size_t strlcpy (char * restrict dst, const char * restrict src, size_t size);
-size_t strlcat (char * restrict dst, const char * restrict src, size_t size);
-size_t strlen (const char *s);
-
-char s1[100];
-char s2[200];
-char * s3;
-
-struct {
- char f1[100];
- char f2[100][3];
-} s4, **s5;
-
-int x;
-
-void f(void)
-{
- strlcpy(s1, s2, sizeof(s1)); // no warning
- strlcpy(s1, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy(s1, s3, strlen(s3)+1); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcat(s2, s3, sizeof(s3)); // expected-warning {{size argument in 'strlcat' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy(s4.f1, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy((*s5)->f2[x], s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
- strlcpy(s1+3, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Don't issue FIXIT for flexible arrays.
-struct S {
- int y;
- char x[];
-};
-
-void flexible_arrays(struct S *s) {
- char str[] = "hi";
- strlcpy(s->x, str, sizeof(str)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Don't issue FIXIT for destinations of size 1.
-void size_1() {
- char z[1];
- char str[] = "hi";
-
- strlcpy(z, str, sizeof(str)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Support VLAs.
-void vlas(int size) {
- char z[size];
- char str[] = "hi";
-
- strlcpy(z, str, sizeof(str)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-}