Compartilhar via


C6029

Aviso C6029: estouro de buffer possível na chamada para <function>: uso de valor não-verificado

Este aviso indica que uma função que recebe um buffer e um tamanho está sendo passada um tamanho não-verificado.Os dados lidos de uma fonte externa não foram verificados para ver se são menores que o tamanho do buffer.Um invasor pode especificar intencionalmente um valor muito maior do que o esperado para o tamanho, o que resultará em um estouro de buffer.

Em geral, sempre que você lê dados de uma fonte externa não confiável, não deixe de verificar sua validade.Geralmente é apropriado verificar o tamanho para certificar-se que está no intervalo esperado.

Exemplo

O seguinte código gera este aviso chamando a função anotada ReadFile duas vezes.Após a primeira chamada, a propriedade do atributo Post marca o segundo parâmetro não confiável.Portanto, passar um valor não confiável na segunda chamada para ReadFile gera esse aviso conforme mostrado no código o seguir:

#include “windows.h”

bool f(HANDLE hFile)
{
    char buff[MAX_PATH];

    DWORD cbLen;
    DWORD cbRead;

    // Read the number of byte to read (cbLen).
    if (!ReadFile (hFile, &cbLen, sizeof (cbLen), &cbRead, NULL))  
    {
        return false;
    }
    // Read the bytes
    if (!ReadFile (hFile, buff, cbLen, &cbRead, NULL))  // warning 6029
    {
        return false;
    }

    return true;
}

Para corrigir este aviso, verifique o tamanho do buffer conforme mostrado no código o seguir:

bool f(HANDLE hFile)
{
    char buff[MAX_PATH];

    DWORD cbLen;
    DWORD cbRead;

    // Read the number of byte to read (cbLen).
    if (!ReadFile (hFile, &cbLen, sizeof (cbLen), &cbRead, NULL))  
    {
        return false;
    }
    // Ensure that there's enough space in the buffer to read that many bytes.
    if (cbLen > sizeof(buff))
    {
        return false;
    }
    // Read the bytes
    if (!ReadFile (hFile, buff, cbLen, &cbRead, NULL))  // warning 6029
    {
        return false;
    }

    return true;
}

Consulte também

Outros recursos

Visão geral de anotação