* return values:
* true - OK
* false - bad name
+ * errors:
+ * EINVAL Invalid name characters or sequences
+ * EOVERFLOW Name longer than maximum size
*/
}
-static bool is_valid_name (const char *name)
+static bool
+is_valid_name(const char *name)
{
if (allow_bad_names) {
return true;
(*name >= 'A' && *name <= 'Z') ||
(*name >= '0' && *name <= '9') ||
*name == '_' ||
- *name == '.')) {
+ *name == '.'))
+ {
+ errno = EINVAL;
return false;
}
*name == '.' ||
*name == '-' ||
(*name == '$' && name[1] == '\0')
- )) {
+ ))
+ {
+ errno = EINVAL;
return false;
}
numeric &= isdigit(*name);
}
- return !numeric;
+ if (numeric) {
+ errno = EINVAL;
+ return false;
+ }
+
+ return true;
}
bool
is_valid_user_name(const char *name)
{
- if (strlen(name) >= login_name_max_size())
+ if (strlen(name) >= login_name_max_size()) {
+ errno = EOVERFLOW;
return false;
+ }
return is_valid_name(name);
}
-bool is_valid_group_name (const char *name)
+bool
+is_valid_group_name(const char *name)
{
/*
* Arbitrary limit for group names.
* HP-UX 10 limits to 16 characters
*/
if ( (GROUP_NAME_MAX_LENGTH > 0)
- && (strlen (name) > GROUP_NAME_MAX_LENGTH)) {
+ && (strlen (name) > GROUP_NAME_MAX_LENGTH))
+ {
+ errno = EOVERFLOW;
return false;
}