Compartir a través de


C6203

Actualización: noviembre 2007

C6203

Advertencia C6203: Saturación de búfer para el búfer fuera de pila <variable> en la llamada a <función>: la longitud <tamaño> supera el tamaño de búfer

Esta advertencia indica que un parámetro que señala a un búfer no de pila de tamaño conocido se pasa a una función que copia más bytes en él de los que caben. Esta situación producirá una saturación del búfer.

Este defecto podría provocar una carencia de seguridad explotable o un bloqueo del programa.

Ejemplo

El código siguiente genera las advertencias C6203 y C6386. Ambas advertencias indican el problema de saturación del búfer porque se pasó un parámetro incorrecto (sizeofintArray) a la función:

#include <memory.h>
void f( )
{
  static char charArray[5];
  static int intArray[5];

  memset ((void *)charArray, 0, sizeof intArray);
  // code ...
}

Para corregir ambas advertencias, pase el tamaño correcto utilizando sizeofcharArray como se muestra en el código siguiente:

void f( )
{
  static char charArray[5];
   
  memset ((void *)charArray, 0, sizeof charArray);
  // code ...
}

En el código siguiente, el parámetro de función char *pC se anota utilizando la propiedad WritableElementsLength. El número real de elementos que se pueden escribir en pC es el número de elementos del búfer char *pCLen. En este caso, la advertencia C6203 se genera en el sitio de la llamada porque pCLen tiene más elementos que el parámetro de escritura pC.

#include <malloc.h>
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;

void f([Pre(WritableElementsLength="pCLen")] char *pC, char *pCLen);

void test_f( )
{
  char *pChar = ( char * ) malloc ( 10 );
  char buff[15];
  test_f ( pChar, buff ); // warning 6203
  // code ...
}

La advertencia C6202 se emite para los búferes de pila.

Vea también

Referencia

C6202

C6386