buffer: Rewrite ssh_buffer_free()

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit c1c32bda14)
This commit is contained in:
Andreas Schneider
2018-08-31 16:52:33 +02:00
parent 177a082974
commit 26fa923b55

View File

@@ -129,18 +129,22 @@ struct ssh_buffer_struct *ssh_buffer_new(void) {
* *
* \param[in] buffer The buffer to free. * \param[in] buffer The buffer to free.
*/ */
void ssh_buffer_free(struct ssh_buffer_struct *buffer) { void ssh_buffer_free(struct ssh_buffer_struct *buffer)
{
if (buffer == NULL) { if (buffer == NULL) {
return; return;
} }
buffer_verify(buffer); buffer_verify(buffer);
if (buffer->data) { if (buffer->secure && buffer->allocated > 0) {
/* burn the data */ /* burn the data */
explicit_bzero(buffer->data, buffer->allocated); explicit_bzero(buffer->data, buffer->allocated);
SAFE_FREE(buffer->data); SAFE_FREE(buffer->data);
}
explicit_bzero(buffer, sizeof(struct ssh_buffer_struct)); explicit_bzero(buffer, sizeof(struct ssh_buffer_struct));
} else {
SAFE_FREE(buffer->data);
}
SAFE_FREE(buffer); SAFE_FREE(buffer);
} }