Hi,

I noted that in libsa, explicit_bzero just calls bzero.

Giving that now we support softraid fulldisk encryption, a compiler
optimisation could make the current version of explicit_bzero in libsa
going nop, leaving encryption keys (or other sensible material) in
memory.

The following patch copy libkern code for explicit_bzero into libsa.

Comments ? OK ?
-- 
Sebastien Marie

Index: explicit_bzero.c
===================================================================
RCS file: /cvs/src/sys/lib/libsa/explicit_bzero.c,v
retrieving revision 1.1
diff -u -p -r1.1 explicit_bzero.c
--- explicit_bzero.c    9 Oct 2012 12:03:51 -0000       1.1
+++ explicit_bzero.c    18 Sep 2015 10:01:06 -0000
@@ -6,11 +6,19 @@
 
 #include <lib/libsa/stand.h>
 
+__attribute__((weak)) void __explicit_bzero_hook(void *, size_t);
+
+__attribute__((weak)) void
+__explicit_bzero_hook(void *buf, size_t len)
+{
+}
+
 /*
  * explicit_bzero - don't let the compiler optimize away bzero
  */
 void
 explicit_bzero(void *p, size_t n)
 {
-       bzero(p, n);
+       memset(p, 0, n);
+       __explicit_bzero_hook(p, n);
 }

Reply via email to