summaryrefslogtreecommitdiff
path: root/explicit_bzero.c
diff options
context:
space:
mode:
authorHiltjo Posthuma <hiltjo@codemadness.org>2016-07-31 13:43:00 +0200
committerHiltjo Posthuma <hiltjo@codemadness.org>2016-08-13 09:58:00 +0200
commita7afade1701a809f6a33b53525d59dd29b38d381 (patch)
tree45bb7250f76f0ed0261354ae313c4f0c3a561eb6 /explicit_bzero.c
parent65b8d5278882310eed758e6fbfd6ab9676db883c (diff)
downloadslock-a7afade1701a809f6a33b53525d59dd29b38d381.tar.gz
slock-a7afade1701a809f6a33b53525d59dd29b38d381.tar.xz
clear passwords with explicit_bzero
Make sure to explicitly clear memory that is used for password input. memset is often optimized out by the compiler. Brought to attention by the OpenBSD community, see: https://marc.info/?t=146989502600003&r=1&w=2 Thread subject: x11/slock: clear passwords with explicit_bzero Changes: - explicit_bzero.c import from libressl-portable. - Makefile: add COMPATSRC for compatibility src. - config.mk: add separate *BSD section in config.mk to simply uncomment it on these platforms.
Diffstat (limited to 'explicit_bzero.c')
-rw-r--r--explicit_bzero.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/explicit_bzero.c b/explicit_bzero.c
new file mode 100644
index 0000000..3e33ca8
--- /dev/null
+++ b/explicit_bzero.c
@@ -0,0 +1,19 @@
+/* $OpenBSD: explicit_bzero.c,v 1.3 2014/06/21 02:34:26 matthew Exp $ */
+/*
+ * Public domain.
+ * Written by Matthew Dempsky.
+ */
+
+#include <string.h>
+
+__attribute__((weak)) void
+__explicit_bzero_hook(void *buf, size_t len)
+{
+}
+
+void
+explicit_bzero(void *buf, size_t len)
+{
+ memset(buf, 0, len);
+ __explicit_bzero_hook(buf, len);
+}