author | Denys Vlasenko <vda.linux@googlemail.com> | 2013-11-19 12:36:45 (GMT) |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2013-11-19 12:36:45 (GMT) |
commit | 8b59b2c13ededb2c82e36193b6d6e969df36531c (patch) | |
tree | 7b5065279d3c5a6c8bd0ca90584d49bb73aac01c | |
parent | 6ef77291122d231754e7292630681dc67c109d60 (diff) | |
download | busybox-8b59b2c13ededb2c82e36193b6d6e969df36531c.zip busybox-8b59b2c13ededb2c82e36193b6d6e969df36531c.tar.gz busybox-8b59b2c13ededb2c82e36193b6d6e969df36531c.tar.bz2 |
libbb: move nuke_str() from passwd into libbb
function old new delta
nuke_str - 15 +15
ask_and_check_password_extended 215 206 -9
init_main 781 771 -10
nuke_str 27 - -27
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/2 up/down: 15/-46) Total: -31 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | include/libbb.h | 7 | ||||
-rw-r--r-- | init/init.c | 2 | ||||
-rw-r--r-- | libbb/correct_password.c | 11 | ||||
-rw-r--r-- | loginutils/passwd.c | 5 |
4 files changed, 15 insertions, 10 deletions
diff --git a/include/libbb.h b/include/libbb.h index e99bb92..64167bb 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 2dcdfd4..c63bba1 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 d39a583..5727c65 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 a7006f0..1509089 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]; |