]> git.pld-linux.org Git - packages/busybox.git/blame - busybox-1.19.2-chpasswd.patch
- rel 2; fix build with external printf (like on mksh)
[packages/busybox.git] / busybox-1.19.2-chpasswd.patch
CommitLineData
f4ee1357
AM
1--- busybox-1.19.2/loginutils/chpasswd.c
2+++ busybox-1.19.2-chpasswd/loginutils/chpasswd.c
3@@ -33,9 +33,8 @@ static const char chpasswd_longopts[] AL
4 int chpasswd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
5 int chpasswd_main(int argc UNUSED_PARAM, char **argv)
6 {
7- char *name, *pass;
8- char salt[sizeof("$N$XXXXXXXX")];
9- int opt, rc;
10+ char *name;
11+ int opt;
12
13 if (getuid() != 0)
14 bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
15@@ -45,6 +44,10 @@ int chpasswd_main(int argc UNUSED_PARAM,
16 opt = getopt32(argv, "em");
17
18 while ((name = xmalloc_fgetline(stdin)) != NULL) {
19+ char *free_me;
20+ char *pass;
21+ int rc;
22+
23 pass = strchr(name, ':');
24 if (!pass)
25 bb_error_msg_and_die("missing new password");
26@@ -52,7 +55,10 @@ int chpasswd_main(int argc UNUSED_PARAM,
27
28 xuname2uid(name); /* dies if there is no such user */
29
30+ free_me = NULL;
31 if (!(opt & OPT_ENC)) {
32+ char salt[sizeof("$N$XXXXXXXX")];
33+
34 crypt_make_salt(salt, 1);
35 if (opt & OPT_MD5) {
36 salt[0] = '$';
37@@ -60,7 +66,7 @@ int chpasswd_main(int argc UNUSED_PARAM,
38 salt[2] = '$';
39 crypt_make_salt(salt + 3, 4);
40 }
41- pass = pw_encrypt(pass, salt, 0);
42+ free_me = pass = pw_encrypt(pass, salt, 0);
43 }
44
45 /* This is rather complex: if user is not found in /etc/shadow,
46@@ -81,8 +87,7 @@ int chpasswd_main(int argc UNUSED_PARAM,
47 bb_info_msg("Password for '%s' changed", name);
48 logmode = LOGMODE_STDIO;
49 free(name);
50- if (!(opt & OPT_ENC))
51- free(pass);
52+ free(free_me);
53 }
54 return EXIT_SUCCESS;
55 }
This page took 0.061928 seconds and 4 git commands to generate.