Compartilhar via


C6203

Aviso C6203: saturação de buffer para buffer <variável>na telefonar para <função>: comprimento <dimensionar>excede o dimensionar do buffer

Este aviso indica que está sendo passado um parâmetro que aponta para um buffer de pilha não do dimensionar conhecido em uma função que mais bytes são copiados para ela que esse dimensionar.Essa situação fará com que uma saturação de buffer.

Esse defeito pode causar uma falhar de programa ou de uma falhar de segurança pode ser explorada.

Exemplo

O código a seguir gera um aviso C6203 e C6386.Both warnings indicate buffer overrun problem because an incorrect parameter (sizeofintArray) is passed to the function:

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

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

To correct both warnings, pass correct size using sizeofcharArray as shown in the following code:

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

O código a seguir, o parâmetro de função char *pC anotações usando o WritableElementsLength propriedade. O número real de elemento gravável em pC é o número de elementos do buffer char *pCLen. Nesse caso, o aviso C6203 é gerado no local de telefonar porque pCLen tem mais elementos que o parâmetro gravável 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 ...
}

C6202 aviso é emitido para os buffers de pilha.

Consulte também

Referência

C6202

C6386