std.cfg, windows.cfg: Move strcpy_s from windows.cfg to std.cfg.
strcpy_s belongs to the standard so it must be in std.cfg instead of windows.cfg. Configuration for strcpy_s has been improved and tests were added. Found by daca@home
This commit is contained in:
parent
fda0f52424
commit
df73f7f355
19
cfg/std.cfg
19
cfg/std.cfg
|
@ -4643,6 +4643,25 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun
|
||||||
<strz/>
|
<strz/>
|
||||||
</arg>
|
</arg>
|
||||||
</function>
|
</function>
|
||||||
|
<!-- errno_t strcpy_s(char *restrict dest, rsize_t destsz, const char *restrict src); // since C11 -->
|
||||||
|
<function name="strcpy_s">
|
||||||
|
<noreturn>false</noreturn>
|
||||||
|
<returnValue type="errno_t"/>
|
||||||
|
<leak-ignore/>
|
||||||
|
<arg nr="1" direction="out">
|
||||||
|
<not-null/>
|
||||||
|
<minsize type="argvalue" arg="2"/>
|
||||||
|
</arg>
|
||||||
|
<arg nr="2" direction="in">
|
||||||
|
<not-uninit/>
|
||||||
|
<valid>1:</valid>
|
||||||
|
</arg>
|
||||||
|
<arg nr="3" direction="in">
|
||||||
|
<not-null/>
|
||||||
|
<not-uninit/>
|
||||||
|
<strz/>
|
||||||
|
</arg>
|
||||||
|
</function>
|
||||||
<!-- wchar_t *wcscpy(wchar_t *deststr, const wchar_t *srcstr); -->
|
<!-- wchar_t *wcscpy(wchar_t *deststr, const wchar_t *srcstr); -->
|
||||||
<function name="wcscpy,std::wcscpy">
|
<function name="wcscpy,std::wcscpy">
|
||||||
<returnValue type="wchar_t *"/>
|
<returnValue type="wchar_t *"/>
|
||||||
|
|
|
@ -2220,10 +2220,9 @@ HFONT CreateFont(
|
||||||
<not-uninit/>
|
<not-uninit/>
|
||||||
</arg>
|
</arg>
|
||||||
</function>
|
</function>
|
||||||
<!-- errno_t strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource);
|
<!-- errno_t wcscpy_s(wchar_t *strDestination, size_t numberOfElements, const wchar_t *strSource);
|
||||||
errno_t wcscpy_s(wchar_t *strDestination, size_t numberOfElements, const wchar_t *strSource);
|
|
||||||
errno_t _mbscpy_s(unsigned char *strDestination, size_t numberOfElements, const unsigned char *strSource); -->
|
errno_t _mbscpy_s(unsigned char *strDestination, size_t numberOfElements, const unsigned char *strSource); -->
|
||||||
<function name="strcpy_s,wcscpy_s,_mbscpy_s,_tcscpy_s">
|
<function name="wcscpy_s,_mbscpy_s,_tcscpy_s">
|
||||||
<noreturn>false</noreturn>
|
<noreturn>false</noreturn>
|
||||||
<returnValue type="errno_t"/>
|
<returnValue type="errno_t"/>
|
||||||
<leak-ignore/>
|
<leak-ignore/>
|
||||||
|
|
|
@ -44,6 +44,8 @@ void bufferAccessOutOfBounds(void)
|
||||||
// cppcheck-suppress bufferAccessOutOfBounds
|
// cppcheck-suppress bufferAccessOutOfBounds
|
||||||
// TODO cppcheck-suppress redundantCopy
|
// TODO cppcheck-suppress redundantCopy
|
||||||
strcpy(a, "abcde");
|
strcpy(a, "abcde");
|
||||||
|
// cppcheck-suppress bufferAccessOutOfBounds
|
||||||
|
strcpy_s(a, 10, "abcdefghij");
|
||||||
// TODO cppcheck-suppress redundantCopy
|
// TODO cppcheck-suppress redundantCopy
|
||||||
strncpy(a,"abcde",5);
|
strncpy(a,"abcde",5);
|
||||||
// cppcheck-suppress bufferAccessOutOfBounds
|
// cppcheck-suppress bufferAccessOutOfBounds
|
||||||
|
@ -191,6 +193,10 @@ void nullpointer(int value)
|
||||||
// cppcheck-suppress nullPointer
|
// cppcheck-suppress nullPointer
|
||||||
wcscmp(0,0);
|
wcscmp(0,0);
|
||||||
// cppcheck-suppress nullPointer
|
// cppcheck-suppress nullPointer
|
||||||
|
strcpy_s(0,1,1);
|
||||||
|
// cppcheck-suppress nullPointer
|
||||||
|
strcpy_s(1,1,0);
|
||||||
|
// cppcheck-suppress nullPointer
|
||||||
strncpy(0,0,1);
|
strncpy(0,0,1);
|
||||||
// cppcheck-suppress nullPointer
|
// cppcheck-suppress nullPointer
|
||||||
strncpy_s(0,1,1,1);
|
strncpy_s(0,1,1,1);
|
||||||
|
@ -2956,6 +2962,16 @@ void uninitvar_strcpy(void)
|
||||||
(void)strcpy(str1,str2);
|
(void)strcpy(str1,str2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void uninitvar_strcpy_s(char * strDest)
|
||||||
|
{
|
||||||
|
char *strUninit1;
|
||||||
|
char *strUninit2;
|
||||||
|
// cppcheck-suppress uninitvar
|
||||||
|
(void)strcpy_s(strUninit1, 1, "a");
|
||||||
|
// cppcheck-suppress uninitvar
|
||||||
|
(void)strcpy_s(strDest, 1, strUninit2);
|
||||||
|
}
|
||||||
|
|
||||||
void uninitvar_wcscpy(void)
|
void uninitvar_wcscpy(void)
|
||||||
{
|
{
|
||||||
wchar_t *str1;
|
wchar_t *str1;
|
||||||
|
@ -3822,6 +3838,9 @@ void invalidFunctionArg(char c)
|
||||||
(void)toupper(c);
|
(void)toupper(c);
|
||||||
(void)toupper(0);
|
(void)toupper(0);
|
||||||
(void)toupper(255);
|
(void)toupper(255);
|
||||||
|
|
||||||
|
/* cppcheck-suppress invalidFunctionArg */
|
||||||
|
(void)strcpy_s(1,0,"a");
|
||||||
}
|
}
|
||||||
|
|
||||||
void invalidFunctionArgString(char c)
|
void invalidFunctionArgString(char c)
|
||||||
|
|
Loading…
Reference in New Issue