bool
is_valid_user_name(const char *name)
{
- if (strlen(name) >= login_name_max_size()) {
+ if (strlen(name) >= LOGIN_NAME_MAX) {
errno = EOVERFLOW;
return false;
}
#include <unistd.h>
-#ifndef LOGIN_NAME_MAX
-# define LOGIN_NAME_MAX 256
-#endif
-
#ifndef NGROUPS_MAX
# define NGROUPS_MAX 65536
#endif
-size_t
-login_name_max_size(void)
-{
- long conf;
-
- conf = sysconf(_SC_LOGIN_NAME_MAX);
- if (conf == -1)
- return LOGIN_NAME_MAX;
-
- return conf;
-}
-
size_t
ngroups_max_size(void)
{
#include "config.h"
+#include <limits.h>
#include <stddef.h>
-extern size_t login_name_max_size(void);
+#ifndef LOGIN_NAME_MAX
+# define LOGIN_NAME_MAX 256
+#endif
+
+
extern size_t ngroups_max_size(void);
#endif // include guard
#include <lastlog.h>
#endif /* ENABLE_LASTLOG */
#endif /* !USE_PAM */
+#include <limits.h>
#include <pwd.h>
#include <signal.h>
#include <stdio.h>
failed = false; /* haven't failed authentication yet */
if (NULL == username) { /* need to get a login id */
- size_t max_size;
-
- max_size = login_name_max_size();
if (subroot) {
closelog ();
exit (1);
}
preauth_flag = false;
- username = xmalloc_T(max_size, char);
- login_prompt(username, max_size);
+ username = xmalloc_T(LOGIN_NAME_MAX, char);
+ login_prompt(username, LOGIN_NAME_MAX);
if (streq(username, "")) {
/* Prompt for a new login */
*/
+#include <limits.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
static void
test_is_valid_user_name_long(MAYBE_UNUSED void ** _1)
{
- size_t max;
- char *name;
+ char *name;
- max = sysconf(_SC_LOGIN_NAME_MAX);
- name = malloc_T(max + 1, char);
+ name = malloc_T(LOGIN_NAME_MAX + 1, char);
assert_true(name != NULL);
- memset(name, '_', max);
+ memset(name, '_', LOGIN_NAME_MAX);
- stpcpy(&name[max], "");
+ stpcpy(&name[LOGIN_NAME_MAX], "");
assert_true(false == is_valid_user_name(name));
- stpcpy(&name[max - 1], "");
+ stpcpy(&name[LOGIN_NAME_MAX - 1], "");
assert_true(is_valid_user_name(name));
free(name);