aboutsummaryrefslogtreecommitdiff
path: root/libbb/update_passwd.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/update_passwd.c')
-rw-r--r--libbb/update_passwd.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/libbb/update_passwd.c b/libbb/update_passwd.c
index dc26ebd1d..a2004f480 100644
--- a/libbb/update_passwd.c
+++ b/libbb/update_passwd.c
@@ -84,7 +84,6 @@ int FAST_FUNC update_passwd(const char *filename,
84 char *fnamesfx; 84 char *fnamesfx;
85 char *sfx_char; 85 char *sfx_char;
86 char *name_colon; 86 char *name_colon;
87 unsigned user_len;
88 int old_fd; 87 int old_fd;
89 int new_fd; 88 int new_fd;
90 int i; 89 int i;
@@ -108,7 +107,6 @@ int FAST_FUNC update_passwd(const char *filename,
108 fnamesfx = xasprintf("%s+", filename); 107 fnamesfx = xasprintf("%s+", filename);
109 sfx_char = &fnamesfx[strlen(fnamesfx)-1]; 108 sfx_char = &fnamesfx[strlen(fnamesfx)-1];
110 name_colon = xasprintf("%s:", name ? name : ""); 109 name_colon = xasprintf("%s:", name ? name : "");
111 user_len = strlen(name_colon);
112 110
113 if (shadow) 111 if (shadow)
114 old_fp = fopen(filename, "r+"); 112 old_fp = fopen(filename, "r+");
@@ -179,7 +177,7 @@ int FAST_FUNC update_passwd(const char *filename,
179 while (list) { 177 while (list) {
180 list++; 178 list++;
181 next_list_element: 179 next_list_element:
182 if (strncmp(list, member, member_len) == 0) { 180 if (is_prefixed_with(list, member)) {
183 char c; 181 char c;
184 changed_lines++; 182 changed_lines++;
185 c = list[member_len]; 183 c = list[member_len];
@@ -201,13 +199,14 @@ int FAST_FUNC update_passwd(const char *filename,
201 goto next; 199 goto next;
202 } 200 }
203 201
204 if (strncmp(name_colon, line, user_len) != 0) { 202 cp = is_prefixed_with(line, name_colon);
203 if (!cp) {
205 fprintf(new_fp, "%s\n", line); 204 fprintf(new_fp, "%s\n", line);
206 goto next; 205 goto next;
207 } 206 }
208 207
209 /* We have a match with "name:"... */ 208 /* We have a match with "name:"... */
210 cp = line + user_len; /* move past name: */ 209 /* cp points past "name:" */
211 210
212#if ENABLE_FEATURE_ADDUSER_TO_GROUP || ENABLE_FEATURE_DEL_USER_FROM_GROUP 211#if ENABLE_FEATURE_ADDUSER_TO_GROUP || ENABLE_FEATURE_DEL_USER_FROM_GROUP
213 if (member) { 212 if (member) {