xref: /llvm-project/clang/test/Analysis/cstring-syntax-weird2.c (revision 0dd49a5628bbe01cecf6516017da59ae44863ab3)
1630f7dafSArtem Dergachev // RUN: %clang_analyze_cc1 -w -analyzer-checker=unix.cstring.BadSizeArg \
2630f7dafSArtem Dergachev // RUN:                    -verify %s
3630f7dafSArtem Dergachev 
4630f7dafSArtem Dergachev // expected-no-diagnostics
5630f7dafSArtem Dergachev 
6630f7dafSArtem Dergachev typedef __SIZE_TYPE__ size_t;
7630f7dafSArtem Dergachev // The last parameter is normally size_t but the test is about the abnormal
8630f7dafSArtem Dergachev // situation when it's not a size_t.
9*0dd49a56SAaron Ballman size_t strlcpy(char *, const char *, void (*)(void));
10630f7dafSArtem Dergachev 
11*0dd49a56SAaron Ballman void foo(void);
12630f7dafSArtem Dergachev 
testWeirdDecls(const char * src)13630f7dafSArtem Dergachev void testWeirdDecls(const char *src) {
14630f7dafSArtem Dergachev   char dst[10];
15630f7dafSArtem Dergachev   strlcpy(dst, src, foo); // no-crash
16630f7dafSArtem Dergachev   strlcpy(dst, src, &foo); // no-crash
17630f7dafSArtem Dergachev }
18