Patch from Tito to remove pwd_to_spwd (which we don't actually need), with some #ifdef removal from me.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -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 <limits.h> | |
| @@ -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); | |
| @@ -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 | |
| @@ -1,74 +0,0 @@ | |
| - | /* vi: set sw=4 ts=4: */ |
| - | /* |
| - | * Copyright 1989 - 1994, Julianne Frances Haugh <[email protected]> |
| - | * 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 <time.h> |
| - | #include <sys/types.h> |
| - | #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; |
| - | } |
| - | |
| @@ -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); | |
| } | |