From 6b11077f09c7990740d82c020b97c3819747effb Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Sun, 30 Jul 2023 13:18:03 +0200 Subject: [PATCH] memzero.h: Move memzero() and strzero() to their own header MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Cc: Christian Göttsche Cc: Serge Hallyn Cc: Iker Pedrosa Signed-off-by: Alejandro Colomar --- lib/Makefile.am | 1 + lib/commonio.c | 1 + lib/defines.h | 14 -------------- lib/failure.c | 3 +++ lib/groupmem.c | 1 + lib/limits.c | 1 + lib/log.c | 1 + lib/loginprompt.c | 1 + lib/memzero.h | 33 +++++++++++++++++++++++++++++++++ lib/obscure.c | 1 + lib/pwauth.c | 1 + lib/pwmem.c | 1 + lib/sgroupio.c | 1 + lib/shadowmem.c | 1 + src/chage.c | 1 + src/faillog.c | 1 + src/gpasswd.c | 1 + src/groupadd.c | 1 + src/lastlog.c | 1 + src/login.c | 1 + src/passwd.c | 1 + src/sulogin.c | 1 + src/useradd.c | 1 + src/usermod.c | 1 + 24 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 lib/memzero.h diff --git a/lib/Makefile.am b/lib/Makefile.am index ca73313dc..e778004e7 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -85,6 +85,7 @@ libshadow_la_SOURCES = \ mail.c \ mempcpy.c \ mempcpy.h \ + memzero.h \ motd.c \ myname.c \ nss.c \ diff --git a/lib/commonio.c b/lib/commonio.c index c6459a2ec..6d744ad14 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -23,6 +23,7 @@ #include #include "alloc.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #ifdef WITH_TCB diff --git a/lib/defines.h b/lib/defines.h index b289a72df..a24a0c7d3 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -47,20 +47,6 @@ #include #include -#ifdef HAVE_MEMSET_EXPLICIT -# define memzero(ptr, size) memset_explicit((ptr), 0, (size)) -#elif defined HAVE_EXPLICIT_BZERO /* !HAVE_MEMSET_S */ -# define memzero(ptr, size) explicit_bzero((ptr), (size)) -#else /* !HAVE_MEMSET_S && HAVE_EXPLICIT_BZERO */ -static inline void memzero(void *ptr, size_t size) -{ - ptr = memset(ptr, '\0', size); - __asm__ __volatile__ ("" : : "r"(ptr) : "memory"); -} -#endif /* !HAVE_MEMSET_S && !HAVE_EXPLICIT_BZERO */ - -#define strzero(s) memzero(s, strlen(s)) /* warning: evaluates twice */ - #include /* diff --git a/lib/failure.c b/lib/failure.c index 205eec9ca..1d2d910ab 100644 --- a/lib/failure.c +++ b/lib/failure.c @@ -17,7 +17,10 @@ #include "defines.h" #include "faillog.h" #include "failure.h" +#include "memzero.h" #include "prototypes.h" + + #define YEAR (365L*DAY) /* * failure - make failure entry diff --git a/lib/groupmem.c b/lib/groupmem.c index a1e18dca0..271724fbd 100644 --- a/lib/groupmem.c +++ b/lib/groupmem.c @@ -13,6 +13,7 @@ #ident "$Id$" #include "alloc.h" +#include "memzero.h" #include "prototypes.h" #include "defines.h" #include "groupio.h" diff --git a/lib/limits.c b/lib/limits.c index ef8cb9209..96998e9e8 100644 --- a/lib/limits.c +++ b/lib/limits.c @@ -29,6 +29,7 @@ #include "getdef.h" #include "shadowlog.h" #include +#include "memzero.h" #ifndef LIMITS_FILE #define LIMITS_FILE "/etc/limits" #endif diff --git a/lib/log.c b/lib/log.c index fb867b274..8b3e564e5 100644 --- a/lib/log.c +++ b/lib/log.c @@ -17,6 +17,7 @@ #include #include "defines.h" #include +#include "memzero.h" #include "prototypes.h" /* diff --git a/lib/loginprompt.c b/lib/loginprompt.c index d1af0e398..bf8c3cdda 100644 --- a/lib/loginprompt.c +++ b/lib/loginprompt.c @@ -16,6 +16,7 @@ #include #include "alloc.h" +#include "memzero.h" #include "prototypes.h" #include "defines.h" #include "getdef.h" diff --git a/lib/memzero.h b/lib/memzero.h new file mode 100644 index 000000000..00000b9c4 --- /dev/null +++ b/lib/memzero.h @@ -0,0 +1,33 @@ +/* + * SPDX-FileCopyrightText: 2022-2023, Christian Göttsche + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIBMISC_MEMZERO_H_ +#define SHADOW_INCLUDE_LIBMISC_MEMZERO_H_ + + +#include + +#include +#include +#include + + +#ifdef HAVE_MEMSET_EXPLICIT +# define memzero(ptr, size) memset_explicit((ptr), 0, (size)) +#elif defined HAVE_EXPLICIT_BZERO /* !HAVE_MEMSET_S */ +# define memzero(ptr, size) explicit_bzero((ptr), (size)) +#else /* !HAVE_MEMSET_S && HAVE_EXPLICIT_BZERO */ +static inline void memzero(void *ptr, size_t size) +{ + ptr = memset(ptr, '\0', size); + __asm__ __volatile__ ("" : : "r"(ptr) : "memory"); +} +#endif /* !HAVE_MEMSET_S && !HAVE_EXPLICIT_BZERO */ + +#define strzero(s) memzero(s, strlen(s)) /* warning: evaluates twice */ + + +#endif // include guard diff --git a/lib/obscure.c b/lib/obscure.c index 88a877356..ccffb71db 100644 --- a/lib/obscure.c +++ b/lib/obscure.c @@ -21,6 +21,7 @@ #include #include "alloc.h" +#include "memzero.h" #include "prototypes.h" #include "defines.h" #include "getdef.h" diff --git a/lib/pwauth.c b/lib/pwauth.c index df67b04e1..693b3b7df 100644 --- a/lib/pwauth.c +++ b/lib/pwauth.c @@ -20,6 +20,7 @@ #include #include "prototypes.h" #include "defines.h" +#include "memzero.h" #include "pwauth.h" #include "getdef.h" #ifdef SKEY diff --git a/lib/pwmem.c b/lib/pwmem.c index 4e966a424..3d868a850 100644 --- a/lib/pwmem.c +++ b/lib/pwmem.c @@ -16,6 +16,7 @@ #include "alloc.h" #include "defines.h" +#include "memzero.h" #include "prototypes.h" #include "pwio.h" diff --git a/lib/sgroupio.c b/lib/sgroupio.c index 02ff95a11..cbbdff788 100644 --- a/lib/sgroupio.c +++ b/lib/sgroupio.c @@ -19,6 +19,7 @@ #include "defines.h" #include "commonio.h" #include "getdef.h" +#include "memzero.h" #include "sgroupio.h" /*@null@*/ /*@only@*/struct sgrp *__sgr_dup (const struct sgrp *sgent) diff --git a/lib/shadowmem.c b/lib/shadowmem.c index 93bcb12dd..c3c7c4cc3 100644 --- a/lib/shadowmem.c +++ b/lib/shadowmem.c @@ -18,6 +18,7 @@ #include #include "alloc.h" +#include "memzero.h" #include "shadowio.h" /*@null@*/ /*@only@*/struct spwd *__spw_dup (const struct spwd *spent) diff --git a/src/chage.c b/src/chage.c index b11ed3d89..b8a11e8c4 100644 --- a/src/chage.c +++ b/src/chage.c @@ -29,6 +29,7 @@ #include "alloc.h" #include "prototypes.h" #include "defines.h" +#include "memzero.h" #include "pwio.h" #include "shadowio.h" #include "shadowlog.h" diff --git a/src/faillog.c b/src/faillog.c index 1fee5c9b0..ab60775a4 100644 --- a/src/faillog.c +++ b/src/faillog.c @@ -20,6 +20,7 @@ #include #include "defines.h" #include "faillog.h" +#include "memzero.h" #include "prototypes.h" /*@-exitarg@*/ #include "exitcodes.h" diff --git a/src/gpasswd.c b/src/gpasswd.c index 3b76ff8ed..853cb03ae 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -23,6 +23,7 @@ #include "alloc.h" #include "defines.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" diff --git a/src/groupadd.c b/src/groupadd.c index 2eda1c680..462a4ccd2 100644 --- a/src/groupadd.c +++ b/src/groupadd.c @@ -27,6 +27,7 @@ #include "defines.h" #include "getdef.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" diff --git a/src/lastlog.c b/src/lastlog.c index 1db668871..cd80de2e8 100644 --- a/src/lastlog.c +++ b/src/lastlog.c @@ -25,6 +25,7 @@ #include "defines.h" #include "prototypes.h" #include "getdef.h" +#include "memzero.h" /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" diff --git a/src/login.c b/src/login.c index 8a109801b..84002232d 100644 --- a/src/login.c +++ b/src/login.c @@ -30,6 +30,7 @@ #include "faillog.h" #include "failure.h" #include "getdef.h" +#include "memzero.h" #include "prototypes.h" #include "pwauth.h" /*@-exitarg@*/ diff --git a/src/passwd.c b/src/passwd.c index 5d59e8c4b..a89790db6 100644 --- a/src/passwd.c +++ b/src/passwd.c @@ -23,6 +23,7 @@ #include "alloc.h" #include "defines.h" #include "getdef.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" diff --git a/src/sulogin.c b/src/sulogin.c index 080b92f10..14bec6ae7 100644 --- a/src/sulogin.c +++ b/src/sulogin.c @@ -18,6 +18,7 @@ #include #include "defines.h" #include "getdef.h" +#include "memzero.h" #include "prototypes.h" #include "pwauth.h" /*@-exitarg@*/ diff --git a/src/useradd.c b/src/useradd.c index 11d0bc9cb..76a4d6495 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -42,6 +42,7 @@ #include "faillog.h" #include "getdef.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" diff --git a/src/usermod.c b/src/usermod.c index 61cd11a8d..72a98f1f8 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -37,6 +37,7 @@ #include "faillog.h" #include "getdef.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" -- 2.47.2