diff options
Diffstat (limited to 'libbb/update_passwd.c')
-rw-r--r-- | libbb/update_passwd.c | 9 |
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) { |