aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-06-15 18:35:34 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-06-15 18:35:34 +0000
commitb4c5bf615e0cd0da41222b853627ce2c893cba5c (patch)
tree6a631fbd817d16dce6f0d16ed7381ee54cfd7b71
parent5703c22a51a154db17e6a7f6426a95232542cc9e (diff)
downloadbusybox-w32-b4c5bf615e0cd0da41222b853627ce2c893cba5c.tar.gz
busybox-w32-b4c5bf615e0cd0da41222b853627ce2c893cba5c.tar.bz2
busybox-w32-b4c5bf615e0cd0da41222b853627ce2c893cba5c.zip
Specially for Bernhard Fischer introduce USE_BB_CRYPT
which selects between libc/custom crypt routines.
-rw-r--r--include/libbb.h3
-rw-r--r--libbb/pw_encrypt.c17
-rw-r--r--loginutils/Config.in89
3 files changed, 75 insertions, 34 deletions
diff --git a/include/libbb.h b/include/libbb.h
index 655ca01a5..e92dbc4c0 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1032,6 +1032,9 @@ extern int restricted_shell(const char *shell);
1032extern void setup_environment(const char *shell, int clear_env, int change_env, const struct passwd *pw); 1032extern void setup_environment(const char *shell, int clear_env, int change_env, const struct passwd *pw);
1033extern int correct_password(const struct passwd *pw); 1033extern int correct_password(const struct passwd *pw);
1034/* Returns a malloced string */ 1034/* Returns a malloced string */
1035#if !ENABLE_USE_BB_CRYPT
1036#define pw_encrypt(clear, salt, cleanup) pw_encrypt(clear, salt)
1037#endif
1035extern char *pw_encrypt(const char *clear, const char *salt, int cleanup); 1038extern char *pw_encrypt(const char *clear, const char *salt, int cleanup);
1036extern int obscure(const char *old, const char *newval, const struct passwd *pwdp); 1039extern int obscure(const char *old, const char *newval, const struct passwd *pwdp);
1037/* rnd is additional random input. New one is returned. 1040/* rnd is additional random input. New one is returned.
diff --git a/libbb/pw_encrypt.c b/libbb/pw_encrypt.c
index 762cbab27..c1e927e23 100644
--- a/libbb/pw_encrypt.c
+++ b/libbb/pw_encrypt.c
@@ -9,6 +9,8 @@
9 9
10#include "libbb.h" 10#include "libbb.h"
11 11
12#if ENABLE_USE_BB_CRYPT
13
12/* 14/*
13 * DES and MD5 crypt implementations are taken from uclibc. 15 * DES and MD5 crypt implementations are taken from uclibc.
14 * They were modified to not use static buffers. 16 * They were modified to not use static buffers.
@@ -69,3 +71,18 @@ char *pw_encrypt(const char *clear, const char *salt, int cleanup)
69 71
70 return encrypted; 72 return encrypted;
71} 73}
74
75#else /* if !ENABLE_USE_BB_CRYPT */
76
77char *pw_encrypt(const char *clear, const char *salt, int cleanup)
78{
79#if 0 /* was CONFIG_FEATURE_SHA1_PASSWORDS, but there is no such thing??? */
80 if (strncmp(salt, "$2$", 3) == 0) {
81 return xstrdup(sha1_crypt(clear));
82 }
83#endif
84
85 return xstrdup(crypt(clear, salt));
86}
87
88#endif
diff --git a/loginutils/Config.in b/loginutils/Config.in
index c57d9976e..e39fb6f79 100644
--- a/loginutils/Config.in
+++ b/loginutils/Config.in
@@ -13,45 +13,67 @@ config FEATURE_SHADOWPASSWDS
13 readable by root and thus the encrypted passwords are no longer 13 readable by root and thus the encrypted passwords are no longer
14 publicly readable. 14 publicly readable.
15 15
16config USE_BB_PWD_GRP
17 bool "Use internal password and group functions rather than system functions"
18 default n
19 help
20 If you leave this disabled, busybox will use the system's password
21 and group functions. And if you are using the GNU C library
22 (glibc), you will then need to install the /etc/nsswitch.conf
23 configuration file and the required /lib/libnss_* libraries in
24 order for the password and group functions to work. This generally
25 makes your embedded system quite a bit larger.
26
27 Enabling this option will cause busybox to directly access the
28 system's /etc/password, /etc/group files (and your system will be
29 smaller, and I will get fewer emails asking about how glibc NSS
30 works). When this option is enabled, you will not be able to use
31 PAM to access remote LDAP password servers and whatnot. And if you
32 want hostname resolution to work with glibc, you still need the
33 /lib/libnss_* libraries.
34
35 If you need to use glibc's nsswitch.conf mechanism
36 (e.g. if user/group database is NOT stored in /etc/passwd etc),
37 you must NOT use this option.
38
39 If you enable this option, it will add about 1.5k to busybox.
40
16config USE_BB_SHADOW 41config USE_BB_SHADOW
17 bool "Use busybox shadow password functions" 42 bool "Use busybox shadow password functions"
18 default y 43 default y
19 depends on USE_BB_PWD_GRP && FEATURE_SHADOWPASSWDS 44 depends on USE_BB_PWD_GRP && FEATURE_SHADOWPASSWDS
20 help 45 help
21 If you leave this disabled, busybox will use the system's shadow 46 If you leave this disabled, busybox will use the system's shadow
22 password handling functions. And if you are using the GNU C library 47 password handling functions. And if you are using the GNU C library
23 (glibc), you will then need to install the /etc/nsswitch.conf 48 (glibc), you will then need to install the /etc/nsswitch.conf
24 configuration file and the required /lib/libnss_* libraries in 49 configuration file and the required /lib/libnss_* libraries in
25 order for the shadow password functions to work. This generally 50 order for the shadow password functions to work. This generally
26 makes your embedded system quite a bit larger. 51 makes your embedded system quite a bit larger.
27 52
28 Enabling this option will cause busybox to directly access the 53 Enabling this option will cause busybox to directly access the
29 system's /etc/shadow file when handling shadow passwords. This 54 system's /etc/shadow file when handling shadow passwords. This
30 makes your system smaller and I will get fewer emails asking about 55 makes your system smaller and I will get fewer emails asking about
31 how glibc NSS works). When this option is enabled, you will not be 56 how glibc NSS works). When this option is enabled, you will not be
32 able to use PAM to access shadow passwords from remote LDAP 57 able to use PAM to access shadow passwords from remote LDAP
33 password servers and whatnot. 58 password servers and whatnot.
34 59
35config USE_BB_PWD_GRP 60config USE_BB_CRYPT
36 bool "Use internal password and group functions rather than system functions" 61 bool "Use internal DES and MD5 crypt functions rather than system functions"
37 default n 62 default y
38 help 63 help
39 If you leave this disabled, busybox will use the system's password 64 If you leave this disabled, busybox will use the system's password
40 and group functions. And if you are using the GNU C library 65 and group functions. Most C libraries use large (~70k)
41 (glibc), you will then need to install the /etc/nsswitch.conf 66 static buffers in these functions, and also combine them
42 configuration file and the required /lib/libnss_* libraries in 67 with more general DES encryption/decryption routines.
43 order for the password and group functions to work. This generally 68 For busybox, having large static buffers is undesirable,
44 makes your embedded system quite a bit larger. 69 especially so on NOMMU machines.
45 70
46 Enabling this option will cause busybox to directly access the 71 These functions produce results which are identical
47 system's /etc/password, /etc/group files (and your system will be 72 to corresponding C library functions.
48 smaller, and I will get fewer emails asking about how glibc NSS 73
49 works). When this option is enabled, you will not be able to use 74 If you enable this option, it will add about 4.8k to busybox
50 PAM to access remote LDAP password servers and whatnot. And if you 75 if you are building dynamically linked executable.
51 want hostname resolution to work with glibc, you still need the 76 In static build, it makes executable _smaller_ by about 1.2k.
52 /lib/libnss_* libraries.
53
54 If you enable this option, it will add about 1.5k to busybox.
55 77
56config ADDGROUP 78config ADDGROUP
57 bool "addgroup" 79 bool "addgroup"
@@ -255,4 +277,3 @@ config VLOCK
255 work properly. 277 work properly.
256 278
257endmenu 279endmenu
258