[Pkg-shadow-commits] r1978 - in upstream/trunk: . libmisc man src
nekral-guest at alioth.debian.org
nekral-guest at alioth.debian.org
Sun Apr 27 00:24:51 UTC 2008
Author: nekral-guest
Date: 2008-04-27 00:24:49 +0000 (Sun, 27 Apr 2008)
New Revision: 1978
Modified:
upstream/trunk/ChangeLog
upstream/trunk/NEWS
upstream/trunk/libmisc/fields.c
upstream/trunk/man/chfn.1.xml
upstream/trunk/src/chfn.c
Log:
Allow non-US-ASCII characters in the GECOS fields ("name", "room number",
and "other info" fields).
Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog 2008-04-22 20:54:58 UTC (rev 1977)
+++ upstream/trunk/ChangeLog 2008-04-27 00:24:49 UTC (rev 1978)
@@ -1,3 +1,9 @@
+2008-04-27 Nicolas François <nicolas.francois at centraliens.net>
+
+ * NEWS, libmisc/fields.c, src/chfn.c, man/chfn.1.xml: Allow
+ non-US-ASCII characters in the GECOS fields ("name", "room
+ number", and "other info" fields).
+
2008-04-17 Nicolas François <nicolas.francois at centraliens.net>
* NEWS, src/newgrp.c: Fix compilation failure when compiled with
Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS 2008-04-22 20:54:58 UTC (rev 1977)
+++ upstream/trunk/NEWS 2008-04-27 00:24:49 UTC (rev 1978)
@@ -9,6 +9,9 @@
file; and fail if the feature is requested but not present on the
system.
* Fix build failure when configured with audit support.
+- chfn
+ * Allow non-US-ASCII characters in the GECOS fields ("name", "room
+ number", and "other info" fields).
shadow-4.1.0 -> shadow-4.1.1 02-04-2008
Modified: upstream/trunk/libmisc/fields.c
===================================================================
--- upstream/trunk/libmisc/fields.c 2008-04-22 20:54:58 UTC (rev 1977)
+++ upstream/trunk/libmisc/fields.c 2008-04-27 00:24:49 UTC (rev 1978)
@@ -38,21 +38,31 @@
/*
* valid_field - insure that a field contains all legal characters
*
- * The supplied field is scanned for non-printing and other illegal
- * characters. If any illegal characters are found, valid_field
- * returns -1. Zero is returned for success.
+ * 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.
+ * + 0 is returned otherwise.
*/
int valid_field (const char *field, const char *illegal)
{
const char *cp;
+ int err = 0;
- for (cp = field;
- *cp && isprint (*cp & 0x7F) && !strchr (illegal, *cp); cp++);
+ for (cp = field; *cp && !strchr (illegal, *cp); cp++);
- if (*cp)
- return -1;
- else
- return 0;
+ if (*cp) {
+ err = -1;
+ } else {
+ for (cp = field; *cp && isprint (*cp); cp++);
+
+ if (*cp) {
+ err = 1;
+ }
+ }
+
+ return err;
}
/*
Modified: upstream/trunk/man/chfn.1.xml
===================================================================
--- upstream/trunk/man/chfn.1.xml 2008-04-22 20:54:58 UTC (rev 1977)
+++ upstream/trunk/man/chfn.1.xml 2008-04-27 00:24:49 UTC (rev 1978)
@@ -46,14 +46,17 @@
GECOS field.
</para>
- <para>The only restriction placed on the contents of the fields is that
- no control characters may be present, nor any of comma, colon, or
- equal sign. The <emphasis remap='I'>other</emphasis> field does not
- have this restriction, and is used to store accounting information
- used by other applications.
+ <para>
+ These fields must not contain any colons. Except for the
+ <emphasis remap='I'>other</emphasis> field, they should not contain
+ any comma or equal sign. It is also recommended to avoid
+ non-US-ASCII characters, but this is only enforced for the phone
+ numbers. The <emphasis remap='I'>other</emphasis> field is used to
+ store accounting information used by other applications.
</para>
- <para> If none of the options are selected, <command>chfn</command>
+ <para>
+ If none of the options are selected, <command>chfn</command>
operates in an interactive fashion, prompting the user with the
current values for all of the fields. Enter the new value to change
the field, or leave the line blank to use the current value. The
Modified: upstream/trunk/src/chfn.c
===================================================================
--- upstream/trunk/src/chfn.c 2008-04-22 20:54:58 UTC (rev 1977)
+++ upstream/trunk/src/chfn.c 2008-04-27 00:24:49 UTC (rev 1978)
@@ -536,12 +536,19 @@
*/
static void check_fields (void)
{
- if (valid_field (fullnm, ":,=")) {
+ int err;
+ err = valid_field (fullnm, ":,=");
+ if (err > 0) {
+ fprintf (stderr, _("%s: name with non-ASCII characters: '%s'\n"), Prog, fullnm);
+ } else if (err < 0) {
fprintf (stderr, _("%s: invalid name: '%s'\n"), Prog, fullnm);
closelog ();
exit (E_NOPERM);
}
- if (valid_field (roomno, ":,=")) {
+ err = valid_field (roomno, ":,=");
+ if (err > 0) {
+ fprintf (stderr, _("%s: room number with non-ASCII characters: '%s'\n"), Prog, roomno);
+ } else if (err < 0) {
fprintf (stderr, _("%s: invalid room number: '%s'\n"),
Prog, roomno);
closelog ();
@@ -559,7 +566,10 @@
closelog ();
exit (E_NOPERM);
}
- if (valid_field (slop, ":")) {
+ err = valid_field (slop, ":");
+ if (err > 0) {
+ fprintf (stderr, _("%s: '%s' contains non-ASCII characters\n"), Prog, slop);
+ } else if (err < 0) {
fprintf (stderr,
_("%s: '%s' contains illegal characters\n"),
Prog, slop);
More information about the Pkg-shadow-commits
mailing list