Falhas do tipo CWE-562

8 resultados

Retorno de endereço de variável de pilha

A função retorna o endereço de memória de uma variável local (alocada na pilha), que deixa de existir quando a função termina. Quem chama a função fica com um ponteiro inválido apontando para memória que pode ser sobrescrita, causando corrupção de dados ou execução de código arbitrário.

Exemplo

Uma função em C retorna `&variavel_local` onde `variavel_local` é declarada no escopo da função. Após a função retornar, esse endereço aponta para espaço de pilha reutilizável por outras chamadas, levando a leitura ou escrita de dados não pretendidos.

Como mitigar

Alocar a variável no heap com `malloc()` e retornar o ponteiro (ou usar RAII em C++), ou refatorar para retornar o valor diretamente em vez do endereço. Em análise estática, ferramentas como `-fstack-protector` e linters avisam sobre esse padrão.