Don't let the C library depend on <utmp.h>.
The maximum length of a username has nothing to do with the size of the username in the utmp files. Use MAXLOGNAME, which is defined as 17 (UT_USERSIZE + 1).
This commit is contained in:
parent
bbbe3054ff
commit
dc29acd1a9
@ -36,7 +36,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/param.h>
|
||||
#include <errno.h>
|
||||
#include <pwd.h>
|
||||
#include <utmp.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
@ -33,13 +33,13 @@ static char sccsid[] = "@(#)pwcache.c 8.1 (Berkeley) 6/4/93";
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <utmp.h>
|
||||
|
||||
#define NCACHE 64 /* power of 2 */
|
||||
#define MASK (NCACHE - 1) /* bits to store with */
|
||||
@ -50,7 +50,7 @@ user_from_uid(uid_t uid, int nouser)
|
||||
static struct ncache {
|
||||
uid_t uid;
|
||||
int found;
|
||||
char name[UT_NAMESIZE + 1];
|
||||
char name[MAXLOGNAME];
|
||||
} c_uid[NCACHE];
|
||||
static int pwopen;
|
||||
struct passwd *pw;
|
||||
@ -66,11 +66,11 @@ user_from_uid(uid_t uid, int nouser)
|
||||
cp->uid = uid;
|
||||
if (pw != NULL) {
|
||||
cp->found = 1;
|
||||
(void)strncpy(cp->name, pw->pw_name, UT_NAMESIZE);
|
||||
cp->name[UT_NAMESIZE] = '\0';
|
||||
(void)strncpy(cp->name, pw->pw_name, MAXLOGNAME - 1);
|
||||
cp->name[MAXLOGNAME - 1] = '\0';
|
||||
} else {
|
||||
cp->found = 0;
|
||||
(void)snprintf(cp->name, UT_NAMESIZE, "%u", uid);
|
||||
(void)snprintf(cp->name, MAXLOGNAME - 1, "%u", uid);
|
||||
if (nouser)
|
||||
return (NULL);
|
||||
}
|
||||
@ -84,7 +84,7 @@ group_from_gid(gid_t gid, int nogroup)
|
||||
static struct ncache {
|
||||
gid_t gid;
|
||||
int found;
|
||||
char name[UT_NAMESIZE + 1];
|
||||
char name[MAXLOGNAME];
|
||||
} c_gid[NCACHE];
|
||||
static int gropen;
|
||||
struct group *gr;
|
||||
@ -100,11 +100,11 @@ group_from_gid(gid_t gid, int nogroup)
|
||||
cp->gid = gid;
|
||||
if (gr != NULL) {
|
||||
cp->found = 1;
|
||||
(void)strncpy(cp->name, gr->gr_name, UT_NAMESIZE);
|
||||
cp->name[UT_NAMESIZE] = '\0';
|
||||
(void)strncpy(cp->name, gr->gr_name, MAXLOGNAME - 1);
|
||||
cp->name[MAXLOGNAME - 1] = '\0';
|
||||
} else {
|
||||
cp->found = 0;
|
||||
(void)snprintf(cp->name, UT_NAMESIZE, "%u", gid);
|
||||
(void)snprintf(cp->name, MAXLOGNAME - 1, "%u", gid);
|
||||
if (nogroup)
|
||||
return (NULL);
|
||||
}
|
||||
|
@ -39,7 +39,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <utmp.h>
|
||||
|
||||
#include "acl_support.h"
|
||||
|
||||
@ -58,7 +57,7 @@ _posix1e_acl_to_text(acl_t acl, ssize_t *len_p, int flags)
|
||||
{
|
||||
struct acl *acl_int;
|
||||
char *buf, *tmpbuf;
|
||||
char name_buf[UT_NAMESIZE+1];
|
||||
char name_buf[MAXLOGNAME];
|
||||
char perm_buf[_POSIX1E_ACL_STRING_PERM_MAXSIZE+1],
|
||||
effective_perm_buf[_POSIX1E_ACL_STRING_PERM_MAXSIZE+1];
|
||||
int i, error, len;
|
||||
@ -103,7 +102,7 @@ _posix1e_acl_to_text(acl_t acl, ssize_t *len_p, int flags)
|
||||
goto error_label;
|
||||
|
||||
error = _posix1e_acl_id_to_name(ae_tag, ae_id,
|
||||
UT_NAMESIZE+1, name_buf, flags);
|
||||
MAXLOGNAME, name_buf, flags);
|
||||
if (error)
|
||||
goto error_label;
|
||||
|
||||
@ -163,7 +162,7 @@ _posix1e_acl_to_text(acl_t acl, ssize_t *len_p, int flags)
|
||||
goto error_label;
|
||||
|
||||
error = _posix1e_acl_id_to_name(ae_tag, ae_id,
|
||||
UT_NAMESIZE+1, name_buf, flags);
|
||||
MAXLOGNAME, name_buf, flags);
|
||||
if (error)
|
||||
goto error_label;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user