Use freezero() for i2d_SSL_SESSION() - one line of code instead of three.
authorjsing <jsing@openbsd.org>
Mon, 10 Apr 2017 16:47:08 +0000 (16:47 +0000)
committerjsing <jsing@openbsd.org>
Mon, 10 Apr 2017 16:47:08 +0000 (16:47 +0000)
In this case the memory allocated can also be significant, in which case
freezero() will have less overhead than explicit_bzero() (munmap instead
of touching all of the memory to write zeros).

lib/libssl/ssl_asn1.c

index 4014bf6..5110ca3 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssl_asn1.c,v 1.49 2017/02/07 02:08:38 beck Exp $ */
+/* $OpenBSD: ssl_asn1.c,v 1.50 2017/04/10 16:47:08 jsing Exp $ */
 
 /*
  * Copyright (c) 2016 Joel Sing <jsing@openbsd.org>
@@ -205,12 +205,9 @@ i2d_SSL_SESSION(SSL_SESSION *s, unsigned char **pp)
        rv = (int)data_len;
 
  err:
-       if (data != NULL)
-               explicit_bzero(data, data_len);
-
        CBB_cleanup(&session);
+       freezero(data, data_len);
        free(peer_cert_bytes);
-       free(data);
 
        return rv;
 }