From 3e2a9cc21d5ef6995013665d9a68a07cfdcb469e Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 1 Jan 2007 23:27:16 +0000 Subject: replace our no_shadow fix with a better patch from upstream (#1118) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5961 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/busybox/patches/110-no_shadow.patch | 232 +++++++++++++++++++++++++++- 1 file changed, 225 insertions(+), 7 deletions(-) diff --git a/package/busybox/patches/110-no_shadow.patch b/package/busybox/patches/110-no_shadow.patch index ef873c1de..f0c61a0bd 100644 --- a/package/busybox/patches/110-no_shadow.patch +++ b/package/busybox/patches/110-no_shadow.patch @@ -1,12 +1,230 @@ ---- busybox-1.3.1-old/include/libbb.h 2006-12-27 05:56:18.000000000 +0100 -+++ busybox-1.3.1/include/libbb.h 2006-12-28 07:08:09.000000000 +0100 -@@ -51,9 +51,7 @@ +--- busybox-1.3.1/include/libbb.h Wed Dec 27 05:56:18 2006 ++++ busybox-1.3.1.shadow/include/libbb.h Sat Dec 30 15:24:07 2006 +@@ -46,11 +46,13 @@ + #ifdef CONFIG_LOCALE_SUPPORT + #include + #else +-#define setlocale(x,y) ++#define setlocale(x,y) ((void)0) + #endif #include "pwd_.h" #include "grp_.h" --#if ENABLE_FEATURE_SHADOWPASSWDS ++/* ifdef it out, because it may include */ ++/* and we may not even _have_ ! */ + #if ENABLE_FEATURE_SHADOWPASSWDS #include "shadow_.h" --#endif - - /* Try to pull in PATH_MAX */ + #endif +@@ -59,7 +61,7 @@ #include + #include + #ifndef PATH_MAX +-#define PATH_MAX 256 ++#define PATH_MAX 256 + #endif + + /* Tested to work correctly (IIRC :]) */ +--- busybox-1.3.1/libpwdgrp/pwd_grp.c Wed Dec 27 05:56:32 2006 ++++ busybox-1.3.1.shadow/libpwdgrp/pwd_grp.c Sat Dec 30 15:24:07 2006 +@@ -52,7 +52,9 @@ + + extern int __parsepwent(void *pw, char *line); + extern int __parsegrent(void *gr, char *line); ++#if ENABLE_USE_BB_SHADOW + extern int __parsespent(void *sp, char *line); ++#endif + + extern int __pgsreader(int (*__parserfunc)(void *d, char *line), void *data, + char *__restrict line_buff, size_t buflen, FILE *f); +@@ -103,6 +105,7 @@ + return rv; + } + ++#if ENABLE_USE_BB_SHADOW + int fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf, + char *__restrict buffer, size_t buflen, + struct spwd **__restrict result) +@@ -117,6 +120,7 @@ + + return rv; + } ++#endif + + /**********************************************************************/ + /* For the various fget??ent funcs, return NULL on failure and a +@@ -144,6 +148,7 @@ + return result; + } + ++#if ENABLE_USE_BB_SHADOW + extern int fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf, + char *__restrict buffer, size_t buflen, + struct spwd **__restrict result); +@@ -184,6 +189,7 @@ + DONE: + return rv; + } ++#endif + + /**********************************************************************/ + +@@ -207,6 +213,7 @@ + #define DO_GETXXKEY_R_PATHNAME _PATH_GROUP + #include "pwd_grp_internal.c" + ++#if ENABLE_USE_BB_SHADOW + #define GETXXKEY_R_FUNC getspnam_R + #define GETXXKEY_R_PARSER __parsespent + #define GETXXKEY_R_ENTTYPE struct spwd +@@ -214,6 +221,7 @@ + #define DO_GETXXKEY_R_KEYTYPE const char *__restrict + #define DO_GETXXKEY_R_PATHNAME _PATH_SHADOW + #include "pwd_grp_internal.c" ++#endif + + #define GETXXKEY_R_FUNC getpwuid_R + #define GETXXKEY_R_PARSER __parsepwent +@@ -253,6 +261,7 @@ + return result; + } + ++#if 0 //ENABLE_USE_BB_SHADOW + /* This function is non-standard and is currently not built. It seems + * to have been created as a reentrant version of the non-standard + * functions getspuid. Why getspuid was added, I do not know. */ +@@ -286,6 +295,7 @@ + getspuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result); + return result; + } ++#endif + + struct passwd *getpwnam(const char *name) + { +@@ -307,6 +317,7 @@ + return result; + } + ++#if ENABLE_USE_BB_SHADOW + struct spwd *getspnam(const char *name) + { + static char buffer[PWD_BUFFER_SIZE]; +@@ -316,6 +327,7 @@ + getspnam_r(name, &resultbuf, buffer, sizeof(buffer), &result); + return result; + } ++#endif + + int getpw(uid_t uid, char *buf) + { +@@ -444,6 +456,7 @@ + return rv; + } + ++#if ENABLE_USE_BB_SHADOW + static FILE *spf /*= NULL*/; + void setspent(void) + { +@@ -488,6 +501,7 @@ + UNLOCK; + return rv; + } ++#endif + + struct passwd *getpwent(void) + { +@@ -509,6 +523,7 @@ + return result; + } + ++#if ENABLE_USE_BB_SHADOW + struct spwd *getspent(void) + { + static char line_buff[PWD_BUFFER_SIZE]; +@@ -528,6 +543,7 @@ + sgetspent_r(string, &spwd, line_buff, sizeof(line_buff), &result); + return result; + } ++#endif + + int initgroups(const char *user, gid_t gid) + { +@@ -643,6 +659,7 @@ + return rv; + } + ++#if ENABLE_USE_BB_SHADOW + static const unsigned char _sp_off[] = { + offsetof(struct spwd, sp_lstchg), /* 2 - not a char ptr */ + offsetof(struct spwd, sp_min), /* 3 - not a char ptr */ +@@ -688,6 +705,7 @@ + DO_UNLOCK: + return rv; + } ++#endif + + /**********************************************************************/ + /* Internal uClibc functions. */ +@@ -846,6 +864,7 @@ + + /**********************************************************************/ + ++#if ENABLE_USE_BB_SHADOW + static const unsigned char sp_off[] = { + offsetof(struct spwd, sp_namp), /* 0 */ + offsetof(struct spwd, sp_pwdp), /* 1 */ +@@ -900,6 +919,7 @@ + + return EINVAL; + } ++#endif + + /**********************************************************************/ + +--- busybox-1.3.1/loginutils/passwd.c Wed Dec 27 05:56:20 2006 ++++ busybox-1.3.1.shadow/loginutils/passwd.c Sat Dec 30 15:24:07 2006 +@@ -275,7 +275,8 @@ + } + + filename = bb_path_passwd_file; +- if (ENABLE_FEATURE_SHADOWPASSWDS) { ++#if ENABLE_FEATURE_SHADOWPASSWDS ++ { + struct spwd *sp = getspnam(name); + if (!sp) { + /* LOGMODE_BOTH */ +@@ -287,6 +288,7 @@ + pw->pw_passwd = sp->sp_pwdp; + } + } ++#endif + + /* Decide what the new password will be */ + newp = NULL; +--- busybox-1.3.1/loginutils/sulogin.c Wed Dec 27 05:56:20 2006 ++++ busybox-1.3.1.shadow/loginutils/sulogin.c Sat Dec 30 15:24:07 2006 +@@ -41,7 +41,6 @@ + char *timeout_arg; + const char * const *p; + struct passwd *pwd; +- struct spwd *spwd; + const char *shell; + + logmode = LOGMODE_BOTH; +@@ -75,13 +74,15 @@ + goto auth_error; + } + +- if (ENABLE_FEATURE_SHADOWPASSWDS) { +- spwd = getspnam(pwd->pw_name); ++#if ENABLE_FEATURE_SHADOWPASSWDS ++ { ++ struct spwd *spwd = getspnam(pwd->pw_name); + if (!spwd) { + goto auth_error; + } + pwd->pw_passwd = spwd->sp_pwdp; + } ++#endif + + while (1) { + /* cp points to a static buffer that is zeroed every time */ -- cgit v1.2.3