Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Buffer overrun due to conversion of an element count into a byte count: an element count is expected for parameter
*parameter_name*
in call to*function_name*
This warning indicates that a non-constant byte count is being passed when an element count is instead required.
Remarks
Typically, this warning occurs when a variable is multiplied by the sizeof
a type. This issue will likely result in more bytes being copied to the buffer than it can hold.
Code analysis name: ELEMENTS_TO_BYTES
Example
The following code generates this warning. wcsncpy
will allow n * sizeof(wchar_t)
characters to be copied, but the buffer can only hold n
characters. It should be noted that wcsncpy
is an unsafe function, and shouldn't be used per C28719. The unsafe variant is used here only for the purposes of demonstrating this warning:
void f(wchar_t* t, wchar_t* s, int n)
{
wcsncpy (t, s, n*sizeof(wchar_t));
}
The following code corrects this warning by sending element count instead of the byte count:
void f( wchar_t* t, wchar_t* s, int n )
{
wcsncpy (t, s, n);
}