]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
Added control character check
authortomspiderlabs <128755403+tomspiderlabs@users.noreply.github.com>
Thu, 23 Mar 2023 23:39:38 +0000 (23:39 +0000)
committerSerge Hallyn <serge@hallyn.com>
Fri, 31 Mar 2023 00:23:00 +0000 (19:23 -0500)
Added control character check, returning -1 (to "err") if control characters are present.

lib/fields.c

index 640be931f3b000e063f270ed31f0baa96270df6b..fb51b5829a31f690bc29cca0889e3abfbc0c8628 100644 (file)
@@ -21,9 +21,9 @@
  *
  * The supplied field is scanned for non-printable and other illegal
  * characters.
- *  + -1 is returned if an illegal character is present.
- *  +  1 is returned if no illegal characters are present, but the field
- *       contains a non-printable character.
+ *  + -1 is returned if an illegal or control character is present.
+ *  +  1 is returned if no illegal or control characters are present,
+ *       but the field contains a non-printable character.
  *  +  0 is returned otherwise.
  */
 int valid_field (const char *field, const char *illegal)
@@ -45,10 +45,13 @@ int valid_field (const char *field, const char *illegal)
        }
 
        if (0 == err) {
-               /* Search if there are some non-printable characters */
+               /* Search if there are non-printable or control characters */
                for (cp = field; '\0' != *cp; cp++) {
                        if (!isprint (*cp)) {
                                err = 1;
+                       }
+                       if (!iscntrl (*cp)) {
+                               err = -1;
                                break;
                        }
                }