From ab7d9be17cd75772c015b8eab885e176f271691e Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Tue, 11 Jul 2006 16:19:17 +0000 Subject: [PATCH] Patch from Tito to remove pwd_to_spwd (which we don't actually need), with some #ifdef removal from me. --- include/libbb.h | 6 ----- libbb/Makefile.in | 1 - libbb/pwd2spwd.c | 74 ----------------------------------------------------- loginutils/passwd.c | 21 +++++---------- 4 files changed, 7 insertions(+), 95 deletions(-) delete mode 100644 libbb/pwd2spwd.c diff --git a/include/libbb.h b/include/libbb.h index af45511..0a52b64 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -38,12 +38,7 @@ #include "pwd_.h" #include "grp_.h" -#ifdef CONFIG_FEATURE_SHADOWPASSWDS #include "shadow_.h" -#endif -#ifdef CONFIG_FEATURE_SHA1_PASSWORDS -# include "sha1.h" -#endif /* Try to pull in PATH_MAX */ #include @@ -467,7 +462,6 @@ extern int restricted_shell ( const char *shell ); extern void setup_environment ( const char *shell, int loginshell, int changeenv, const struct passwd *pw ); extern int correct_password ( const struct passwd *pw ); extern char *pw_encrypt(const char *clear, const char *salt); -extern struct spwd *pwd_to_spwd(const struct passwd *pw); extern int obscure(const char *old, const char *newval, const struct passwd *pwdp); extern int bb_xopen(const char *pathname, int flags); diff --git a/libbb/Makefile.in b/libbb/Makefile.in index 0324ec0..cae7f99 100644 --- a/libbb/Makefile.in +++ b/libbb/Makefile.in @@ -38,7 +38,6 @@ LIBBB-y:= \ bb_do_delay.c # conditionally compiled objects: -LIBBB-$(CONFIG_FEATURE_SHADOWPASSWDS)+=pwd2spwd.c LIBBB-$(CONFIG_FEATURE_MOUNT_LOOP)+= loop.c LIBBB-$(CONFIG_LOSETUP)+= loop.c LIBBB-$(CONFIG_FEATURE_MTAB_SUPPORT)+= mtab.c diff --git a/libbb/pwd2spwd.c b/libbb/pwd2spwd.c deleted file mode 100644 index 3dd625b..0000000 --- a/libbb/pwd2spwd.c +++ /dev/null @@ -1,74 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Copyright 1989 - 1994, Julianne Frances Haugh - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Julianne F. Haugh nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include "libbb.h" -#include "shadow_.h" - -/* - * pwd_to_spwd - create entries for new spwd structure - * - * pwd_to_spwd() creates a new (struct spwd) containing the - * information in the pointed-to (struct passwd). - */ -#define DAY (24L*3600L) -#define WEEK (7*DAY) -#define SCALE DAY -struct spwd *pwd_to_spwd(const struct passwd *pw) -{ - static struct spwd sp; - - /* - * Nice, easy parts first. The name and passwd map directly - * from the old password structure to the new one. - */ - sp.sp_namp = pw->pw_name; - sp.sp_pwdp = pw->pw_passwd; - - /* - * Defaults used if there is no pw_age information. - */ - sp.sp_min = 0; - sp.sp_max = (10000L * DAY) / SCALE; - sp.sp_lstchg = time((time_t *) 0) / SCALE; - - /* - * These fields have no corresponding information in the password - * file. They are set to uninitialized values. - */ - sp.sp_warn = -1; - sp.sp_expire = -1; - sp.sp_inact = -1; - sp.sp_flag = -1; - - return &sp; -} - diff --git a/loginutils/passwd.c b/loginutils/passwd.c index a1ad02b..607e8fd 100644 --- a/loginutils/passwd.c +++ b/loginutils/passwd.c @@ -146,9 +146,6 @@ int passwd_main(int argc, char **argv) int dflg = 0; /* -d - delete password */ const struct passwd *pw; -#if ENABLE_FEATURE_SHADOWPASSWDS - const struct spwd *sp; -#endif amroot = (getuid() == 0); openlog("passwd", LOG_PID | LOG_CONS | LOG_NOWAIT, LOG_AUTH); while ((flag = getopt(argc, argv, "a:dlu")) != EOF) { @@ -187,18 +184,13 @@ int passwd_main(int argc, char **argv) syslog(LOG_WARNING, "can't change pwd for `%s'", name); bb_error_msg_and_die("Permission denied.\n"); } -#if ENABLE_FEATURE_SHADOWPASSWDS - sp = getspnam(name); - if (!sp) { - sp = (struct spwd *) pwd_to_spwd(pw); - } - cp = sp->sp_pwdp; - np = sp->sp_namp; -#else - cp = pw->pw_passwd; - np = name; -#endif + if (ENABLE_FEATURE_SHADOWPASSWDS) { + struct spwd *sp = getspnam(name); + if (!sp) bb_error_msg_and_die("Unknown user %s", name); + cp = sp->sp_pwdp; + } else cp = pw->pw_passwd; + np = name; safe_strncpy(crypt_passwd, cp, sizeof(crypt_passwd)); if (!(dflg || lflg || uflg)) { if (!amroot) { @@ -243,6 +235,7 @@ int passwd_main(int argc, char **argv) syslog(LOG_WARNING, "an error occurred updating the password file"); bb_error_msg_and_die("An error occurred updating the password file.\n"); } + if (ENABLE_FEATURE_CLEAN_UP) free(myname); return (0); } -- 2.7.4