Recientemente, durante una revisión de código, un desarrollador senior me pidió que reemplazara un puntero con una instancia de estructura en un método de utilidad. Me pidió que lo hiciera por razones de seguridad. Una de las razones por las que podía pensar era que las instancias de la estructura se limpiarían gracias a la pila de instrucciones, pero el valor del puntero no. ¿Hay alguna otra razon? ¿No podría un atacante acceder a mi memoria en cualquiera de los dos casos?
EDITAR: Agregando el fragmento de código:
static void make_digest( const EVP_MD *md, char *header, char *message,unsigned char *digest)
{
EVP_MD_CTX *mdctx;
unsigned int digest_len = 0;
EVP_MD_CTX_init(mdctx);
EVP_DigestInit_ex(mdctx, md, NULL);
EVP_DigestUpdate(mdctx, header, strlen( header ));
EVP_DigestUpdate(mdctx, message, 32);
EVP_DigestFinal_ex(mdctx, digest, &digest_len);
EVP_MD_CTX_cleanup(mdctx);
return;
}