summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/libbb.h7
-rw-r--r--init/init.c2
-rw-r--r--libbb/correct_password.c11
-rw-r--r--loginutils/passwd.c5
4 files changed, 15 insertions, 10 deletions
diff --git a/include/libbb.h b/include/libbb.h
index e99bb928f..64167bba3 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1300,9 +1300,10 @@ int sd_listen_fds(void);
#define SETUP_ENV_CLEARENV (1 << 1)
#define SETUP_ENV_TO_TMP (1 << 2)
#define SETUP_ENV_NO_CHDIR (1 << 4)
-extern void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC;
-extern int ask_and_check_password_extended(const struct passwd *pw, int timeout, const char *prompt) FAST_FUNC;
-extern int ask_and_check_password(const struct passwd *pw) FAST_FUNC;
+void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC;
+void nuke_str(char *str) FAST_FUNC;
+int ask_and_check_password_extended(const struct passwd *pw, int timeout, const char *prompt) FAST_FUNC;
+int ask_and_check_password(const struct passwd *pw) FAST_FUNC;
/* Returns a malloced string */
#if !ENABLE_USE_BB_CRYPT
#define pw_encrypt(clear, salt, cleanup) pw_encrypt(clear, salt)
diff --git a/init/init.c b/init/init.c
index 2dcdfd471..c63bba1ff 100644
--- a/init/init.c
+++ b/init/init.c
@@ -1128,7 +1128,7 @@ int init_main(int argc UNUSED_PARAM, char **argv)
strncpy(argv[0], "init", strlen(argv[0]));
/* Wipe argv[1]-argv[N] so they don't clutter the ps listing */
while (*++argv)
- memset(*argv, 0, strlen(*argv));
+ nuke_str(*argv);
/* Set up signal handlers */
if (!DEBUG_INIT) {
diff --git a/libbb/correct_password.c b/libbb/correct_password.c
index d39a5839c..5727c65fb 100644
--- a/libbb/correct_password.c
+++ b/libbb/correct_password.c
@@ -30,6 +30,15 @@
#include "libbb.h"
+void FAST_FUNC nuke_str(char *str)
+{
+ if (str) {
+ while (*str)
+ *str++ = 0;
+ /* or: memset(str, 0, strlen(str)); - not as small as above */
+ }
+}
+
/* Ask the user for a password.
* Return 1 without asking if PW has an empty password.
* Return -1 on EOF, error while reading input, or timeout.
@@ -76,7 +85,7 @@ int FAST_FUNC ask_and_check_password_extended(const struct passwd *pw,
encrypted = pw_encrypt(unencrypted, correct, 1);
r = (strcmp(encrypted, correct) == 0);
free(encrypted);
- memset(unencrypted, 0, strlen(unencrypted));
+ nuke_str(unencrypted);
return r;
}
diff --git a/loginutils/passwd.c b/loginutils/passwd.c
index a7006f054..150908932 100644
--- a/loginutils/passwd.c
+++ b/loginutils/passwd.c
@@ -17,11 +17,6 @@
#include <syslog.h>
#include <sys/resource.h> /* setrlimit */
-static void nuke_str(char *str)
-{
- if (str) memset(str, 0, strlen(str));
-}
-
static char* new_password(const struct passwd *pw, uid_t myuid, const char *algo)
{
char salt[MAX_PW_SALT_LEN];