Recentemente durante una revisione del codice, uno sviluppatore senior mi ha chiesto di sostituire un puntatore con istanza di struttura in un metodo di utilità. Mi ha chiesto di farlo per motivi di sicurezza. Una ragione per cui potevo pensare era che le istanze della struttura si sarebbero ripulite grazie allo stack di istruzioni, ma il valore del puntatore non lo avrebbe fatto. C'è qualche altra ragione? Un utente malintenzionato non potrebbe accedere alla mia memoria in nessuno dei due casi?
EDIT: Aggiunta dello snippet di codice:
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;
}