Print this page
2989 Eliminate use of LOGNAME_MAX in ON
1166 useradd have warning with name more 8 chars

@@ -17,20 +17,20 @@
  * information: Portions Copyright [yyyy] [name of copyright owner]
  *
  * CDDL HEADER END
  */
 /*
+ * Copyright (c) 2013 Gary Mills
+ *
  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
 /*        All Rights Reserved   */
 
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/signal.h>
 #include <sys/sysmacros.h>
 #include <sys/stat.h>

@@ -39,11 +39,18 @@
 #include <string.h>
 #include <ctype.h>
 #include <locale.h>
 #include <errno.h>
 #include <unistd.h>
+#include <limits.h>
 
+#ifdef  LOGNAME_MAX_ILLUMOS
+#define _LOGNAME_MAX    LOGNAME_MAX_ILLUMOS
+#else /* LOGNAME_MAX_ILLUMOS */
+#define _LOGNAME_MAX    LOGNAME_MAX
+#endif /* LOGNAME_MAX_ILLUMOS */
+
 #define ERROR1  "Too many/few fields"
 #define ERROR2  "Bad character(s) in logname"
 #define ERROR2a "First char in logname not alphabetic"
 #define ERROR2b "Logname field NULL"
 #define ERROR2c "Logname contains no lower-case letters"

@@ -161,11 +168,11 @@
                 if (badc > 0)
                         error(ERROR2);
 
                 /* Check for valid number of characters in logname */
 
-                if (i <= 0 || i > 8)
+                if (i <= 0 || i > _LOGNAME_MAX)
                         error(ERROR3);
 
                 /* Check that UID is numeric and <= MAXUID */
 
                 errno = 0;