]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/, src/: Use strsep(3) instead of its pattern
authorAlejandro Colomar <alx@kernel.org>
Sun, 12 May 2024 23:02:59 +0000 (01:02 +0200)
committerSerge Hallyn <serge@hallyn.com>
Tue, 2 Jul 2024 02:40:11 +0000 (21:40 -0500)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/sgetspent.c
lib/shadow.c
src/chfn.c
src/gpasswd.c
src/newusers.c
src/useradd.c
src/usermod.c

index 1d4b6f105bb1235e043eabe9350f56d43b898bb8..ef86e8e20a7015dbe479c352f76f00117addb54f 100644 (file)
@@ -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
index 9b2a17df125ef9514c1afd108219524ace8ccfff..cb6c726ed62d56accb647f8ca8298967540c3ed2 100644 (file)
@@ -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;
 
        /*
index 3c182e63e6abb5a55464cb087c87071cf4dd7dc4..e78037d3657e581cc26e7a5d4a175493ac411ff5 100644 (file)
@@ -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;
 }
 
 /*
index 0f00118b02934b750b1ce26dd90803e49e058ee2..0dc3a5f206830c669bb51c0c793788bd5a92447f 100644 (file)
@@ -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;
                }
        }
index ad1723e54e28ad5c111fe30a80fc449549de370f..f2bd71c09d93f9205a3aee34577a8aaec8f1d98f 100644 (file)
@@ -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"),
index 4c233c41c1e56230e2451ab23ecbc4de765f2760..52aed3ee089700ab96fd0f27c7d8c3ecafe262d9 100644 (file)
@@ -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...
index 2cc35d7542c49688722d8a43765c6b247c44256c..f05d54334ea04fb1812d1ffb2cd024aa255f06ea 100644 (file)
@@ -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,