mirror of
https://github.com/shadow-maint/shadow.git
synced 2024-11-27 03:53:59 +08:00
lib/, src/: Use strsep(3) instead of its pattern
Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
parent
8176e309ed
commit
16cb664865
@ -60,23 +60,14 @@ sgetspent(const char *string)
|
||||
* FIELDS different fields.
|
||||
*/
|
||||
|
||||
for (cp = spwbuf, i = 0; ('\0' != *cp) && (i < FIELDS); i++) {
|
||||
fields[i] = cp;
|
||||
cp = strchrnul(cp, ':');
|
||||
|
||||
if ('\0' != *cp) {
|
||||
*cp = '\0';
|
||||
cp++;
|
||||
}
|
||||
}
|
||||
for (cp = spwbuf, i = 0; cp != NULL && i < FIELDS; i++)
|
||||
fields[i] = strsep(&cp, ":");
|
||||
|
||||
if (i == (FIELDS - 1))
|
||||
fields[i++] = "";
|
||||
|
||||
if ( ((NULL != cp) && ('\0' != *cp)) ||
|
||||
((i != FIELDS) && (i != OFIELDS)) ) {
|
||||
if (cp != NULL || (i != FIELDS && i != OFIELDS))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Start populating the structure. The fields are all in
|
||||
|
10
lib/shadow.c
10
lib/shadow.c
@ -83,17 +83,13 @@ static struct spwd *my_sgetspent (const char *string)
|
||||
* FIELDS different fields.
|
||||
*/
|
||||
|
||||
for (cp = spwbuf, i = 0; *cp && i < FIELDS; i++) {
|
||||
fields[i] = cp;
|
||||
cp = strchrnul(cp, ':');
|
||||
if (*cp)
|
||||
*cp++ = '\0';
|
||||
}
|
||||
for (cp = spwbuf, i = 0; cp != NULL && i < FIELDS; i++)
|
||||
fields[i] = strsep(&cp, ":");
|
||||
|
||||
if (i == (FIELDS - 1))
|
||||
fields[i++] = empty;
|
||||
|
||||
if ((cp && *cp) || (i != FIELDS && i != OFIELDS))
|
||||
if (cp != NULL || (i != FIELDS && i != OFIELDS))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
17
src/chfn.c
17
src/chfn.c
@ -214,32 +214,27 @@ static void new_fields (void)
|
||||
*/
|
||||
static char *copy_field (char *in, char *out, char *extra)
|
||||
{
|
||||
char *cp = NULL;
|
||||
|
||||
while (NULL != in) {
|
||||
cp = strchr (in, ',');
|
||||
if (NULL != cp) {
|
||||
*cp++ = '\0';
|
||||
}
|
||||
char *f;
|
||||
|
||||
if (strchr (in, '=') == NULL) {
|
||||
f = strsep(&in, ",");
|
||||
|
||||
if (strchr(f, '=') == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
if (NULL != extra) {
|
||||
if ('\0' != extra[0]) {
|
||||
strcat (extra, ",");
|
||||
}
|
||||
|
||||
strcat (extra, in);
|
||||
strcat(extra, f);
|
||||
}
|
||||
in = cp;
|
||||
}
|
||||
if ((NULL != in) && (NULL != out)) {
|
||||
strcpy (out, in);
|
||||
}
|
||||
|
||||
return cp;
|
||||
return in;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -172,28 +172,22 @@ static void catch_signals (int killed)
|
||||
*/
|
||||
static bool is_valid_user_list (const char *users)
|
||||
{
|
||||
const char *username;
|
||||
char *end;
|
||||
bool is_valid = true;
|
||||
/*@owned@*/char *tmpusers = xstrdup (users);
|
||||
|
||||
for (username = tmpusers;
|
||||
(NULL != username) && ('\0' != *username);
|
||||
username = end) {
|
||||
end = strchr (username, ',');
|
||||
if (NULL != end) {
|
||||
*end = '\0';
|
||||
end++;
|
||||
}
|
||||
while (NULL != tmpusers && '\0' != *tmpusers) {
|
||||
const char *u;
|
||||
|
||||
u = strsep(&tmpusers, ",");
|
||||
|
||||
/*
|
||||
* This user must exist.
|
||||
*/
|
||||
|
||||
/* local, no need for xgetpwnam */
|
||||
if (getpwnam (username) == NULL) {
|
||||
if (getpwnam(u) == NULL) {
|
||||
fprintf (stderr, _("%s: user '%s' does not exist\n"),
|
||||
Prog, username);
|
||||
Prog, u);
|
||||
is_valid = false;
|
||||
}
|
||||
}
|
||||
|
@ -1116,13 +1116,9 @@ int main (int argc, char **argv)
|
||||
* values aren't that particular.
|
||||
*/
|
||||
for (cp = buf, nfields = 0; nfields < 7; nfields++) {
|
||||
fields[nfields] = cp;
|
||||
cp = strchr (cp, ':');
|
||||
fields[nfields] = strsep(&cp, ":");
|
||||
if (cp == NULL)
|
||||
break;
|
||||
|
||||
*cp = '\0';
|
||||
cp++;
|
||||
}
|
||||
if (nfields != 6) {
|
||||
fprintf (stderr, _("%s: line %d: invalid line\n"),
|
||||
|
@ -757,7 +757,6 @@ err_free_new:
|
||||
*/
|
||||
static int get_groups (char *list)
|
||||
{
|
||||
char *cp;
|
||||
struct group *grp;
|
||||
int errors = 0;
|
||||
int ngroups = 0;
|
||||
@ -777,19 +776,18 @@ static int get_groups (char *list)
|
||||
* values for group identifiers is permitted.
|
||||
*/
|
||||
do {
|
||||
char *g;
|
||||
|
||||
/*
|
||||
* Strip off a single name from the list
|
||||
*/
|
||||
cp = strchr (list, ',');
|
||||
if (NULL != cp) {
|
||||
*cp++ = '\0';
|
||||
}
|
||||
g = strsep(&list, ",");
|
||||
|
||||
/*
|
||||
* Names starting with digits are treated as numerical
|
||||
* GID values, otherwise the string is looked up as is.
|
||||
*/
|
||||
grp = get_local_group (list);
|
||||
grp = get_local_group(g);
|
||||
|
||||
/*
|
||||
* There must be a match, either by GID value or by
|
||||
@ -800,10 +798,9 @@ static int get_groups (char *list)
|
||||
if (NULL == grp) {
|
||||
fprintf (stderr,
|
||||
_("%s: group '%s' does not exist\n"),
|
||||
Prog, list);
|
||||
Prog, g);
|
||||
errors++;
|
||||
}
|
||||
list = cp;
|
||||
|
||||
/*
|
||||
* If the group doesn't exist, don't dump core...
|
||||
|
@ -214,7 +214,6 @@ extern int allow_bad_names;
|
||||
*/
|
||||
static int get_groups (char *list)
|
||||
{
|
||||
char *cp;
|
||||
struct group *grp;
|
||||
int errors = 0;
|
||||
int ngroups = 0;
|
||||
@ -234,20 +233,18 @@ static int get_groups (char *list)
|
||||
* group identifiers is permitted.
|
||||
*/
|
||||
do {
|
||||
char *g;
|
||||
|
||||
/*
|
||||
* Strip off a single name from the list
|
||||
*/
|
||||
cp = strchr (list, ',');
|
||||
if (NULL != cp) {
|
||||
*cp = '\0';
|
||||
cp++;
|
||||
}
|
||||
g = strsep(&list, ",");
|
||||
|
||||
/*
|
||||
* Names starting with digits are treated as numerical GID
|
||||
* values, otherwise the string is looked up as is.
|
||||
*/
|
||||
grp = prefix_getgr_nam_gid (list);
|
||||
grp = prefix_getgr_nam_gid(g);
|
||||
|
||||
/*
|
||||
* There must be a match, either by GID value or by
|
||||
@ -255,10 +252,9 @@ static int get_groups (char *list)
|
||||
*/
|
||||
if (NULL == grp) {
|
||||
fprintf (stderr, _("%s: group '%s' does not exist\n"),
|
||||
Prog, list);
|
||||
Prog, g);
|
||||
errors++;
|
||||
}
|
||||
list = cp;
|
||||
|
||||
/*
|
||||
* If the group doesn't exist, don't dump core. Instead,
|
||||
|
Loading…
Reference in New Issue
Block a user