Compartilhar via


C6202

Aviso C6202: saturação para <variável>, que possivelmente pilha alocada, na telefonar para <função>de buffer: comprimento <dimensionar>excede dimensionar do buffer <max>

Este aviso indica que está sendo passado um parâmetro apontando para um buffer de pilha de 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 tem probabilidade de causar uma falhar de programa ou de uma falhar de segurança pode ser explorada.

Exemplo

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

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

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

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

#include <memory.h>
void f( )
{
  char charArray[5];
 
  memset ((void *)charArray, 0, sizeof charArray);
}

O código a seguir, o parâmetro de função char *pC é anotado usando o WritableElementsLength propriedade. O número real de elemento gravável de pC é o número de elementos do buffer char *pCLen. Nesse caso, o aviso C6202 é gerado no local de telefonar porque pCLen tem mais elementos que o parâmetro gravável pC.

#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f([Pre(WritableElementsLength="pCLen") ] char *pC, char *pCLen);

void test_f()
{
  char pc[12]; 
  char buff[17];
  f(pc, buff); // warning 6202
  // code...
}

C6203 aviso é emitido para pilha não buffers.

Consulte também

Referência

C6386

C6203